یہ حکمت عملی متحرک اوسط ، حجم کے اشارے اور قیمتوں کی رفتار کے اشارے کو یکجا کرتی ہے تاکہ ذخائر کو جمع کرنے کے مرحلے میں داخل ہونے کے وقت کی نشاندہی کرنے کے لئے مقداری قواعد کا ایک مجموعہ تیار کیا جاسکے۔ اس مرحلے میں ، اسٹاک عام طور پر قیمتوں کی استحکام اور اسٹوریج کی حالت میں ہوتے ہیں ، جس سے کم قیمتوں کا اچھا موقع ملتا ہے۔
یہ حکمت عملی قیمت کے رجحانات کا تعین کرنے کے لئے 50 دن ، 90 دن اور 200 دن کی سادہ چلتی اوسط استعمال کرتی ہے۔ خریدنے کے سگنل صرف اس وقت پیدا ہوتے ہیں جب قیمتیں 200 دن کی لائن سے اوپر ہوتی ہیں۔ اس سے بڑے نیچے کے رجحانات کی غیر یقینی صورتحال کو فلٹر کیا جاتا ہے۔
اہم رجحان کا جائزہ لینے کے علاوہ ، حکمت عملی رجحان کی تصدیق کے لئے قلیل مدتی چلتی اوسط کی ترتیب کا بھی جائزہ لیتی ہے۔ خاص طور پر ، یہ جائزہ لیتا ہے کہ آیا 50 دن کی لائن 90 دن کی لائن سے اوپر ہے۔
اس بنیاد پر کہ چلتی اوسط اہم اور قلیل مدتی رجحانات کی تصدیق کرتی ہے ، حکمت عملی میں جمع ہونے کی خصوصیات کا فیصلہ کرنے کے لئے پی وی ٹی حجم اشارے اور ایم اے سی ڈی اشارے کو جوڑ دیا گیا ہے۔ خریدنے کے سگنل صرف اس وقت پیدا ہوتے ہیں جب پی وی ٹی اوپر کی طرف ٹوٹ جاتا ہے ، ایم اے سی ڈی لائن سگنل لائن سے زیادہ ہوتی ہے ، اور حجم میں توسیع ہوتی ہے۔
اس حکمت عملی میں صرف حرکت پذیر اوسط کے مقابلے میں حجم کی خصوصیات کی بھی جانچ پڑتال کی جاتی ہے جبکہ رجحان کی تصدیق ہوتی ہے۔ اس سے ذخائر کے جمع ہونے کے مرحلے میں داخل ہونے کا وقت زیادہ درست طریقے سے طے کیا جاسکتا ہے ، اس طرح بہتر داخلے کی قیمتوں کو یقینی بنایا جاسکتا ہے۔
متعدد ٹائم فریموں کا تجزیہ کرکے ، یہ حکمت عملی ٹائم فریموں سے ملنے کے لئے درمیانی اور طویل مدتی رجحانات کے فیصلوں اور قلیل مدتی خصوصیت کے فیصلوں کو جوڑتی ہے ، جو ایک ہی ٹائم فریم کو غلط انداز میں فیصلہ کرنے سے غیر یقینی صورتحال کو کم کرسکتی ہے۔
یہ حکمت عملی بنیادی طور پر چلتی اوسط فیصلوں پر انحصار کرتی ہے۔ جب قیمتیں شدت سے اتار چڑھاؤ کرتی ہیں تو ، چلتی اوسط فیصلے ناکام ہوجاتے ہیں۔ اس وقت ، پوزیشن کا سائز کم کیا جانا چاہئے یا اسٹاپ نقصان سے باہر نکلنا چاہئے۔
اس کے علاوہ ، جمع ہونے کے مرحلے پر غلط تشخیص ممکن ہے ، اس طرح الٹ جانے کے مواقع سے محروم ہوجاتا ہے۔ اس کے لئے فیصلوں کی تصدیق کے لئے مزید خصوصیت کے اشارے کا مشاہدہ کرنا ضروری ہے۔
مشین لرننگ الگورتھم کو اس حکمت عملی میں شامل کیا جاسکتا ہے تاکہ خصوصیات اور ماڈل ٹریننگ کو نکال کر جمع کرنے کے مرحلے کا خودکار فیصلہ حاصل کیا جاسکے۔ اس سے دستی طور پر حد مقرر کرنے کی حدود کو کم کیا جاسکتا ہے۔
اس کے علاوہ، اس حکمت عملی کو مختلف مارکیٹ کے ماحول کے تحت پیرامیٹرز کو خود بخود سوئچ کرنے کے لئے وقفے کی فعالیت کو بھی آزما سکتا ہے، حکمت عملی کو زیادہ مضبوط بناتا ہے.
خلاصہ یہ ہے کہ ، یہ حکمت عملی عام طور پر اسٹاک جمع کرنے کے مراحل کی خصوصیات کا فیصلہ کرنے کے لئے قیمتوں اور حجم کو مماثل کرنے کے خیال کو اپناتی ہے۔ جبکہ اہم سمت کی تصدیق کرتے ہوئے ، یہ قلیل مدتی جمع کرنے کے مواقع کھودتا ہے۔ پیرامیٹر کی اصلاح اور مشین لرننگ متعارف کرانے سے حکمت عملی کی کارکردگی میں مزید بہتری کے لئے ابھی بھی گنجائش ہے۔
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © stocktechbot //@version=5 strategy("Accumulate", overlay = true) lookback = input(defval = 21, title = 'Lookback') offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) //SMA Tredline out = ta.sma(close, 200) outf = ta.sma(close, 50) outn = ta.sma(close, 90) outt = ta.sma(close, 21) //sma plot plot(out, color=color.blue, title="MA200", offset=offset) plot(outf, color=color.maroon, title="MA50", offset=offset) plot(outn, color=color.orange, title="MA90", offset=offset) plot(outt, color=color.olive, title="MA21", offset=offset) //MarketCap Calculation //MarketCap = 0.0 //TSO = request.financial(syminfo.tickerid, "TOTAL_SHARES_OUTSTANDING", "FQ", ignore_invalid_symbol = true) //if str.tostring(TSO) != 'na' // if ta.barssince(TSO != TSO[1] and TSO > TSO[1])==0 // MarketCap := TSO * close // // if barstate.islast and MarketCap == 0 // runtime.error("No MarketCap is provided by the data vendor.") // //momlen = 100 //msrc = MarketCap //mom = msrc - msrc[momlen] //plotmom = if (mom > mom[1]) // true //else // false //OBV with sma on macd obv = ta.cum(math.sign(ta.change(close)) * volume) smoothingLength = 5 smoothingLine = ta.sma(obv,5) [macdLine, signalLine, histLine] = ta.macd(ta.pvt, 12, 26, 9) sellvolhigh = macdLine < signalLine buyvolhigh = macdLine > signalLine //Buy Signal mafentry =ta.sma(close, 50) > ta.sma(close, 90) //matentry = ta.sma(close, 21) > ta.sma(close, 50) matwohun = close > ta.sma(close, 200) higheshigh = ta.rising(high, 2) higheslow = ta.rising(low, 2 ) twohunraise = ta.rising(out, 2) //highvol = ta.crossover(volume, ta.sma(volume, lookback)) highvol = ta.rising(volume,2) fourlow = ta.lowest(close, lookback) fourhig = ta.highest(close, lookback) change = (((fourhig - fourlow) / fourlow) * 100) <= 30 green = close > open allup = false lineabove = ta.cross(close, ta.sma(close, input(defval = 21, title = 'Entry Line'))) if matwohun and mafentry and higheshigh and twohunraise and buyvolhigh //if higheshigh and higheslow and highvol allup := true plotshape(allup, style=shape.arrowup,location=location.belowbar, color=color.green, title = "Buy Signal") barsSinceLastEntry() => strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na //Sell Signal mafexit =ta.sma(close, 50) < ta.sma(close, 90) matexit = ta.sma(close, 21) < ta.sma(close, 50) matwohund = close < ta.sma(close, 200) linebreak = ta.sma(close, input(defval = 21, title = 'Exit Line')) > close lowesthigh = ta.falling(high, 3) lowestlow = ta.falling(low, 2 ) twohunfall = ta.falling(out, 3) twentyfall = ta.falling(outt, 2) highvole = ta.crossover(volume, ta.sma(volume, 5)) //fourlow = ta.lowest(close, lookback) //fourhig = ta.highest(close, lookback) changed = (((fourhig - close) / close) * 100) >= 10 red = close < open atr = ta.atr(14) //atrsmalen = int(bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) ) atrsmalen = barsSinceLastEntry() atrsma = false atrlen = 5 if str.tostring(atrsmalen) != 'NaN' and atrsmalen > 0 atrlen := atrsmalen atrsma := atr > ta.sma(atr,50) alldwn = false if sellvolhigh and lowestlow and (close < close[1] and close < open) //if higheshigh and higheslow and highvol alldwn := true plotshape(alldwn, style=shape.arrowdown,location=location.abovebar, color=color.red, title = "Sell Signal") longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (allup) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (alldwn) strategy.entry("My Short Entry Id", strategy.short)