
এই কৌশলটি একটি মাল্টি-ইনডিকেটর ইন্টিগ্রেটেড ট্রেডিং সিস্টেম যা ইন্ডিকেটর মুভিং এভারেজ (EMA), আপেক্ষিকভাবে দুর্বল সূচক (RSI) এবং গড় বাস্তব তরঙ্গদৈর্ঘ্য (ATR) এর মতো প্রযুক্তিগত সূচকগুলিকে একত্রিত করে এবং প্রবণতা বিচার করার নির্ভুলতা বাড়ানোর জন্য গড় ট্রেন্ডিং সূচক (ADX) প্রবর্তন করে। সিস্টেমটি একাধিক সংকেত দিয়ে অবস্থান তৈরির সময়কে নিশ্চিত করে এবং এটিআর ব্যবহার করে গতিশীল স্টপ লস এবং স্টপ স্টপ পরিচালনা করে, ঝুঁকি কার্যকর নিয়ন্ত্রণের জন্য।
কৌশলটির মূল বিষয় হল একাধিক প্রযুক্তিগত সূচকের সমন্বয়ে বাজারের প্রবণতা ধরা এবং লেনদেন করা। এর মধ্যে রয়েছেঃ
এই কৌশলটি একাধিক প্রযুক্তিগত সূচকগুলির জৈবিক সংমিশ্রণ দ্বারা একটি সম্পূর্ণ প্রবণতা ট্র্যাকিং ট্রেডিং সিস্টেম তৈরি করে। কৌশলটি ট্রেডিংয়ের নির্ভুলতা নিশ্চিত করার পাশাপাশি কঠোর ঝুঁকি নিয়ন্ত্রণের মাধ্যমে ট্রেডিংয়ের সুরক্ষা নিশ্চিত করে। যদিও কিছু অপ্টিমাইজেশনের জায়গা রয়েছে তবে সামগ্রিক কাঠামোর ভাল ব্যবহারিক মূল্য এবং স্কেলযোগ্যতা রয়েছে।
/*backtest
start: 2025-01-20 00:00:00
end: 2025-01-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("Enhanced GBP/USD Strategy with ADX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// === Input Parameters ===
emaFastLength = input.int(20, title="Fast EMA Length")
emaSlowLength = input.int(50, title="Slow EMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
atrLength = input.int(14, title="ATR Length")
adxLength = input.int(14, title="ADX Length")
riskToReward = input.float(2.0, title="Risk-Reward Ratio (R:R)")
slMultiplier = input.float(1.5, title="SL Multiplier (ATR)")
// === Indicator Calculations ===
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// === ADX Calculation ===
// Components of ADX
tr = ta.rma(ta.tr, adxLength) // True Range smoothed
plusDM = ta.rma(math.max(high - high[1], 0), adxLength) // +DM
minusDM = ta.rma(math.max(low[1] - low, 0), adxLength) // -DM
plusDI = (plusDM / tr) * 100
minusDI = (minusDM / tr) * 100
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength) // Final ADX value
// === Entry Conditions ===
isUptrend = emaFast > emaSlow and adx > 20
isDowntrend = emaFast < emaSlow and adx > 20
buySignal = isUptrend and ta.crossover(rsi, rsiOversold)
sellSignal = isDowntrend and ta.crossunder(rsi, rsiOverbought)
// === Stop-Loss and Take-Profit ===
slDistance = atr * slMultiplier
tpDistance = slDistance * riskToReward
buySL = buySignal ? close - slDistance : na
buyTP = buySignal ? close + tpDistance : na
sellSL = sellSignal ? close + slDistance : na
sellTP = sellSignal ? close - tpDistance : na
// === Execute Trades ===
if buySignal
strategy.entry("Buy", strategy.long)
strategy.exit("Buy TP/SL", from_entry="Buy", stop=buySL, limit=buyTP)
if sellSignal
strategy.entry("Sell", strategy.short)
strategy.exit("Sell TP/SL", from_entry="Sell", stop=sellSL, limit=sellTP)
// === Plotting ===
plot(emaFast, title="Fast EMA", color=color.blue)
plot(emaSlow, title="Slow EMA", color=color.orange)
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
plot(buySL, title="Buy Stop Loss", color=color.red, linewidth=1)
plot(buyTP, title="Buy Take Profit", color=color.green, linewidth=1)
plot(sellSL, title="Sell Stop Loss", color=color.red, linewidth=1)
plot(sellTP, title="Sell Take Profit", color=color.green, linewidth=1)
// === Alerts ===
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected!")