এই কৌশলটি বাজার দিকনির্দেশ এবং ধরে রাখার সময় নির্ধারণের জন্য দিকনির্দেশক আন্দোলন সূচক (এডিএক্স), প্লাস দিকনির্দেশক সূচক (ডিআই +) এবং দ্রুত এবং ধীর গতির গড়কে একত্রিত করে। এটি প্রবণতা অনুসরণকারী ট্রেডিং কৌশলগুলির অন্তর্গত। কৌশলটি মাঝারি এবং স্বল্পমেয়াদে বিপরীতমুখী পয়েন্টগুলি কার্যকরভাবে ক্যাপচার করতে পারে এবং কম অস্থিরতা এবং সুস্পষ্ট ট্রেন্ডিং বাজারে ভাল পারফর্ম করে।
এই কৌশলটির মূল যুক্তি হ'ল যখন + ডিআই লাইনটি নীচে থেকে এডিএক্স লাইনের উপরে অতিক্রম করে তখন ক্রয় সংকেত উত্পন্ন করা এবং যখন + ডিআই লাইনটি উপরে থেকে এডিএক্স লাইনের নীচে অতিক্রম করে তখন বিক্রয় সংকেত উত্পন্ন করা। অতএব, এই কৌশলটি বাজারের প্রবণতা এবং বিপরীত পয়েন্টগুলি নির্ধারণের জন্য ডিআই এবং এডিএক্সের মধ্যে ক্রসওভারের উপর নির্ভর করে। একই সাথে, দ্রুত এবং ধীর গতির গড়ের মধ্যে সম্পর্কটি সামগ্রিক বাজারের প্রবণতা নির্ধারণ করতে ব্যবহৃত হয়। ট্রেডিং সংকেতগুলি কেবল তখনই বিবেচনা করা হবে যখন দ্রুত ইএমএ ধীর ইএমএর উপরে থাকে।
বিশেষ করে, নিম্নলিখিত শর্ত পূরণ হলে একটি ক্রয় সংকেত সক্রিয় করা হবেঃ
নিম্নলিখিত শর্ত পূরণ হলে বিক্রয় সংকেত প্রেরণ করা হবেঃ
এই কৌশলটি স্টপ লস লজিককে অন্তর্ভুক্ত করে, যখন মূল্য স্টপ লস স্তরের নিচে পড়ে তখন সমস্ত পজিশন থেকে বেরিয়ে আসে।
এই কৌশলটি বাজারের প্রবণতা পরিবর্তনের কার্যকরভাবে নির্ধারণের জন্য ডিআই, এডিএক্স এবং চলমান গড়ের সূচকগুলিকে একত্রিত করে।
এই কৌশলটির সাথে কিছু ঝুঁকি রয়েছেঃ
এই ঝুঁকিগুলি ADX এবং চলমান গড় পরামিতিগুলি অনুকূল করে, স্টপ লস স্তর সামঞ্জস্য করে, নিশ্চিতকরণের জন্য ফিল্টার যুক্ত করে ইত্যাদির মাধ্যমে মোকাবেলা করা যেতে পারে।
আরও উন্নতির সুযোগ রয়েছে:
সাধারণভাবে এই এডিএক্স ক্রসওভার ট্রেন্ড কৌশলটি বেশ স্থিতিশীল, কার্যকরভাবে বিপরীতমুখীতা ধরে রাখতে সক্ষম, তবে ঝুঁকি নিয়ন্ত্রণ অত্যন্ত গুরুত্বপূর্ণ। আরও প্যারামিটারগুলি অনুকূলিতকরণ, কঠোরভাবে প্রবেশের নিয়মগুলি অনুসরণ করা এবং স্টপ লস ভাল ঝুঁকি-সমন্বিত রিটার্নের দিকে পরিচালিত করতে পারে। কৌশলটি মাঝারি থেকে স্বল্পমেয়াদী অবস্থানগুলি ধারণকারী দীর্ঘমেয়াদী অ্যাকাউন্টগুলির জন্য উপযুক্ত।
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mohanee //@version=4 //ADX strategy SmoothedTrueRange=0.00 SmoothedDirectionalMovementPlus=0.00 SmoothedDirectionalMovementMinus=0.00 strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3, initial_capital=10000, currency=currency.USD) len = input(11, title="ADX Length", minval=1) threshold = input(30, title="threshold", minval=5) fastEma=input(13, title="Fast EMA",minval=1, maxval=50) slowEma=input(55, title="Slow EMA",minval=10, maxval=200) stopLoss =input(8, title="Stop Loss",minval=1) // TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100 ADX = sma(DX, len) plot(DIPlus, color=color.green, title="DI+") //plot(DIMinus, color=color.red, title="DI-") plot(ADX, color=color.black, title="ADX") hline(threshold, color=color.black, linestyle=hline.style_dashed) fastEmaVal=ema(close,fastEma) slowEmaVal=ema(close,slowEma) //long condition longCondition= ADX < threshold and crossover(DIPlus,ADX) and fastEmaVal > slowEmaVal barcolor(longCondition ? color.yellow: na) strategy.entry(id="ADXLE", long=true, when= longCondition and strategy.position_size<1) barcolor(strategy.position_size>1 ? color.blue: na) bgcolor(strategy.position_size>1 ? color.blue: na) //Add strategy.entry(id="ADXLE", comment="Add", long=true, when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) //calculate stop Loss stopLossVal = strategy.position_avg_price - (strategy.position_avg_price*stopLoss*0.01) strategy.close(id="ADXLE",comment="SL Exit", when=close<stopLossVal) //close all on stop loss //exit condition exitCondition= ADX > threshold and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal strategy.close(id="ADXLE",comment="TPExitAll", qty=strategy.position_size , when= exitCondition) //close all