इस रणनीति को विन्यस्त किया गया है ताकि कई तेज और धीमी औसत रेखा संयोजनों को स्थापित किया जा सके, जब सभी तेज लाइनों पर धीमी रेखा पार करते हैं, तो अधिक करें; जब कम से कम एक तेज लाइन के नीचे धीमी रेखा पार करता है, तो बराबरी करें। रणनीति कई औसत रेखाओं के लाभों का पूरा उपयोग करती है, जिससे एक मजबूत स्थिति रखने वाले निर्णय प्रणाली का गठन होता है।
इस रणनीति के मुख्य घटक और नियम इस प्रकार हैं:
बहु-समूह धीमी-धीमी औसत रेखाएँ: SMA, WMA, VWMA आदि जैसे कई औसत रेखा सूचकांकों का उपयोग करें।
अधिक सिग्नलः सभी तेज लाइनों पर धीमी लाइनों को पार करते समय अधिक सिग्नल दें
समस्थानिक सिग्नल: किसी भी तेज रेखा के नीचे धीमी रेखा को पार करते समय समस्थानिक।
स्टॉप लॉसः एटीआर मूल्य पर एक निश्चित स्टॉप लॉस सेट करें।
कॉन्फ़िगर करेंः बहु-समूह औसत रेखा मापदंडों को लचीले ढंग से कॉन्फ़िगर करें।
बहु-समानता रेखा संयोजन स्थिति मतदान के माध्यम से प्रवेश, सिग्नल की विश्वसनीयता को प्रभावी ढंग से बढ़ाया जा सकता है। कई समानता रेखा पैरामीटर अनुकूलित कॉन्फ़िगरेशन, लचीलापन के साथ कर सकते हैं।
एकल-समान-रेखा रणनीतियों की तुलना में, इस रणनीति के निम्नलिखित फायदे हैंः
बहु-औसत रेखा संयोजन एक व्यापक प्रवृत्ति निर्णय प्रदान करता है।
वोट देने का तरीकाः शोर-व्यापार को गलत समझने से बचें
आप अपने सभी औसत रेखा मापदंडों को स्वतंत्र रूप से कॉन्फ़िगर कर सकते हैं, अनुकूलन के लिए पर्याप्त जगह है।
कई औसत रेखा सूचकांकों का समर्थन, लचीला उपयोग
एक स्टॉप लॉस पॉइंट सेट करें, जो एक बार के नुकसान को नियंत्रित करता है।
लंबे समय तक चक्र का उपयोग बेहतर प्रभाव देता है, जिससे वक्र झटके कम हो जाते हैं।
गणना सरल, सहज, लागू करने और संचालित करने में आसान है।
कुल मिलाकर, यह एक औसत रेखा की तुलना में बेहतर स्थिरता और स्थायित्व प्रदान करता है।
लेकिन इस रणनीति के साथ कुछ जोखिम भी हैं:
बहु-औसत रेखा रणनीतिक जटिलता को बढ़ाती है।
पैरामीटर के अति-अनुकूलन का खतरा।
औसत रेखा में प्रवृत्ति में परिवर्तन के लिए विलंबित पहचान है।
यह भी कहा गया है, “यह एक बहुत ही महत्वपूर्ण मुद्दा है।
स्टॉप-स्टॉप-लॉस सेटिंग्स को अनियंत्रित किया जाता है, जिससे अनावश्यक रूप से स्टॉप-आउट हो सकता है।
बाजार के माहौल में बदलाव के साथ प्रभाव में अधिक उतार-चढ़ाव होता है।
आय वसूली अनुपात पर ध्यान दें, ताकि वक्र बहुत अधिक न हो।
कई किस्मों में स्थिरता की जाँच करने के लिए पैरामीटर।
उपरोक्त विश्लेषण के आधार पर, इस रणनीति को निम्नलिखित पहलुओं से सुदृढ़ किया जा सकता हैः
विभिन्न नस्लों में टेस्टिंग औसत रेखा पैरामीटर्स की ताकत
लेनदेन की मात्रा या अस्थिरता की पुष्टि में वृद्धि।
स्टॉप लॉस पैरामीटर को अनुकूलित करें
अधिकतम वापसी सहिष्णुता सेट करें
डायनामिक पोजीशन मैनेजमेंट सिस्टम बनाना।
मशीन लर्निंग के प्रभाव का आकलन करना।
अधिकतम निकासी और आय वक्र के लिए ध्यान दें
यह एक बार फिर से दोहराने की रणनीति है, ताकि ओवर-ऑप्टिमाइज़ेशन को रोका जा सके
इस रणनीति के माध्यम से विन्यास सेट बहु-औसत लाइन पोर्टफोलियो, एक अधिक मजबूत स्थिति रखने के लिए निर्णय लेने के तंत्र का गठन. लेकिन किसी भी रणनीति को ओवरफिट से बचने की जरूरत है, और बाजार की स्थिति के अनुसार गतिशील समायोजन. केवल लगातार अनुकूलन परीक्षण, मात्रात्मक रणनीति बाजार के लिए लंबे समय तक अनुकूल हो सकता है.
/*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