এই কৌশলটি একাধিক প্রযুক্তিগত সূচক উপর ভিত্তি করে একটি পরিমাণগত ট্রেডিং সিস্টেম, এক্সপোনেনশিয়াল মুভিং গড় (ইএমএ), আপেক্ষিক শক্তি সূচক (আরএসআই), এবং গড় দিকনির্দেশক সূচক (এডিএক্স) একীভূত। কৌশলটি প্রাথমিক প্রবেশের মানদণ্ড হিসাবে ইএমএ ক্রসওভার সংকেত ব্যবহার করে, ওভারকপ/ওভারসোল্ড নিশ্চিতকরণের জন্য আরএসআই এবং প্রবণতা শক্তি মূল্যায়নের জন্য এডিএক্সের সাথে মিলিত, একটি সম্পূর্ণ ট্রেডিং সিদ্ধান্ত ব্যবস্থা গঠন করে। কৌশলটিতে একটি ঝুঁকি ব্যবস্থাপনা মডিউলও অন্তর্ভুক্ত রয়েছে যা একটি পূর্বনির্ধারিত ঝুঁকি-পুরষ্কার অনুপাতের মাধ্যমে স্টপ-লস এবং লাভের মাত্রা নিয়ন্ত্রণ করে।
কৌশলটির মূল যুক্তি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করেঃ
এটি একাধিক প্রযুক্তিগত সূচককে অন্তর্ভুক্ত করে একটি সম্পূর্ণ যৌক্তিকতার সাথে একটি ভাল ডিজাইন করা কৌশল। ইএমএ, আরএসআই এবং এডিএক্সের সংহতকরণের মাধ্যমে কৌশলটি প্রবণতা অনুসরণ এবং ঝুঁকি নিয়ন্ত্রণে ভাল পারফরম্যান্স প্রদর্শন করে। অপ্টিমাইজেশনের জন্য ক্ষেত্র থাকলেও কৌশলটির ভাল ব্যবহারিক মূল্য এবং সম্প্রসারণের সুযোগ রয়েছে। প্রস্তাবিত অপ্টিমাইজেশনের দিকগুলির মাধ্যমে পারফরম্যান্স আরও উন্নত করা যেতে পারে।
/*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")