अनुकूलन मूल्य चैनल रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-04 16:33:45
टैगः

img

अवलोकन

यह रणनीति औसत वास्तविक सीमा (एटीआर) सूचक और औसत दिशात्मक सूचकांक (एडीएक्स) पर आधारित एक अनुकूलन मूल्य चैनल रणनीति है। इसका उद्देश्य साइडवेज बाजारों और मूल्य आंदोलनों में रुझानों की पहचान करना और तदनुसार ट्रेड करना है।

रणनीति तर्क

  1. एक दी गई लंबाई पर उच्चतम उच्च (एचएच) और निम्नतम निम्न (एलएल) की गणना करें। उसी लंबाई पर एटीआर की गणना भी करें।

  2. ऊपर और नीचे की ओर मूल्य आंदोलनों के आधार पर +DI और -DI की गणना करें। फिर ADX की गणना करें।

  3. यदि ADX < 25, तो बाजार को साइडवेज माना जाता है। यदि बंद > ऊपरी चैनल (HH - ATR गुणक * ATR), लंबा जाएं। यदि बंद < निचला चैनल (LL + ATR गुणक * ATR), छोटा जाएं।

  4. यदि ADX >= 25 और +DI > -DI है, तो बाजार तेजी से बढ़ रहा है। यदि बंद > ऊपरी चैनल है, तो लंबा हो।

  5. यदि ADX >= 25 और +DI < -DI है, तो बाजार मंदी है। यदि बंद < निचला चैनल है, तो शॉर्ट करें।

  6. प्रवेश के बाद से exit_length बारों के बाद बाहर निकलने की स्थिति।

लाभ विश्लेषण

  1. यह रणनीति बाज़ार की स्थितियों के आधार पर स्वचालित रूप से अनुकूलित होती है, साइडवेज मार्केट में चैनल रणनीति और ट्रेंडिंग मार्केट में ट्रेंडिंग ट्रेंड का उपयोग करती है।

  2. एटीआर और एडीएक्स का उपयोग अनुकूलन क्षमता सुनिश्चित करता है। एटीआर चैनल चौड़ाई को समायोजित करता है, एडीएक्स प्रवृत्ति निर्धारित करता है।

  3. जबरन बाहर निकलने से स्थिरता बढ़ जाती है।

जोखिम विश्लेषण

  1. एडीएक्स अक्सर झूठे संकेत उत्पन्न कर सकता है।

  2. खराब एटीआर और एडीएक्स मापदंड खराब प्रदर्शन का कारण बनते हैं।

  3. ब्लैक स्वान घटनाओं के खिलाफ प्रभावी ढंग से रक्षा करने में असमर्थ।

अनुकूलन दिशाएँ

  1. अनुकूलन क्षमता में सुधार के लिए एटीआर और एडीएक्स के मापदंडों का अनुकूलन करना।

  2. घाटे को सीमित करने के लिए स्टॉप लॉस जोड़ें.

  3. झूठे संकेतों से बचने के लिए फ़िल्टर जोड़ें।

निष्कर्ष

रणनीति में बाजार की स्थितियों में अनुकूलन के लिए संकेतकों और तंत्रों का संयोजन किया गया है। लेकिन संकेतकों की सीमाओं के कारण गलत आकलन हो सकते हैं। मापदंडों और जोखिम नियंत्रण पर भविष्य के अनुकूलन।


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Adaptive Price Channel Strategy", overlay=true)

length = input(20, title="Length")
exit_length = input(10, title="Exit After X Periods")
atr_multiplier = input(3.2, title="ATR Multiplier")

startDate = input(defval = timestamp("2019-01-15T08:15:15+00:00"), title = "Start Date")
endDate = input(defval = timestamp("2033-04-01T08:15:00+00:00"), title = "End Date")

hh = ta.highest(high, length)
ll = ta.lowest(low, length)
atr = ta.atr(length)

// calculate +DI and -DI
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove[1]) ? na : (upMove > downMove and upMove > 0 ? upMove : 0)
minusDM = na(downMove[1]) ? na : (downMove > upMove and downMove > 0 ? downMove : 0)
plusDI = ta.rma(plusDM, length) / atr * 100
minusDI = ta.rma(minusDM, length) / atr * 100

// calculate ADX
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, length)

var int barSinceEntry = na

if (not na(close[length]) )
    if (adx < 25) // Sideways market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
        else if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI > minusDI) // Bullish market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI < minusDI) // Bearish market
        if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0

if (na(barSinceEntry))
    barSinceEntry := barSinceEntry[1] + 1
else if (barSinceEntry >= exit_length)
    strategy.close("PChLE")
    strategy.close("PChSE")
    barSinceEntry := na

plot(hh, title="Highest High", color=color.green, linewidth=2)
plot(ll, title="Lowest Low", color=color.red, linewidth=2)



अधिक