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