त्रिगुट चलती औसत मात्रात्मक ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-23 14:20:50
टैगः

img

यह रणनीति विभिन्न अवधियों के तीन चलती औसत की गणना करके और मूल्य सफलताओं को मिलाकर ट्रेडिंग सिग्नल उत्पन्न करती है। यह एक विशिष्ट प्रवृत्ति-अनुसरण रणनीति से संबंधित है। इस रणनीति का उद्देश्य बाजार में मध्यम अवधि के रुझानों का पालन करना है और इसे गतिशील रूप से मापदंडों को समायोजित करके विभिन्न उत्पादों और ट्रेडिंग वातावरणों के अनुकूल बनाया जा सकता है।

सिद्धांत

रणनीति में तीन चलती औसत शामिल हैंः एमए1, एमए2 और एमए3. एमए1 और एमए2 एक ट्रेडिंग चैनल बनाते हैं, और उनका क्रॉसओवर ट्रेडिंग सिग्नल उत्पन्न करता है; एमए3 का उपयोग संकेतों को फ़िल्टर करने के लिए किया जाता है।

जब तेजी से चलती औसत MA1 मध्यम अवधि के चलती औसत MA2 से ऊपर पार करता है, तो यह अल्पकालिक प्रवृत्ति के सुदृढीकरण का संकेत देता है। इस समय, यदि कीमत दीर्घकालिक चलती औसत MA3 से ऊपर है, तो एक लंबा संकेत उत्पन्न होता है; इसके विपरीत, यदि MA1 MA2 से नीचे पार करता है और कीमत MA3 से नीचे है, तो एक छोटा संकेत उत्पन्न होता है।

MA3 की भूमिका अल्पकालिक बाजार शोर को फ़िल्टर करना है और केवल यह निर्धारित करने के बाद संकेत उत्पन्न करना है कि प्रवृत्ति मध्यम और दीर्घकालिक चरण में प्रवेश कर गई है। तीन चलती औसत के मापदंडों को गतिशील रूप से समायोजित करके, रणनीति विभिन्न बाजारों में इष्टतम मापदंड संयोजन पा सकती है।

लाभ

  • कई चलती औसत के माध्यम से विभिन्न चक्रों के रुझानों को कैप्चर करें
  • एमए3 वाइप्स से बचने के लिए संकेतों को फ़िल्टर करता है
  • अनुकूलन योग्य चलती औसत प्रकार और पैरामीटर, उच्च अनुकूलन क्षमता
  • सिग्नल बिंदुओं की पहचान करने के लिए क्रॉस को दृश्यमान करें

जोखिम

  • प्रमुख रुझानों के उलटने पर चलती औसत में देरी हो सकती है
  • संभावित उच्च व्यापारिक आवृत्ति, बढ़ी हुई व्यापारिक लागत और फिसलने के जोखिम
  • अनुचित मापदंड ओवरट्रेडिंग या लेगिंग संकेत का कारण बन सकते हैं

विभिन्न उत्पादों के लिए एमए अवधि का अनुकूलन कर सकता है; एकल हानि को नियंत्रित करने के लिए स्टॉप लॉस का अनुकूलन कर सकता है; सिग्नल वैधता की पुष्टि करने और झूठे संकेतों को कम करने के लिए अन्य तकनीकी संकेतकों को जोड़ सकता है।

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

  • रुझानों को निर्धारित करने के लिए अन्य संकेतक जोड़ें, जैसे एमएसीडी, बोलिंगर बैंड आदि।
  • स्टॉप लॉस/टेक प्रॉफिट रणनीतियाँ जोड़ें
  • इष्टतम संयोजन खोजने के लिए गतिशील रूप से पैरामीटर समायोजित करें
  • विभिन्न उत्पादों के लिए पैरामीटर अनुकूलन
  • व्यापार लागतों पर विचार करें, व्यापार आवृत्ति को अनुकूलित करें

सारांश

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


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © Meesemoo

//@version=4
strategy("Custom MA Strategy Tester", overlay = true)
MA1Period = input(13, title="MA1 Period")
MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA1Source = input(title="MA1 Source", type=input.source, defval=close)
MA1Visible = input(title="MA1 Visible", type=input.bool, defval=true)
MA2Period = input(50, title="MA2 Period")
MA2Type = input(title="MA2 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA2Source = input(title="MA2 Source", type=input.source, defval=close)
MA2Visible = input(title="MA2 Visible", type=input.bool, defval=true) 
MA3Period = input(200, title="MA3 Period")
MA3Type = input(title="MA3 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA3Source = input(title="MA3 Source", type=input.source, defval=close)
MA3Visible = input(title="MA3 Visible", type=input.bool, defval=true)
ShowCrosses = input(title="Show Crosses", type=input.bool, defval=true)

MA1 = if MA1Type == "SMA"
    sma(MA1Source, MA1Period)
else
    if MA1Type == "EMA"
        ema(MA1Source, MA1Period)
    else
        if MA1Type == "WMA"
            wma(MA1Source, MA1Period)
        else
            if MA1Type == "RMA"
                rma(MA1Source, MA1Period)
            else
                if MA1Type == "HMA"
                    wma(2*wma(MA1Source, MA1Period/2)-wma(MA1Source, MA1Period), round(sqrt(MA1Period)))
                else
                    if MA1Type == "DEMA"
                        e = ema(MA1Source, MA1Period)
                        2 * e - ema(e, MA1Period)
                    else
                        if MA1Type == "TEMA"
                            e = ema(MA1Source, MA1Period)
                            3 * (e - ema(e, MA1Period)) + ema(ema(e, MA1Period), MA1Period)

                    
MA2 = if MA2Type == "SMA"
    sma(MA2Source, MA2Period)
else
    if MA2Type == "EMA"
        ema(MA2Source, MA2Period)
    else
        if MA2Type == "WMA"
            wma(MA2Source, MA2Period)
        else
            if MA2Type == "RMA"
                rma(MA2Source, MA2Period)
            else
                if MA2Type == "HMA"
                    wma(2*wma(MA2Source, MA2Period/2)-wma(MA2Source, MA2Period), round(sqrt(MA2Period)))
                else
                    if MA2Type == "DEMA"
                        e = ema(MA2Source, MA2Period)
                        2 * e - ema(e, MA2Period)
                    else
                        if MA2Type == "TEMA"
                            e = ema(MA2Source, MA2Period)
                            3 * (e - ema(e, MA2Period)) + ema(ema(e, MA2Period), MA2Period)
                    
MA3 = if MA3Type == "SMA"
    sma(MA3Source, MA3Period)
else
    if MA3Type == "EMA"
        ema(MA3Source, MA3Period)
    else
        if MA3Type == "WMA"
            wma(MA3Source, MA3Period)
        else
            if MA3Type == "RMA"
                rma(MA3Source, MA3Period)
            else
                if MA3Type == "HMA"
                    wma(2*wma(MA3Source, MA3Period/2)-wma(MA3Source, MA3Period), round(sqrt(MA3Period)))
                else
                    if MA3Type == "DEMA"
                        e = ema(MA3Source, MA3Period)
                        2 * e - ema(e, MA3Period)
                    else
                        if MA3Type == "TEMA"
                            e = ema(MA3Source, MA3Period)
                            3 * (e - ema(e, MA3Period)) + ema(ema(e, MA3Period), MA3Period)
                    


p1 = plot(MA1Visible ? MA1 : na, color=color.green, linewidth=1)
p2 = plot(MA2Visible ? MA2 : na, color=color.yellow, linewidth=1)
p3 = plot(MA3Visible ? MA3 : na, color=color.red, linewidth=2)

fill(p1, p2, color.silver, transp=80, title="Fill")


start = timestamp(2019, 1, 1, 1, 0)
end = timestamp(2025, 1, 1, 1, 0)

if time >= start and time <= end
    longCondition = crossover(MA1, MA2) and close > MA3
    if (longCondition)
        strategy.entry("Long", strategy.long)
        
    shortCondition = crossunder(MA1, MA2) and close < MA3
    if (shortCondition)
        strategy.entry("Short", strategy.short)

अधिक