এই কৌশলটি ক্রয় এবং বিক্রয় সংকেত তৈরির জন্য এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) এবং সুপারট্রেন্ড সূচককে একত্রিত করে। যখন মূল্য 20 দিনের ইএমএ এর উপরে ভাঙ্গবে এবং সুপারট্রেন্ড সূচকটি একটি উত্থান প্রবণতায় থাকে তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন মূল্য 20 দিনের ইএমএ এর নীচে ভাঙ্গবে এবং সুপারট্রেন্ড সূচকটি একটি bearish প্রবণতায় থাকে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। কৌশলটি মিথ্যা সংকেতগুলি হ্রাস করার জন্য ফিল্টারিং শর্ত হিসাবে ইএমএ ব্যবহার করে ট্রেন্ডিং বাজারের শর্তগুলি ক্যাপচার করার লক্ষ্য।
এই কৌশলটি ২০ দিনের ইএমএ এবং সুপারট্রেন্ড সূচককে একত্রিত করে ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে, ট্রেন্ডিং বাজারের শর্তগুলি ক্যাপচার করার লক্ষ্যে। কৌশলটির সুবিধাগুলি এর সরলতা এবং ইএমএ এবং সুপারট্রেন্ড সূচকের সংমিশ্রণে রয়েছে, যা কার্যকরভাবে মিথ্যা সংকেতগুলি হ্রাস করতে পারে। তবে, অস্থির বাজারে, কৌশলটি ঘন ঘন বাণিজ্য করতে পারে এবং ঝুঁকি ব্যবস্থাপনা ব্যবস্থাগুলির অভাব রয়েছে। ভবিষ্যতের উন্নতিগুলি কৌশলটি উন্নত করার জন্য স্টপ-লস, অবস্থান আকার এবং পরামিতি অপ্টিমাইজেশন পদ্ধতি অন্তর্ভুক্ত করার বিষয়টি বিবেচনা করতে পারে। সামগ্রিকভাবে, এই কৌশলটি ট্রেডিং প্রবণতার একটি সহজ এবং কার্যকর পদ্ধতি সরবরাহ করে, তবে ব্যবহারিক প্রয়োগের জন্য আরও অপ্টিমাইজেশন এবং পরিমার্জন প্রয়োজন।
/*backtest start: 2023-06-11 00:00:00 end: 2024-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("20 EMA and Supertrend Strategy", overlay=true) // Inputs emaLength = input(20, title="EMA Length") supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier") supertrendPeriod = input(10, title="Supertrend Period") // EMA Calculation ema = ta.ema(close, emaLength) // Supertrend Calculation Periods = supertrendPeriod src = hl2 Multiplier = supertrendMultiplier changeATR= input.bool(true, title="Change ATR Calculation Method?") showsignals = input.bool(true, title="Show Buy/Sell Signals?") highlighting = input.bool(true, title="Highlighter On/Off?") atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = na(up[1]) ? up : up[1] up := close[1] > up1 ? math.max(up, up1) : up dn = src + (Multiplier * atr) dn1 = na(dn[1]) ? dn : dn[1] dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := na(trend[1]) ? trend : trend[1] trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1) longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0) shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0) fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor) alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!") alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!") changeCond = trend != trend[1] alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!") // Buy and Sell Signals based on EMA and Supertrend buySignalEMA = ta.crossover(close, ema) and trend == 1 sellSignalEMA = ta.crossunder(close, ema) and trend == -1 // Plot EMA plot(ema, color=color.blue, title="20 EMA") // Plot Buy and Sell Signals plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL") // Strategy Entries and Exits if (buySignalEMA) strategy.entry("Buy", strategy.long) if (sellSignalEMA) strategy.close("Buy")