संरेखित चलती औसत और संचयी उच्च निम्न सूचकांक संयोजन रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-21 15:19:35
टैगः

img

अवलोकन

यह रणनीति मुख्य रूप से बाजार के रुझान और खुले पदों को निर्धारित करने के लिए उच्च निम्न सूचकांक, चलती औसत सूचकांक और सुपर प्रवृत्ति सूचकांक को जोड़ती है।

रणनीति तर्क

  1. उच्च निम्न सूचकांक यह आकलन करता है कि किसी निश्चित अवधि में नवीनतम मूल्य ने एक नया उच्च या नया निम्न बनाया है या नहीं, और स्कोर जमा करता है। जब स्कोर बढ़ता है, तो यह तेजी की ताकत को मजबूत करता है। जब स्कोर गिरता है, तो यह मंदी की ताकत को मजबूत करता है।

  2. चलती औसत सूचकांक यह आंकता है कि क्या कीमत ऊपर की ओर सीढ़ी के आकार की अपट्रेंड में है या नीचे की ओर सीढ़ी के आकार की डाउनट्रेंड में है। जब चलती औसत सीढ़ी के आकार की वृद्धि दिखाती है, तो यह तेजी की ताकतों को मजबूत करने का प्रतिनिधित्व करती है। जब यह सीढ़ी के आकार की गिरावट दिखाती है, तो यह मंदी की ताकतों को मजबूत करने का प्रतिनिधित्व करती है।

  3. उच्च निम्न सूचकांक और चलती औसत सूचकांक के निर्णयों को बाजार की प्रवृत्ति निर्धारित करने के लिए मिलाएं, और फिर सुपर प्रवृत्ति सूचकांक की दिशा के साथ संयुक्त व्यापारिक अवसर खोजें। विशेष रूप से, जब उच्च निम्न सूचकांक और चलती औसत सूचकांक दोनों तेजी से बल दिखाते हैं और सुपर प्रवृत्ति सूचकांक की दिशा नीचे की ओर है, तो लंबी स्थिति खोलें। जब दोनों सूचकांक मंदी की ताकत को मजबूत करते हैं और सुपर प्रवृत्ति सूचकांक की दिशा ऊपर की ओर है, तो छोटी स्थिति खोलें।

लाभ

  1. उच्च निम्न सूचकांक प्रभावी रूप से मूल्य आंदोलन और गति में परिवर्तन का न्याय कर सकता है। चलती औसत सूचकांक प्रभावी रूप से मूल्य प्रवृत्ति निर्धारित कर सकता है। दोनों का संयोजन अधिक सटीक रूप से बाजार की दिशा निर्धारित कर सकता है।

  2. सुपर ट्रेंड इंडेक्स के साथ मिलकर पद खोलने से पदों के समय से पहले या देर से खोलने से बचा जा सकता है। सुपर ट्रेंड इंडेक्स प्रभावी रूप से मूल्य उलट बिंदुओं की पहचान कर सकता है।

  3. कई संकेतक एक दूसरे को सत्यापित करते हैं और झूठे संकेतों को कम करते हैं।

जोखिम

  1. उच्च निम्न सूचकांक और चलती औसत सूचकांक के गलत संकेतों से घाटे वाली स्थिति उत्पन्न हो सकती है।

  2. अपर्याप्त भागीदारी और सुपर ट्रेंड इंडेक्स की अनुचित पैरामीटर सेटिंग्स से गलत संकेत उत्पन्न हो सकते हैं।

  3. तेजी से रुझान उलटने और गलत स्टॉप लॉस सेटिंग्स से बड़े नुकसान हो सकते हैं।

  4. सूचक मापदंडों को अनुकूलित करके, स्टॉप लॉस मूल्य स्तरों को समायोजित करके, आदि जोखिमों को कम किया जा सकता है।

अनुकूलन

  1. मापदंडों का इष्टतम संयोजन खोजने के लिए विभिन्न प्रकार के चलती औसत संकेतकों का परीक्षण करें।

  2. संकेतों को अधिक स्थिर और विश्वसनीय बनाने के लिए उच्च निम्न सूचकांक और चलती औसत सूचकांक के मापदंडों को अनुकूलित करें।

  3. झूठे संकेतों को कम करने के लिए सत्यापन के लिए अन्य संकेतक, जैसे एमएसीडी, केडी आदि शामिल करें।

  4. स्वचालित रूप से मापदंडों और संकेत भार को अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम शामिल करें।

  5. कम लोकप्रिय उत्पादों का व्यापार करने से बचने के लिए भावना विश्लेषण शामिल करें।

निष्कर्ष

यह रणनीति उच्च निम्न सूचकांक और चलती औसत सूचकांक के माध्यम से बाजार के रुझानों और गति को निर्धारित करती है, और फिर सुपर ट्रेंड सूचकांक का उपयोग करके संकेतों को फ़िल्टर करती है, जब तेजी और मंदी की ताकतें एक-दूसरे का सामना करती हैं और सुपर ट्रेंड सूचकांक उलट जाता है तो पदों को खोलती है। इसके फायदे कई संकेत सत्यापन और समय पर पदों के उद्घाटन में निहित हैं, जो जोखिमों को प्रभावी ढंग से नियंत्रित कर सकते हैं। मौजूदा समस्याओं में झूठे संकेत और प्रवृत्ति गलत आकलन शामिल हैं। रणनीति को अधिक मजबूत और विश्वसनीय बनाने के लिए पैरामीटर अनुकूलन, स्टॉप लॉस सेटिंग्स, सिग्नल फ़िल्टरिंग आदि के माध्यम से विभिन्न सुधार किए जा सकते हैं।


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("AlignedMA and Cumulative HighLow Strategy", overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
includePartiallyAligned = input(true)
HighLowPeriod = input(50, minval=1,step=1)
LookbackPeriod = input(10, minval=1,step=1)

supertrendMult = input(2, minval=1, maxval=10, step=0.5)
supertrendLength = input(10, minval=1)

tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
backtestYears = input(10, minval=1, step=1)

f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma
    
f_getMaAlignment(MAType, includePartiallyAligned)=>
    ma5 = f_getMovingAverage(close,MAType,5)
    ma10 = f_getMovingAverage(close,MAType,10)
    ma20 = f_getMovingAverage(close,MAType,20)
    ma30 = f_getMovingAverage(close,MAType,30)
    ma50 = f_getMovingAverage(close,MAType,50)
    ma100 = f_getMovingAverage(close,MAType,100)
    ma200 = f_getMovingAverage(close,MAType,200)

    upwardScore = 0
    upwardScore := close > ma5? upwardScore+1:upwardScore
    upwardScore := ma5 > ma10? upwardScore+1:upwardScore
    upwardScore := ma10 > ma20? upwardScore+1:upwardScore
    upwardScore := ma20 > ma30? upwardScore+1:upwardScore
    upwardScore := ma30 > ma50? upwardScore+1:upwardScore
    upwardScore := ma50 > ma100? upwardScore+1:upwardScore
    upwardScore := ma100 > ma200? upwardScore+1:upwardScore
    
    upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
    downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
    upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 5? 0.5: upwardScore < 2?-0.5:upwardScore>3?0.25:-0.25) : 0

f_getHighLowValue(HighLowPeriod)=>
    currentHigh = highest(high,HighLowPeriod) == high
    currentLow = lowest(low,HighLowPeriod) == low
    currentHigh?1:currentLow?-1:0

inDateRange = time >= timestamp(syminfo.timezone, year(timenow) - backtestYears, 01, 01, 0, 0)

maAlignment = f_getMaAlignment(MAType,includePartiallyAligned)
alignedMaIndex = sum(maAlignment,LookbackPeriod)

maAlignmentDirection = alignedMaIndex > alignedMaIndex[1] ? 1 : alignedMaIndex < alignedMaIndex[1] ? -1 : 0
maAlignmentDirection := maAlignmentDirection == 0? nz(maAlignmentDirection[1],0):maAlignmentDirection

highLowIndex = f_getHighLowValue(HighLowPeriod)
cumulativeHighLowIndex = sum(highLowIndex,LookbackPeriod)

hlDirection = cumulativeHighLowIndex > cumulativeHighLowIndex[1] ? 1 : cumulativeHighLowIndex < cumulativeHighLowIndex[1] ? -1 : 0
hlDirection := hlDirection == 0? nz(hlDirection[1],0):hlDirection

[superTrend, dir] = supertrend(supertrendMult, supertrendLength)

buyEntry = (dir == -1 and maAlignmentDirection == 1 and hlDirection == 1)
sellEntry = (dir == 1 and maAlignmentDirection == -1 and hlDirection == -1)

barColor = buyEntry?color.lime:sellEntry?color.orange:color.gray
barcolor(barColor)

// strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when=barColor == color.lime and inDateRange, oca_name="oca_buy")
strategy.close("Buy", when=dir == 1)

strategy.entry("Sell", strategy.short, when=barColor == color.orange and inDateRange, oca_name="oca_sell")
strategy.close("Sell", when=dir == -1)


अधिक