यह रणनीति विभिन्न अवधियों के साथ ईएमए लाइनों के क्रॉसओवर के आधार पर प्रवृत्ति दिशा निर्धारित करती है और तदनुसार लंबे और छोटे संकेत उत्पन्न करती है। यह मुख्य रूप से दो चलती औसत - 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)