कॉन्फ़िगर करने योग्य मल्टी एमए क्रॉसओवर वोटिंग सिस्टम

लेखक:चाओझांग, दिनांक: 2023-09-23 15:52:06
टैगः

अवलोकन

यह रणनीति कई तेजी से / धीमी गति से चलती औसत जोड़े के लचीले विन्यास की अनुमति देती है। यह लंबे समय तक चला जाता है जब सभी तेजी से एमए धीमी एमए के ऊपर क्रॉस करते हैं, और बाहर निकलते हैं जब कोई भी तेजी से एमए धीमी एमए के नीचे पार करता है। कई एमए के साथ मतदान तंत्र का उद्देश्य मजबूत स्थिति धारण निर्णय बनाना है।

रणनीति तर्क

मुख्य घटक और नियम निम्नलिखित हैंः

  1. कई तेज़/धीमी एमए: एसएमए, डब्ल्यूएमए, वीडब्ल्यूएमए आदि का उपयोग करना।

  2. लंबा संकेतः सभी तेज एमए धीमे एमए के ऊपर पार कर रहे हैं।

  3. बाहर निकलने का संकेतः धीमी गति से गुजरने वाले किसी भी तेज एमए पार।

  4. लाभ/हानि अंकः एटीआर पर आधारित निश्चित अंक।

  5. कॉन्फ़िगर करने योग्य: कई एमए जोड़े की लचीली कॉन्फ़िगरेशन।

कई एमए के साथ मतदान-आधारित प्रविष्टि सिग्नल विश्वसनीयता में सुधार करती है। कस्टम कॉन्फ़िगरेशन लचीलापन प्रदान करते हैं।

लाभ

एकल एमए रणनीतियों की तुलना में, लाभ हैंः

  1. कई एमए अधिक व्यापक रुझान आकलन प्रदान करते हैं।

  2. मतदान से शोर से झूठे संकेतों से बचा जाता है।

  3. कस्टम एमए कॉन्फ़िगरेशन से बड़ी ट्यूनिंग जगह।

  4. विभिन्न प्रकार के एमओ के लिए समर्थन अनुकूलन क्षमता को बढ़ाता है।

  5. व्यापार जोखिम/प्रदान के अनुसार परिभाषित लाभ/नुकसान बिंदु नियंत्रण।

  6. लंबे समय के फ्रेम पर बेहतर काम करता है, कम वक्र whipsaws.

  7. सरल और सहज तर्क, लागू करने और संचालित करने में आसान।

  8. एकल एमए के मुकाबले अधिक दीर्घायु के साथ समग्र रूप से अधिक स्थिर।

जोखिम

हालांकि, कुछ जोखिम मौजूद हैंः

  1. एकाधिक एमए के साथ जटिलता में वृद्धि।

  2. अति-अनुकूलन के जोखिम।

  3. रुझान परिवर्तनों की पहचान करने में मौलिक विलंब।

  4. किसी भी मात्रा पर विचार नहीं किया जाता है, फंसने का खतरा होता है।

  5. लाभ/हानि के अंक अनावश्यक बहिष्कार का कारण बन सकते हैं।

  6. बाजार व्यवस्थाओं के परिवर्तन के अधीन प्रदर्शन।

  7. लाभ/जोखिम अनुपात और वक्र की चिकनाई की निगरानी करने की आवश्यकता है।

  8. साधनों के बीच मजबूती को मान्य करने की आवश्यकता है।

सुधार

विश्लेषण के आधार पर, सुधारों में निम्नलिखित शामिल हो सकते हैंः

  1. विभिन्न उपकरणों में मापदंडों की मजबूती का परीक्षण करना।

  2. मात्रा या अस्थिरता की पुष्टि जोड़ना।

  3. लाभ/हानि के बिंदुओं का अनुकूलन करना।

  4. अधिकतम स्वीकार्य निकासी सीमा निर्धारित करना।

  5. गतिशील स्थिति आकार मॉडल का निर्माण।

  6. मशीन लर्निंग की शुरूआत के प्रभाव का आकलन करना।

  7. अधिकतम ड्रॉडाउन और वक्र की चिकनाई की निगरानी करना।

  8. ओवरफिटिंग से बचने के लिए निरंतर पुनरावृत्ति।

निष्कर्ष

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


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-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/
// © levieux

//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")


ma(src,length,type) => 
    float ma = switch type
	    "SMA" => ta.sma(src, length)
	    "WMA" => ta.wma(src, length)
	    "VWMA" => ta.vwma(src, length)

crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
    crossover= str.tostring(array.get(crossoverGroups, i))
    crossoverBoundaries= str.split(crossover, "x")
    int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
    int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
    wmaFast= ma(source,fastLength,maType)
    wmaSlow= ma(source,slowLength,maType)
    if wmaFast>wmaSlow
        longVotes:= longVotes + 1
        array.set(positions, i, 1)

longCondition= longVotes==crossoverCount and strategy.position_size==0


//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)

if strategy.position_size>0
    profitPrice:= profitPrice[1]
    lossPrice:= lossPrice[1]

plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)

if longCondition and profitPrice>0
    strategy.entry("Long", strategy.long)

if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
    strategy.close("Long")
    
longVotes:= 0

अधिक