یہ حکمت عملی قیمتوں کی رجحان کی سمت کی نشاندہی کرنے کے لئے ایس ایم اے اور ای ایم اے جیسے متعدد حرکت پذیر اوسطوں کو جوڑتی ہے ، اور قیمت کی پیشرفت کی بنیاد پر اسٹاپ نقصان کی لائنیں طے کرتی ہے تاکہ رجحان کے بعد کی حکمت عملی تیار کی جاسکے۔ جب قیمتیں بڑھتی ہیں تو ، یہ اسٹاپ نقصان کے طور پر اوپری بینڈ کی پیروی کرتی ہے۔ جب قیمتیں گرتی ہیں تو ، یہ اسٹاپ نقصان کے طور پر نچلی حد کی پیروی کرتی ہے۔ اس حکمت عملی کا فائدہ یہ ہے کہ متعدد حرکت پذیر اوسطوں کا امتزاج قیمت کے اعداد و شمار کو ہموار کرسکتا ہے اور رجحانات کی نشاندہی کرسکتا ہے۔ متحرک اسٹاپ نقصان کے ڈیزائن سے زیادہ حساس اسٹاپ سے گریز ہوتا ہے۔ اس حکمت عملی کا خطرہ یہ ہے کہ اسٹاپ نقصان کی لائن کی ترتیب وقت میں نقصان کو روکنے کے لئے بہت لچکدار ہوسکتی ہے۔
یہ حکمت عملی KAMA کو رجحان کی سمت کا فیصلہ کرنے کی بنیاد کے طور پر استعمال کرتی ہے ، کیونکہ KAMA قیمتوں میں ہونے والی تبدیلیوں کا زیادہ حساس طور پر جواب دیتا ہے اور پہلے سے ہی موڑ کی نشاندہی کرسکتا ہے۔ اسی وقت ، حکمت عملی میں قیمتوں کو فلٹر کرنے اور اہم رجحان کی سمتوں کی نشاندہی کرنے کے لئے دیگر متعدد حرکت پذیر اوسط کے مجموعے شامل ہیں۔
اسٹریٹجی کی اسٹاپ نقصان لائن کی ترتیب قیمت خود اور چلتی اوسط پر مبنی ہے۔ خاص طور پر ، اوپر کی ٹریلنگ اسٹاپ نقصان لائن چلتی اوسط ہے جس میں ایک بفر کے طور پر ایک تناسب شامل ہے۔ نیچے کی ٹریلنگ اسٹاپ نقصان لائن ایک بفر کے طور پر ایک تناسب کے علاوہ چلتی اوسط ہے۔ اس سے قیمتوں میں الٹ پڑنے پر فوری طور پر اسٹاپ نقصان کی اجازت ملتی ہے۔
انٹری کی شرائط لمبی ہوتی ہیں جب قیمتیں نیچے سے اوپر کی طرف سٹاپ نقصان لائن کو توڑتی ہیں؛ مختصر ہوتی ہیں جب قیمتیں اوپر سے نیچے کی طرف سٹاپ نقصان لائن کو توڑتی ہیں۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ متعدد حرکت پذیر اوسطوں کو جوڑ کر ، رجحان کے فیصلے کی درستگی کو بہتر بنایا جاسکتا ہے اور غلط سگنل کو کم کیا جاسکتا ہے۔ اسی وقت ، حکمت عملی کی اسٹاپ نقصان کی لائن متحرک طور پر حرکت پذیر اوسط کی بنیاد پر بدلتی ہے ، جو حقیقی وقت میں ایڈجسٹ ہوسکتی ہے اور اچانک واقعات کا جواب دے سکتی ہے۔
اس کے علاوہ ، سنگل اشارے کی حکمت عملیوں کے مقابلے میں ، اس حکمت عملی میں رجحان کی پیروی اور پیشرفت کی حکمت عملیوں کے فوائد کو جوڑ دیا گیا ہے۔ رجحان کی مارکیٹ میں ، یہ منافع کو زیادہ سے زیادہ کرسکتا ہے۔ جبکہ ایک وِپسا مارکیٹ میں ، یہ اسٹاپ نقصان کی ترتیبات کے ذریعے نقصانات کو کم کرسکتا ہے۔
اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ اسٹاپ نقصان لائن کی ترتیب وقت میں نقصان کو روکنے کے لئے بہت لچکدار ہوسکتی ہے۔ اس کی وجہ یہ ہے کہ اسٹاپ نقصان لائن کا ریٹریسیشن تناسب طے شدہ ہے ، اگر مارکیٹ میں پرتشدد تبدیلی واقع ہوتی ہے تو ، اسٹاپ نقصان لائن کو وقت میں اپ ڈیٹ نہیں کیا جاسکتا ہے ، جس سے زیادہ نقصانات ہوسکتے ہیں۔
اس کے علاوہ ، خود حرکت پذیر اوسط میں ہائی ہائسٹریسیس ہے اور وہ قیمتوں میں ہونے والی تبدیلیوں پر فوری رد عمل ظاہر نہیں کرسکتا ہے۔ اس سے مارکیٹ میں تیزی سے الٹ جانے پر وقت پر نقصان کو روکنے میں بھی ناکامی ہوسکتی ہے۔
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
سٹاپ نقصان لائن تناسب کے لئے مختلف پیرامیٹر کی ترتیبات کا تجربہ کریں تاکہ پیرامیٹر کے بہتر مجموعے تلاش کیے جائیں۔
اسٹاپ نقصان کی لائن کو مارکیٹ کے اتار چڑھاؤ کی ڈگری کے مطابق متحرک طور پر تبدیل کرنے کی کوشش کریں۔
فیصلہ کرنے کے لئے دوسرے اشارے میں اضافہ کریں ، حکمت عملی کی موافقت کو بہتر بنانے کے لئے اسٹاپ نقصان کی بنیاد میں مزید متغیرات متعارف کروائیں؛
قیمتوں کو ہموار کرنے کے لئے بہترین سائیکل کی ترتیب تلاش کرنے کے لئے چلتی اوسط کے سائیکل پیرامیٹرز کو بہتر بنائیں.
مجموعی طور پر ، یہ حکمت عملی کافی مضبوط ہے ، جس میں رجحان کی سمت کا تعین کرنے کے لئے متعدد حرکت پذیر اوسطوں کا امتزاج ہوتا ہے ، اور رجحانات کی پیروی کرنے کے مقصد سے متحرک ٹریلنگ اسٹاپ نقصان کا طریقہ کار تیار کیا جاتا ہے۔ اس کے فوائد یہ ہیں کہ یہ غلط سگنل کو کم کرسکتا ہے ، اسٹاپ نقصان کے ذریعے خطرات کو کنٹرول کرسکتا ہے۔ نقصان یہ ہے کہ اسٹاپ نقصان کی لائن کو بہت وسیع طے کیا جاسکتا ہے تاکہ تیزی سے نقصان کو روک سکے۔ حکمت عملی کو بہتر بنانے کے لئے اگلے مرحلے میں اسٹاپ نقصان کی لائن کے ڈیزائن پر توجہ دینی چاہئے تاکہ اسے مارکیٹ کی تبدیلیوں کے مطابق متحرک طور پر ایڈجسٹ کیا جاسکے۔
/*backtest start: 2023-02-22 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Atlantean Trend Signal BUY SELL Strategy', overlay=true) ma_length = input.int(title='Moving Average Length', minval=1, defval=3) percent = input.float(3.3, 'STOP LOSS Percent', step=0.1, minval=0) src = input(title='Source', defval=close) mav = input.string(title="Moving Average Type", defval="KAMA", options=["SMA", "EMA", "WMA", "DEMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "HULL", "TILL", "KAMA"]) T3a1 = 0.7 _type = false //input(false, title='Activate Moving Average Screening Mode') _type1 = false //input(false, title='Activate Moving Average Color Change Screening Mode') activateScreener = input.bool(false, title="Activate Screener?") showsignallabels = input(title='Show Signal Labels?', defval=true) Var_Func(src, ma_length) => valpha = 2 / (ma_length + 1) vud1 = src > src[1] ? src - src[1] : 0 vdd1 = src < src[1] ? src[1] - src : 0 vUD = math.sum(vud1, 9) vDD = math.sum(vdd1, 9) vCMO = nz((vUD - vDD) / (vUD + vDD)) VAR = 0.0 VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1]) VAR VAR = Var_Func(src, ma_length) DEMA = 2 * ta.ema(src, ma_length) - ta.ema(ta.ema(src, ma_length), ma_length) Wwma_Func(src, ma_length) => wwalpha = 1 / ma_length WWMA = 0.0 WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1]) WWMA WWMA = Wwma_Func(src, ma_length) // KAMA Calculation Kama_Func(src, ma_length) => xvnoise = math.abs(src - src[1]) nfastend = 0.666 nslowend = 0.0645 nsignal = math.abs(src - src[ma_length]) nnoise = math.sum(xvnoise, ma_length) nefratio = nnoise != 0 ? nsignal / nnoise : 0 nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2) nAMA = 0.0 nAMA := nz(nAMA[1]) + nsmooth * (src - nz(nAMA[1])) nAMA Zlema_Func(src, ma_length) => zxLag = ma_length / 2 == math.round(ma_length / 2) ? ma_length / 2 : (ma_length - 1) / 2 zxEMAData = src + src - src[zxLag] ZLEMA = ta.ema(zxEMAData, ma_length) ZLEMA ZLEMA = Zlema_Func(src, ma_length) Tsf_Func(src, ma_length) => lrc = ta.linreg(src, ma_length, 0) lrc1 = ta.linreg(src, ma_length, 1) lrs = lrc - lrc1 TSF = ta.linreg(src, ma_length, 0) + lrs TSF TSF = Tsf_Func(src, ma_length) HMA = ta.wma(2 * ta.wma(src, ma_length / 2) - ta.wma(src, ma_length), math.round(math.sqrt(ma_length))) T3e1 = ta.ema(src, ma_length) T3e2 = ta.ema(T3e1, ma_length) T3e3 = ta.ema(T3e2, ma_length) T3e4 = ta.ema(T3e3, ma_length) T3e5 = ta.ema(T3e4, ma_length) T3e6 = ta.ema(T3e5, ma_length) T3c1 = -T3a1 * T3a1 * T3a1 T3c2 = 3 * T3a1 * T3a1 + 3 * T3a1 * T3a1 * T3a1 T3c3 = -6 * T3a1 * T3a1 - 3 * T3a1 - 3 * T3a1 * T3a1 * T3a1 T3c4 = 1 + 3 * T3a1 + T3a1 * T3a1 * T3a1 + 3 * T3a1 * T3a1 T3 = T3c1 * T3e6 + T3c2 * T3e5 + T3c3 * T3e4 + T3c4 * T3e3 getMA(src, ma_length) => ma = 0.0 ma := switch mav 'SMA' => ta.sma(src, ma_length) 'EMA' => ta.ema(src, ma_length) 'WMA' => ta.wma(src, ma_length) 'DEMA' => DEMA 'TMA' => ta.sma(ta.sma(src, math.ceil(ma_length / 2)), math.floor(ma_length / 2) + 1) 'VAR' => VAR 'WWMA' => WWMA 'ZLEMA' => ZLEMA 'TSF' => TSF 'HULL' => HMA 'TILL' => T3 'KAMA' => Kama_Func(src, ma_length) ma ALL = getMA(src, ma_length) exMov = ALL fark = exMov * percent * 0.01 longStop = exMov - fark longStopPrev = nz(longStop[1], longStop) longStop := exMov > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = exMov + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := exMov < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and exMov > shortStopPrev ? 1 : dir == 1 and exMov < longStopPrev ? -1 : dir MOST = dir == 1 ? longStop : shortStop cro = _type and _type1 ? ta.crossover(exMov, exMov[1]) : _type ? ta.crossover(close, exMov) : ta.crossover(exMov, MOST) cru = _type and _type1 ? ta.crossunder(exMov, exMov[1]) : _type ? ta.crossunder(close, exMov) : ta.crossunder(exMov, MOST) direction = 0 direction := cro ? 1 : cru ? -1 : direction[1] col1 = exMov > exMov[1] col3 = exMov < exMov[1] colorM = col1 and _type and _type1 ? color.rgb(14, 241, 52) : col3 and _type and _type1 ? color.red : color.new(#00bcd4, 0) if (cro) strategy.entry('LONG', strategy.long) if (cru) strategy.close('LONG') plot(_type ? na : MOST, color=color.new(color.maroon, 0), linewidth=3, title='MOST') plot(exMov, color=colorM, linewidth=2, title='exMov') plotshape(cro and showsignallabels, title='BUY', text='BUY', location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.new(#00bcd4, 0), textcolor=color.new(color.white, 0)) plotshape(cru and showsignallabels, title='SELL', text='SELL', location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.new(#e91e63, 0), textcolor=color.new(color.white, 0))