दोहरी चलती औसत क्रॉसओवर रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-07 15:18:44
टैगः

अवलोकन

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

सिद्धांत

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

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

लाभ

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

जोखिम

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

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

  • विभिन्न एमए अवधि के मापदंडों की लाभप्रदता का आकलन करें और इष्टतम का चयन करें
  • चैनल संकेतक, कैंडलस्टिक पैटर्न आदि जैसे अन्य फ़िल्टर जोड़ें।
  • स्टॉप लॉस और लाभ लेने के अनुकूलन के लिए अस्थिरता संकेतकों को शामिल करें
  • मापदंडों और नियमों का स्वतः अनुकूलन करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करें
  • ऑटो-ऑर्डर निष्पादन के लिए एल्गोरिथम ट्रेडिंग मॉड्यूल जोड़ें

सारांश

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-14 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/
// © KivancOzbilgic


//@version=4
strategy("pomila", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

अधिक