
এই কৌশলটি একাধিক প্রযুক্তিগত সূচকের উপর ভিত্তি করে একটি পরিমাণগত ট্রেডিং সিস্টেম, যা তিনটি প্রযুক্তিগত সূচককে সংহত করেঃ সূচকীয় চলমান গড় (EMA), তুলনামূলকভাবে শক্তিশালী সূচক (RSI) এবং গড় প্রবণতা সূচক (ADX) । কৌশলটি প্রধান প্রবেশের ভিত্তিতে ইএমএ দ্রুত এবং ধীর লাইনের ক্রস সিগন্যাল ব্যবহার করে, আরএসআই সূচকগুলির সাথে যুক্ত হয়ে ওভারসোডিংয়ের নিশ্চিতকরণ এবং বাজারের প্রবণতার শক্তি নির্ধারণের জন্য ADX সূচকগুলি ব্যবহার করে, যার ফলে একটি সম্পূর্ণ ট্রেডিং সিদ্ধান্ত গ্রহণের সিস্টেম তৈরি হয়। কৌশলটিতে একটি ঝুঁকি ব্যবস্থাপনা মডিউলও রয়েছে যা ঝুঁকি-লাভের অনুপাত নির্ধারণ করে প্রতিটি ব্যবসায়ের স্টপ লস এবং স্টপ পজিশন নিয়ন্ত্রণ করে।
কৌশলটির মূল যুক্তি নিম্নলিখিত কয়েকটি মূল উপাদানগুলির উপর ভিত্তি করে তৈরি করা হয়েছেঃ
এটি একটি যুক্তিসঙ্গত, যৌক্তিকভাবে পরিকল্পিত, একাধিক প্রযুক্তিগত সূচক ট্রেডিং কৌশল। তিনটি ক্লাসিক প্রযুক্তিগত সূচক ইএমএ, আরএসআই এবং এডিএক্সকে একীভূত করে, কৌশলটি প্রবণতা ট্র্যাকিং এবং ঝুঁকি নিয়ন্ত্রণের ক্ষেত্রে ভাল পারফরম্যান্স করে। যদিও কিছু জায়গায় অপ্টিমাইজেশনের প্রয়োজন রয়েছে, তবে সামগ্রিকভাবে কৌশলটির ভাল ব্যবহারিক মূল্য এবং সম্প্রসারণের জায়গা রয়েছে। প্রস্তাবিত অপ্টিমাইজেশন দিকনির্দেশের মাধ্যমে কৌশলটির কার্যকারিতা আরও বাড়ানো যেতে পারে।
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA + RSI + ADX Strategy", overlay=true)
// Input parameters
lenFast = input.int(9, title="Fast EMA Length", minval=1)
lenSlow = input.int(21, title="Slow EMA Length", minval=1)
rsiPeriod = input.int(14, title="RSI Period")
adxPeriod = input.int(14, title="ADX Period")
adxSmoothing = input.int(1, title="ADX Smoothing")
adxThreshold = input.int(20, title="ADX Threshold")
riskRewardRatio = input.float(2.0, title="Risk/Reward Ratio")
// EMA Calculations
fastEMA = ta.ema(close, lenFast)
slowEMA = ta.ema(close, lenSlow)
// RSI Calculation
rsiValue = ta.rsi(close, rsiPeriod)
// ADX Calculation
[plusDI, minusDI, adxValue] = ta.dmi(adxPeriod, adxSmoothing)
// Entry Conditions
buyCondition = ta.crossover(fastEMA, slowEMA) and rsiValue < 60 and adxValue > adxThreshold
sellCondition = ta.crossunder(fastEMA, slowEMA) and rsiValue > 40 and adxValue > adxThreshold
// Entry logic
if (buyCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", from_entry="Buy", limit=close + (close - strategy.position_avg_price) * riskRewardRatio, stop=close - (close - strategy.position_avg_price))
if (sellCondition)
strategy.close("Buy")
// Plotting EMAs (thinner lines)
plot(fastEMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=1)
plot(slowEMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=1)
// Entry and exit markers (larger shapes)
plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.normal, title="Buy Signal")
plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.normal, title="Sell Signal")
// Displaying price labels for buy/sell signals
if (buyCondition)
label.new(bar_index, low, text="Buy\n" + str.tostring(close), color=color.new(color.green, 0), style=label.style_label_down, textcolor=color.white)
if (sellCondition)
label.new(bar_index, high, text="Sell\n" + str.tostring(close), color=color.new(color.red, 0), style=label.style_label_up, textcolor=color.white)
// Optional: Add alerts for entry signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal triggered")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal triggered")