तीन मूविंग एवरेज क्वांटिटेटिव ट्रेडिंग रणनीति


निर्माण तिथि: 2024-01-23 14:20:50 अंत में संशोधित करें: 2024-01-23 14:20:50
कॉपी: 0 क्लिक्स: 624
1
ध्यान केंद्रित करना
1617
समर्थक

तीन मूविंग एवरेज क्वांटिटेटिव ट्रेडिंग रणनीति

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

सिद्धांत

इस रणनीति में तीन चलती औसत शामिल हैंः MA1, MA2 और MA3। MA1 और MA2 के बीच एक लेनदेन चैनल बनाया गया है, जिसका क्रॉसिंग ट्रेडिंग सिग्नल देता है; MA3 सिग्नल को फ़िल्टर करने के लिए है।

जब एक त्वरित औसत MA1 पर मध्य अवधि के औसत MA2 को पार करता है, तो यह संकेत देता है कि अल्पकालिक प्रवृत्ति मजबूत हो गई है, और यदि कीमत लंबी अवधि के औसत MA3 से अधिक है, तो एक अधिक संकेत उत्पन्न होता है; इसके विपरीत, यदि MA1 नीचे MA2 को पार करता है, और कीमत MA3 से कम है, तो एक शून्य संकेत उत्पन्न होता है।

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

लाभ

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

जोखिम

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

MA चक्र को समायोजित करके, विभिन्न किस्मों को चुनने के लिए पैरामीटर का अनुकूलन करें; स्टॉप लॉस रणनीति को अनुकूलित करें, एकल नुकसान को नियंत्रित करें; अन्य तकनीकी संकेतकों के साथ संयोजन में संकेत की प्रभावशीलता की पुष्टि करें, गलत संकेत की संभावना को कम करें।

अनुकूलन दिशा

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

संक्षेप

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

रणनीति स्रोत कोड
/*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)