यह रणनीति ADX सूचकांक में गतिशील परिवर्तनों को ट्रैक करके, बाजार की प्रवृत्ति के शुरुआती परिवर्तनों को पकड़ने और प्रवृत्ति की समय पर निगरानी करने के लिए बनाई गई है। जब ADX निम्न स्तर से तेजी से बढ़ता है, तो यह दर्शाता है कि एक प्रवृत्ति बन रही है, यह प्रवेश करने का एक अच्छा समय है। एक चलती औसत की सहायता के साथ, एक गलत निदान को प्रभावी ढंग से दरकिनार किया जा सकता है।
यह रणनीति मुख्य रूप से ADX सूचकांक में गतिशील परिवर्तनों के आधार पर प्रवृत्ति के विकास का न्याय करने के लिए है। ADX सूचकांक कम होने पर, प्रवृत्ति में बहुत कम बदलाव का प्रतिनिधित्व करता है; जब ADX निम्न स्तर से तेजी से बढ़ता है, तो यह दर्शाता है कि एक प्रवृत्ति बन रही है। रणनीति ADX के तेजी से बढ़ने की निगरानी करके प्रवृत्ति के विकास को पकड़ती है।
विशेष रूप से, रणनीति में प्रवेश के लिए निम्नलिखित शर्तें शामिल हैं:
जब उपरोक्त शर्तों को एक साथ पूरा किया जाता है, तो यह दर्शाता है कि प्रवृत्ति बन रही है, और अधिक करें; वर्तमान में चलती औसत को पार करते समय, बराबरी की स्थिति। दो चलती औसत का उपयोग करके, प्रवृत्ति के विकास को अधिक सटीक रूप से आंका जा सकता है।
रुकावट की स्थिति भी इसी तरह होती है, जब ADX नीचे की ओर तेजी से गिरता है, तो यह खाली हो जाता है; जब कीमतें नीचे की ओर चलती औसत को पार करती हैं, तो यह खाली हो जाती है।
इस रणनीति का सबसे बड़ा फायदा यह है कि समय पर प्रवृत्ति के विकास को पकड़ने के लिए। पारंपरिक तरीके से केवल ADX के मूल्य को देखते हुए, प्रवृत्ति की पुष्टि करने के लिए ADX के 20 या 25 तक बढ़ने की प्रतीक्षा की जाती है, जो सबसे अच्छा प्रवेश समय से चूक गया है। यह रणनीति ADX के तेजी से उदय को ट्रैक करके प्रवृत्ति के विकास को काफी हद तक पकड़ सकती है।
इसके अलावा, इस रणनीति में चलती औसत को भी शामिल किया गया है, जो कुछ गलतियों को फ़िल्टर करने और रणनीति की स्थिरता को बढ़ाने में मदद करता है।
इस रणनीति का सबसे बड़ा जोखिम ADX सूचकांक की खुद की सुस्ती है। हालांकि तेजी से उछाल को ट्रैक करके सुस्ती को कम किया जा सकता है, फिर भी कुछ सुस्ती बनी हुई है। इससे कुछ तेजी से पलटने वाले बाजारों को पकड़ना मुश्किल हो सकता है।
इसके अलावा, एडीएक्स सूचकांक ट्रेंड के लिए 100 प्रतिशत सटीक नहीं है, और निश्चित रूप से कुछ गलत निदान होंगे। हालांकि चलती औसत की शुरूआत कुछ शोर को फ़िल्टर कर सकती है, फिर भी इसे और अनुकूलित करने की आवश्यकता है।
इस रणनीति में अनुकूलन के लिए बहुत जगह है, और यह ADX के कैप्चर की सटीकता को और बेहतर बनाने के लिए महत्वपूर्ण है। मशीन लर्निंग और अन्य तरीकों को शामिल करने पर विचार किया जा सकता है, ADX परिवर्तन के बाद संभावना वितरण का आकलन करने के लिए मॉडल को प्रशिक्षित किया जा सकता है। परीक्षण अनुकूलन के लिए विभिन्न पैरामीटर संयोजनों और अन्य सहायक संकेतकों जैसे तरीकों की भी कोशिश की जा सकती है।
यह गतिशील ADX प्रवृत्ति ट्रैकिंग रणनीति, ADX तेजी से बढ़ते बाजार के परिवर्तन बिंदुओं को पकड़ने के द्वारा प्रवृत्ति पर समय पर ट्रैकिंग को प्राप्त करने के लिए। इसका सबसे बड़ा लाभ यह है कि यह समय पर बेहद चुस्त है, और प्रवृत्ति को जल्दी से प्रभावी ढंग से पकड़ सकता है। इसके अलावा, एक निश्चित संभावना के गलतफहमी का जोखिम भी है, बाद में निरंतर अनुकूलन परीक्षण की आवश्यकता है।
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
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/
// © dhilipthegreat
//@version=4
//Rising ADX strategy
strategy(title="Rising ADX strategy", overlay=false)
adxlen = input(14, title="ADX Length", minval=1)
threshold = input(10, title="threshold", minval=5)
hline(threshold, color=color.black, linestyle=hline.style_dashed)
atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen=input(20, title="Moving average 1 ",minval=1, maxval=50)
avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na
atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen2=input(20, title="Moving average 2",minval=1, maxval=200)
avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na
//ADX&DI
dilen = 14
dirmov(len,_high,_low,_tr) =>
up = change(_high)
down = -change(_low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(_tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen,_high,_low,_tr) =>
[plus, minus] = dirmov(dilen,_high,_low,_tr)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[plus, minus] = dirmov(dilen,high,low,tr)
sig = adx(dilen, adxlen,high,low,tr)
prev_sig = adx(dilen, adxlen,high[1],low[1],tr)
plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2)
//////
longCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2
barcolor(longCondition ? color.yellow: na)
Long_side = input(true, "Long side")
if Long_side
strategy.entry(id="Long", long=true, when= longCondition and strategy.position_size<1)
exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2
strategy.close(id="Long",comment="L exit", qty=strategy.position_size , when= exitCondition) //close all
shortCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2
barcolor(shortCondition ? color.gray: na)
Short_side = input(true, "Short side")
if Short_side
strategy.entry(id="Short", long=false, when= shortCondition and strategy.position_size<1)
sell_exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2
strategy.close(id="Short",comment="S exit", qty=strategy.position_size , when= sell_exitCondition) //close all
barcolor(strategy.position_size>1 ? color.lime: na)
bgcolor(strategy.position_size>1 ? color.lime: na)
barcolor(strategy.position_size<0 ? color.orange: na)
bgcolor(strategy.position_size<0 ? color.orange: na)