
यह रणनीति ईएमए औसत रेखा के विभिन्न चक्रों के क्रॉसिंग के आधार पर प्रवृत्ति की दिशा का आकलन करती है, और इसके आधार पर बहु-कम-कम सिग्नल का निर्माण करती है। मुख्य रूप से 2 औसत रेखाओं का उपयोग किया जाता है, क्रमशः 10 वीं रेखा और 20 वीं रेखा। जब 10 वीं रेखा ऊपर से नीचे से 20 वीं रेखा को पार करती है, तो कम हो जाती है; जब 10 वीं रेखा नीचे से ऊपर तक 20 वीं रेखा को पार करती है, तो अधिक होती है। यह रणनीति मध्य-लंबी व्यापार रणनीति के अंतर्गत आती है।
इस रणनीति में दो ईएमए औसत रेखाओं का उपयोग किया जाता है, जिसमें 10 वीं और 20 वीं लाइन शामिल हैं। ईएमए औसत रेखा मूल्य की प्रवृत्ति की दिशा को अच्छी तरह से दर्शाती है। जब अल्पकालिक ईएमए रेखा नीचे से ऊपर की ओर लंबी ईएमए रेखा को पार करती है, तो यह संकेत देती है कि कीमतें नीचे से ऊपर की ओर बढ़ रही हैं, और यह एक मल्टी सिग्नल है। जब अल्पकालिक ईएमए रेखा ऊपर से नीचे की ओर लंबी ईएमए रेखा को पार करती है, तो यह संकेत देती है कि कीमतें ऊपर से नीचे की ओर बढ़ रही हैं।
यह रणनीति एक ही समय में अस्थिरता के अधिकतम और न्यूनतम मानों को जोड़ती है ताकि कुछ ट्रेडिंग सिग्नल को फ़िल्टर किया जा सके। केवल एक निश्चित मात्रा में कीमतों में उतार-चढ़ाव के बाद ही ट्रेडिंग सिग्नल जारी किए जाते हैं। यह कुछ हद तक कुछ झूठे संकेतों को फ़िल्टर कर सकता है।
विशेष रूप से, यह रणनीति यह निर्धारित करने के लिए कि क्या कीमतों की प्रवृत्ति का गठन किया गया है या नहीं, कीमतों के चरम मूल्य और न्यूनतम मूल्य के आगमन के समय को ट्रैक करके। वास्तविक व्यापारिक संकेत तब जारी किए जाते हैं जब चरम मूल्य या न्यूनतम मूल्य एक निश्चित समय तक पहुंच जाता है।
इस रणनीति के कुछ फायदे हैंः
इस रणनीति के कुछ जोखिम भी हैं:
जोखिम को निम्न तरीकों से कम किया जा सकता हैः
इस रणनीति को निम्नलिखित दिशाओं में और अधिक अनुकूलित किया जा सकता हैः
ईएमए क्रॉसिंग रणनीति एक सरल और व्यावहारिक ट्रेंड ट्रैकिंग रणनीति है। यह ईएमए औसत का उपयोग करता है ताकि एक बड़ी प्रवृत्ति की दिशा का पता लगाया जा सके, और फिर कीमत में उतार-चढ़ाव के फ़िल्टर सिग्नल के साथ मिलकर ट्रेडिंग निर्णय लिया जा सके। रणनीति को समझना और पैरामीटर को समायोजित करना आसान है, और इसे मध्यम-लघु-रेखा व्यापार के लिए अनुकूलित किया जा सकता है। आगे के अनुकूलन के साथ, यह एक लंबी अवधि के लिए उपयोग करने लायक एक मात्रात्मक रणनीति बन सकती है।
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("PierceMAStrat", overlay=true)
lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)
emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)
ascent = if emaLen1[1] < emaLen1[0]
true
else
false
descent = if emaLen1[1] > emaLen1[0]
true
else
false
TimeSinceAscensionStart = if ascent == true
barssince(descent == true)
else
0
StartUp = if TimeSinceAscensionStart < 1
true
else
false
StartDown = if TimeSinceAscensionStart < 1
false
else
true
AscentBarCounter = barssince(StartUp == true)
DescentBarCounter = barssince(StartDown == true)
MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
true
else
false
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
true
else
false
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
true
else
false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
true
else
false
//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)
if longCond == true
strategy.entry("LONG", strategy.long)
if shortCond == true
strategy.entry("SHORT", strategy.short)
plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)
//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)