यह रणनीति 21 वें और 55 वें दिन की चलती औसत रेखा के क्रॉसिंग पर आधारित है, जो खरीद और बेचने के संकेतों को उत्पन्न करती है, जबकि सुपरट्रेंड सूचक के साथ मिलकर झूठे संकेतों को फ़िल्टर करने के लिए ट्रेंड ट्रैकिंग रणनीति।
कोड सबसे पहले 21 वीं लाइन ((EMA1) और 55 वीं लाइन ((EMA2) की चलती औसत रेखा को परिभाषित करता है। ईएमए 1 पर ईएमए 2 को पार करते समय एक खरीद संकेत उत्पन्न होता है; ईएमए 1 के नीचे ईएमए 2 को पार करते समय एक बेचने का संकेत उत्पन्न होता है।
झूठे संकेतों को फ़िल्टर करने के लिए, कोड में एक सुपरट्रेंडिंग सूचक शामिल किया गया है। सुपरट्रेंडिंग सूचक औसत वास्तविक तरंग दैर्ध्य एटीआर पर आधारित है, जो मूल्य के हालिया उच्च और निम्न बिंदुओं के साथ प्रवृत्ति की दिशा का आकलन करता है। कोड में यह निर्धारित किया गया है कि जब कीमत ऊपर की ओर बढ़ती है, तो नीचे की ओर बढ़ती है।
इस प्रकार, केवल ईएमए 1 पर ईएमए 2 को पार करने के लिए एक खरीद संकेत उत्पन्न होता है जब प्रवृत्ति बढ़ती है; केवल ईएमए 1 के नीचे ईएमए 2 को पार करने के लिए एक बेचने का संकेत उत्पन्न होता है जब प्रवृत्ति घटती है। सुपरट्रेंड संकेतक फ़िल्टर के माध्यम से, प्रवृत्ति परिवर्तन के दौरान उत्पन्न होने वाले झूठे संकेतों से बचा जा सकता है।
इसके अलावा, कोड में 200 दिन और 233 दिन की रेखाओं को जोड़ा गया है ताकि दीर्घकालिक रुझानों का आकलन किया जा सके, और केवल तभी ट्रेडिंग सिग्नल उत्पन्न किया जा सके जब दीर्घकालिक रुझानों की दिशा एक समान हो।
दोहरी चलती औसत रेखा सुपर ट्रेंड सूचक के साथ संयुक्त है, जो प्रवृत्ति की दिशा को प्रभावी ढंग से पहचानने और झूठे संकेतों को फ़िल्टर करने में मदद करता है।
चलती औसत पैरामीटर को समायोजित करके, रणनीति की संवेदनशीलता को विभिन्न बाजार स्थितियों के अनुकूल बनाया जा सकता है।
दीर्घकालिक औसत निर्णय के साथ, दीर्घकालिक रुझान असंगति के जोखिमों से बचा जा सकता है।
नियम स्पष्ट और समझने में आसान हैं, पैरामीटर को समायोजित करना आसान है, और यह मात्रा के लिए उपयुक्त है।
विक्रय संकेतों की दृश्यता, स्पष्ट संचालन।
दोहरी चलती समरेखा रणनीति प्रवृत्ति के मोड़ बिंदु पर गलत संकेत देने के लिए आसान है। संभावित मोड़ की पहचान करने के लिए सावधानी बरतने की आवश्यकता है।
गलत तरीके से सेट किए गए चलती औसत के पैरामीटर से रुझानों को याद किया जा सकता है या बहुत अधिक गलत संकेत उत्पन्न हो सकते हैं। विभिन्न बाजारों के लिए पैरामीटर को समायोजित करने की आवश्यकता होती है।
लेनदेन की आवृत्ति अधिक हो सकती है, लेनदेन लागत नियंत्रण पर ध्यान देने की आवश्यकता है।
सुपरट्रेंड सूचक पैरामीटर को अनुकूलित करने की आवश्यकता है, अन्यथा यह सही सिग्नल को फ़िल्टर कर सकता है या गलत सिग्नल को संग्रहीत कर सकता है।
लंबी अवधि के औसत रेखा निर्णय में देरी के संकेत हो सकते हैं, और प्रवृत्ति परिवर्तन के समय को समझदारी से पकड़ने की आवश्यकता है।
विभिन्न गतिमान औसत रेखा संयोजनों का परीक्षण करें और इष्टतम पैरामीटर खोजें।
फ़िल्टर प्रभाव और विलंबता को संतुलित करने के लिए सुपरट्रेंड सूचक के पैरामीटर का अनुकूलन करें।
अन्य सहायक संकेतकों को जोड़ें, जैसे कि लेन-देन का संकेत, सिग्नल को और अधिक सत्यापित करने के लिए।
भावुकता के संकेतकों, समाचारों और अन्य कारकों के साथ, संभावित मोड़ को निर्धारित करें।
मशीन लर्निंग के साथ गतिशील अनुकूलन पैरामीटर
यह रणनीति दोहरी चलती औसत और सुपरट्रेंड सूचक के लाभों को एकीकृत करती है, जिससे रुझानों का पता लगाया जा सकता है और त्रुटि संकेतों को फ़िल्टर किया जा सकता है। पैरामीटर अनुकूलन और सहायक सूचक सत्यापन के माध्यम से, रणनीति प्रभाव में निरंतर सुधार किया जा सकता है। हालांकि कुछ जोखिम हैं, लेकिन जोखिम प्रबंधन के माध्यम से नियंत्रित किया जा सकता है। यह रणनीति एक मात्रात्मक तरीके से व्यापार को व्यवस्थित करने के लिए उपयुक्त है।
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"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/
// © bhavikmota
//@version=4
strategy("EMA & Supertrend", overlay = true)
//length = input(9, minval=1)
//ema1 = ema(close, length)
//ema2 = ema(ema1, length)
//ema3 = ema(ema2, length)
//shortest = ema(close, 20)
//short = ema(close, 50)
//longer = ema(close, 100)
//longest = ema(close, 200)
//for Ema1
len1 = input(21, minval=1)
//src1 = input(close)
ema1 = ema(close,len1)
plot(ema1, color=color.red, linewidth=1)
//for Ema2
len2 = input(55, minval=1)
//src2 = input(close)
ema2 = ema(close,len2)
plot(ema2, color=color.green, linewidth=1)
//for Ema3
len3 = input(200, minval=1)
//src3 = input(close)
ema3 = ema(close,len3)
plot(ema3, color=color.blue, linewidth=1)
//for Ema4
len4 = input(233, minval=1)
//src4 = input(close)
ema4 = ema(close,len4)
plot(ema4, color=color.black, linewidth=1)
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=true)
highlighting = input(title="Highlighter 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)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")
//Trading logic
Enterlong = crossover(ema1,ema2) or (close>ema1 and close>ema2 and ema1>ema2) and close>ema4// positive ema crossover
Exitlong = crossunder(close,ema2) // candle closes below supertrend
Entershort = crossunder(ema1,ema2) or (close<ema1 and close<ema2 and ema2<ema1) and close<ema4// negative ema crossover
Exitshort = crossover(close,ema2) // candle closes above supertrend
//Execution Logic - Placing Order
start = timestamp(2008,1,1,0,0)
if time>= start
strategy.entry("long", strategy.long, when=Enterlong)
strategy.close("long",when=Exitlong)
//strategy.entry("short",strategy.short,100,when=Entershort)
//strategy.close("short",when=Exitshort)