यह रणनीति बाजार की दिशा और होल्डिंग अवधि निर्धारित करने के लिए दिशात्मक आंदोलन सूचकांक (एडीएक्स), प्लस दिशात्मक संकेतक (डीआई +) और तेजी से और धीमी गति से चलती औसत को जोड़ती है। यह प्रवृत्ति-अनुसरण वाली ट्रेडिंग रणनीतियों से संबंधित है। यह रणनीति मध्यम और अल्पकालिक पर उलट बिंदुओं को प्रभावी ढंग से पकड़ सकती है और कम अस्थिरता और स्पष्ट ट्रेंडिंग बाजारों में अच्छा प्रदर्शन करती है।
इस रणनीति का मूल तर्क यह है कि जब +डीआई लाइन एडीएक्स लाइन के ऊपर नीचे से पार करती है तो खरीद संकेत उत्पन्न करना है, और जब +डीआई लाइन एडीएक्स लाइन के नीचे ऊपर से पार करती है तो बिक्री संकेत उत्पन्न करना है। इसलिए, यह रणनीति बाजार के रुझानों और उलट बिंदुओं को निर्धारित करने के लिए डीआई और एडीएक्स के बीच क्रॉसओवर पर निर्भर करती है। साथ ही, समग्र बाजार प्रवृत्ति को निर्धारित करने के लिए तेजी से और धीमी गति से चलती औसत के बीच संबंध का उपयोग किया जाता है। ट्रेडिंग संकेतों पर केवल तभी विचार किया जाएगा जब तेजी से ईएमए धीमी ईएमए से ऊपर हो।
विशेष रूप से, निम्नलिखित शर्तों को पूरा करने पर एक खरीद संकेत ट्रिगर किया जाएगाः
निम्नलिखित शर्तों को पूरा करने पर एक बिक्री सिग्नल ट्रिगर किया जाएगा:
रणनीति में स्टॉप लॉस लॉजिक भी शामिल है, जब कीमत स्टॉप लॉस स्तर से नीचे गिरती है तो सभी पदों से बाहर निकलने के लिए।
यह रणनीति बाजार के रुझानों में बदलाव को प्रभावी ढंग से निर्धारित करने के लिए DI, ADX और चलती औसत संकेतकों को जोड़ती है।
इस रणनीति के साथ कुछ जोखिमों को ध्यान में रखा जाना चाहिएः
इन जोखिमों को 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