ٹرپل ایکسپونینشیل موونگ ایوریج منافع لینے اور اسٹاپ نقصان کی حکمت عملی مارکیٹ میں داخلے اور باہر نکلنے کے لئے مختلف ادوار کے ساتھ تین ایکسپونینشیل موونگ ایوریجز پر مبنی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ رسک مینجمنٹ کے لئے منافع لینے اور اسٹاپ نقصان کی سطح مقرر کرنے کے لئے اوسط حقیقی رینج اشارے کا بھی استعمال کرتی ہے۔
اس حکمت عملی میں تین تیزی سے چلنے والے اوسط استعمال ہوتے ہیں: فاسٹ لائن ، مڈل لائن ، اور سست لائن۔ جب مڈل لائن سست لائن سے اوپر عبور کرتی ہے تو یہ لمبا ہوجاتا ہے ، اور جب تیز لائن مڈل لائن سے نیچے عبور کرتی ہے تو پوزیشن بند ہوجاتی ہے۔ یہ ایک عام رجحان کی پیروی کرنے والی حکمت عملی ہے جو تینوں حرکت پذیر اوسط کے عبور کے ذریعے رجحان کی سمت کا تعین کرتی ہے۔
اس کے ساتھ ہی ، حکمت عملی منافع لینے اور اسٹاپ نقصان کی سطحوں کا حساب لگانے کے لئے اوسط حقیقی رینج اشارے کا فائدہ اٹھاتی ہے۔ خاص طور پر ، لمبی پوزیشنوں کے لئے منافع حاصل کرنا انٹری قیمت + اوسط حقیقی رینج * منافع کا عنصر ہے ، اور مختصر پوزیشنوں کے لئے یہ انٹری قیمت - اوسط حقیقی رینج * منافع کا عنصر ہے۔ اسٹاپ نقصان کا منطق اسی طرح کا ہے۔ اس سے بڑے نقصانات کے خطرے کو مؤثر طریقے سے محدود کیا جاتا ہے۔
خطرے کو کم کرنے کے اقدامات میں شامل ہیں: چلتی اوسط مدت کو کم کرنا، منافع / اسٹاپ فیکٹر کو بہتر بنانا، اور معاون اشارے شامل کرنا۔
مجموعی طور پر ، یہ مستحکم کارکردگی اور آسان پیرامیٹرز کے ذریعہ آسان نفاذ کے ساتھ ایک موثر رجحان کی پیروی کرنے والی حکمت عملی ہے۔ اوسط حقیقی رینج پر مبنی متحرک منافع لینے اور نقصان کو روکنے سے ہر طرف کا خطرہ محدود ہوجاتا ہے۔ لیکن پیرامیٹر کی اصلاح اور اشارے کے امتزاج کو احتیاط سے کرنے کی ضرورت ہے تاکہ اوور فٹنگ یا فیصلے میں تاخیر کو روکا جاسکے۔ توازن پر ، اس حکمت عملی میں خطرہ-انعام کا اچھا پروفائل ہے اور اس پر غور کرنے کے قابل ہے۔
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //© Densz strategy("3EMA with TP & SL (ATR)", overlay=true ) // INPUTS startTime = input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2017 00:00 +0000")) endTime = input(title="End Time", type = input.time, defval = timestamp("01 Jan 2022 00:00 +0000")) slowEMALength = input(title="Slow EMA Length", type = input.integer, defval = 55) middleEMALength = input(title="Middle EMA Length", type = input.integer, defval = 21) fastEMALength = input(title="Fast EMA Length", type = input.integer, defval = 9) trendMALength = input(title="Trend indicator MA Length", type = input.integer, defval = 200) atrLength = input(title="ATR Length", type = input.integer, defval = 14) tpATRMult = input(title="Take profit ATR multiplier", type = input.integer, defval = 3) slATRMult = input(title="Stop loss ATR multiplier", type = input.integer, defval = 2) rsiLength = input(title="RSI Length", type = input.integer, defval = 14) // Indicators slowEMA = ema(close, slowEMALength) middEMA = ema(close, middleEMALength) fastEMA = ema(close, fastEMALength) atr = atr(atrLength) rsiValue = rsi(close, rsiLength) isRsiOB = rsiValue >= 80 isRsiOS = rsiValue <= 20 sma200 = sma(close, trendMALength) inDateRange = true // Plotting plot(slowEMA, title="Slow EMA", color=color.red, linewidth=2, transp=50) plot(middEMA, title="Middle EMA", color=color.orange, linewidth=2, transp=50) plot(fastEMA, title="Fast EMA", color=color.green, linewidth=2, transp=50) plot(sma200, title="SMA Trend indicator", color=color.purple, linewidth=3, transp=10) plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="OB") plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangledown, text="OS") float takeprofit = na float stoploss = na var line tpline = na var line slline = na if strategy.position_size != 0 takeprofit := takeprofit[1] stoploss := stoploss[1] line.set_x2(tpline, bar_index) line.set_x2(slline, bar_index) line.set_extend(tpline, extend.none) line.set_extend(slline, extend.none) // STRATEGY goLong = crossover(middEMA, slowEMA) and inDateRange closeLong = crossunder(fastEMA, middEMA) and inDateRange if goLong takeprofit := close + atr * tpATRMult stoploss := close - atr * slATRMult // tpline := line.new(bar_index, takeprofit, bar_index, takeprofit, color=color.green, width=2, extend=extend.right, style=line.style_dotted) // slline := line.new(bar_index, stoploss, bar_index, stoploss, color=color.red, width=2, extend=extend.right, style=line.style_dotted) // label.new(bar_index, takeprofit, "TP", style=label.style_labeldown) // label.new(bar_index, stoploss, "SL", style=label.style_labelup) strategy.entry("Long", strategy.long, when = goLong) strategy.exit("TP/SL", "Long", stop=stoploss, limit=takeprofit) if closeLong takeprofit := na stoploss := na strategy.close(id = "Long", when = closeLong) if (not inDateRange) strategy.close_all()