मात्रात्मक रणनीति: एमए ताकत और कमजोरी प्रवृत्ति ट्रैकिंग


निर्माण तिथि: 2024-01-19 16:50:13 अंत में संशोधित करें: 2024-01-19 16:50:13
कॉपी: 3 क्लिक्स: 609
1
ध्यान केंद्रित करना
1617
समर्थक

मात्रात्मक रणनीति: एमए ताकत और कमजोरी प्रवृत्ति ट्रैकिंग

अवलोकन

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

रणनीति सिद्धांत

  1. 5 दिन, 10 दिन, 20 दिन आदि के कई समूहों के एमए की गणना करें, यह निर्धारित करें कि क्या कीमतें प्रत्येक एमए को ऊपर की ओर तोड़ती हैं, ब्रेक मार्क्स, स्कोर बनाने के लिए और एमए की ताकत को बढ़ाने के लिए।
  2. एएमए की ताकत पर चलती औसत लागू करें, औसत रेखा संकेतक बनाएं, औसत रेखा को खाली समझें, व्यापार संकेत उत्पन्न करें।
  3. ट्रेकिंग चक्र पैरामीटर को कॉन्फ़िगर किया जा सकता हैः अल्पकालिक एमए की संख्या, दीर्घकालिक औसत अवधि, स्थिति खोलने की शर्तें, आदि।

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

श्रेष्ठता विश्लेषण

  1. प्रवृत्ति की ताकत का आकलन करने के लिए एक बहुआयामी मॉडल. एक एकल एमए लाइन पर्याप्त ताकत निर्धारित करने में असमर्थ है; यह रणनीति बहु-एमए ब्रेकडाउन को मापती है, यह सुनिश्चित करने के लिए कि पर्याप्त ताकत के बाद संकेत दिया जाता है, उच्च विश्वसनीयता।
  2. कॉन्फ़िगर करने योग्य ट्रैकिंग चक्र; अल्पकालिक एमए मापदंडों को समायोजित करने के लिए विभिन्न स्तरों की प्रवृत्ति को पकड़ने के लिए; लंबी अवधि के एमए मापदंडों को समायोजित करने के लिए आउटपुट की गति को नियंत्रित करने के लिए; उपयोगकर्ता बाजार के अनुसार चक्र को समायोजित कर सकते हैं।
  3. केवल अधिक करने से गलतफहमी से बचा जा सकता है, लंबी अवधि के ऊपर की ओर रुझानों को ट्रैक किया जा सकता है। रणनीति केवल अधिक है, केवल पीछा करने से नहीं पीछा किया जा सकता है, और उलट नुकसान को कम किया जा सकता है।

जोखिम विश्लेषण

  1. वापस लेने का जोखिम है. जब छोटी लाइन औसत रेखा के नीचे लंबी लाइन औसत रेखा से गुजरती है, तो वापस लेने का अधिक जोखिम है. स्टॉप लॉस के माध्यम से एकल नुकसान को कम किया जा सकता है।
  2. रिवर्स जोखिम मौजूद है. बाजार के लंबे समय तक चलने के लिए समायोजन की आवश्यकता होती है, रणनीति को समय पर बाहर निकलने से रोकना होगा. रिवर्स जोखिम को नियंत्रित करने के लिए बड़े चक्र के अंत में निर्णय लेने के लिए वेवबैंड, चैनल आदि जैसी तकनीकों के संयोजन की सिफारिश की जाती है।
  3. पैरामीटर जोखिम: अनुचित पैरामीटर विन्यास एक गलत संकेत दे सकता है। पैरामीटर को विभिन्न किस्मों के लिए समायोजित किया जाना चाहिए ताकि पैरामीटर स्थिर हो सके।

अनुकूलन दिशा

  1. अधिक संकेतकों के साथ प्रवेश फ़िल्टर करें। संश्लेषित यातायात पर विचार किया जा सकता है, जब मात्रा को सत्यापित किया जा सके तो संकेत जारी करें, झूठी दरार से बचें।
  2. बढ़ी हुई हानि की रोकथाम. चलती रोकथाम, वक्र की रोकथाम में कमी की कमी हो सकती है। रोकथाम को भी ध्यान में रखा जा सकता है, मुनाफे को लॉक करने के लिए, रिवर्स से बचने के लिए।
  3. फ्यूचर्स और विदेशी मुद्रा किस्मों को कॉन्फ़िगर करने पर विचार करें. एमए लाइन को तोड़ना अधिक ट्रेंडिंग किस्मों के लिए उपयुक्त है. विभिन्न फ्यूचर्स किस्मों के पैरामीटर की स्थिरता का मूल्यांकन करें और सर्वोत्तम किस्मों का चयन करें।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 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("MA Strength Strategy", overlay=false, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)
MAType = input(title="Moving Average Type", defval="ema", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
LookbackPeriod = input(10, step=10)

IndexMAType = input(title="Moving Average Type", defval="hma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
IndexMAPeriod = input(200, step=10)

considerTrendDirection = input(true)
considerTrendDirectionForExit = input(true)
offset = input(1, step=1)
tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true

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.0
    upwardScore := close > ma5? upwardScore+1.10:upwardScore
    upwardScore := ma5 > ma10? upwardScore+1.10:upwardScore
    upwardScore := ma10 > ma20? upwardScore+1.10:upwardScore
    upwardScore := ma20 > ma30? upwardScore+1.10:upwardScore
    upwardScore := ma30 > ma50? upwardScore+1.15:upwardScore
    upwardScore := ma50 > ma100? upwardScore+1.20:upwardScore
    upwardScore := ma100 > ma200? upwardScore+1.25: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
    trendStrength = upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 6? 0.5: upwardScore < 2?-0.5:upwardScore>4?0.25:-0.25) : 0
    [trendStrength, upwardScore]
    
includePartiallyAligned = true
[trendStrength, upwardScore] = f_getMaAlignment(MAType, includePartiallyAligned)

upwardSum = sum(upwardScore, LookbackPeriod)

indexSma = f_getMovingAverage(upwardSum,IndexMAType,IndexMAPeriod)

plot(upwardSum, title="Moving Average Strength", color=color.green, linewidth=2, style=plot.style_linebr)
plot(indexSma, title="Strength MA", color=color.red, linewidth=1, style=plot.style_linebr)
buyCondition = crossover(upwardSum,indexSma) and (upwardSum > upwardSum[offset] or not considerTrendDirection) 
sellCondition = crossunder(upwardSum,indexSma) and (upwardSum < upwardSum[offset]  or not considerTrendDirection)

exitBuyCondition = crossunder(upwardSum,indexSma)
exitSellCondition = crossover(upwardSum,indexSma) 
strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when= inDateRange and buyCondition, oca_name="oca_buy")
strategy.close("Buy", when = considerTrendDirectionForExit? sellCondition : exitBuyCondition)
strategy.entry("Sell", strategy.short, when= inDateRange and sellCondition, oca_name="oca_sell")
strategy.close( "Sell", when = considerTrendDirectionForExit? buyCondition : exitSellCondition)