इस रणनीति का मुख्य विचार कई घातीय चलती औसत (ईएमए) के क्रॉसओवर के आधार पर ट्रेडिंग सिग्नल उत्पन्न करना है। यह तब लंबा हो जाता है जब कम अवधि का ईएमए नीचे से लंबी अवधि के ईएमए को पार करता है, और लंबी अवधि के ईएमए के तहत कम अवधि के ईएमए को पार करने पर पदों को बंद करता है। यह रणनीति कई ईएमए अवधि को कॉन्फ़िगर करने की अनुमति देती है, और प्रत्येक ईएमए को स्वतंत्र रूप से सक्षम किया जा सकता है। रणनीति सभी सक्षम ईएमए पर क्रॉसओवर का व्यापार करेगी।
बहु समय सीमा गतिशील ईएमए ट्रेडिंग रणनीति
रणनीति में 8 ईएमए अवधि निर्धारित की गई है - 8 दिन, 13 दिन, 21 दिन, 34 दिन, 55 दिन, 89 दिन, 144 दिन और 233 दिन। इन ईएमए को स्वतंत्र रूप से सक्षम या अक्षम किया जा सकता है।
यह लंबे समय के संकेत उत्पन्न करता है जब कम अवधि के ईएमए नीचे से लंबे समय के ईएमए को पार करता है। यह बाहर निकलने के संकेत उत्पन्न करता है जब कम अवधि के ईएमए ऊपर से लंबे समय के ईएमए के नीचे पार करता है। इसलिए यदि दो ईएमए सक्षम हैं, तो कम ईएमए > longerEMA लंबा संकेत है, कम ईएमए < longerEMA बाहर निकलने का संकेत है।
उदाहरण के लिए, यदि 55 दिनों के ईएमए और 89 दिनों के ईएमए सक्षम हैं, तो 55 दिनों के ईएमए 89 दिनों के ईएमए को पार करते समय रणनीति लंबी हो जाती है, और जब 55 दिनों के ईएमए 89 दिनों के ईएमए के नीचे पार करते हैं तो बाहर निकल जाती है। यह रणनीति को अधिक समय सीमा से कम या इसके विपरीत, उपयोग किए गए ईएमए संयोजनों को गतिशील रूप से समायोजित करने की अनुमति देता है।
स्थिति आकार को खाता इक्विटी विभाजित बंद विभाजित सक्षम ईएमए की संख्या से सेट किया जाता है। यह सुनिश्चित करता है कि प्रत्येक ईएमए क्रॉसओवर पर स्थिति आकार समान हैं।
ईएमए को अन्य संकेतकों के साथ जोड़ने पर विचार करें जैसे कि संकेतों को फ़िल्टर करने के लिए चैनल या ऑसिलेटर, या प्रवृत्ति और उलट संकेतकों को शामिल करना। ईएमए मापदंडों का अनुकूलन भी बहुत महत्वपूर्ण है, विभिन्न बाजारों के लिए ट्यूनिंग की आवश्यकता है।
इस रणनीति को कई पहलुओं में अनुकूलित किया जा सकता हैः
सर्वोत्तम ईएमए संयोजनों को खोजने के लिए पैरामीटर स्कैनिंग और पैदल आगे विश्लेषण के माध्यम से ईएमए मापदंडों का अनुकूलन करें।
झूठे संकेतों से बचने के लिए ईएमए क्रॉसओवर पर फ़िल्टर स्थितियां जोड़ें जैसे वॉल्यूम फ़िल्टर, अस्थिरता फ़िल्टर आदि।
पूरकता का लाभ उठाने के लिए एमएसीडी, केडीजे, बोलिंगर बैंड जैसे अन्य संकेतकों के साथ संयोजन करें।
बाजार की अस्थिरता या प्रवृत्ति की ताकत के आधार पर प्रत्येक ईएमए पर स्थिति आकार को गतिशील रूप से समायोजित करें।
सर्वोत्तम जोखिम-लाभ अनुपात प्राप्त करने के लिए स्टॉप लॉस का अनुकूलन करें और लाभ स्तर लें।
कुल मिलाकर यह एक बहुत ही सरल और सीधा रणनीति है जो अल्पकालिक और मध्यमकालिक रुझानों को पकड़ने के लिए ईएमए क्रॉसओवर से संकेत उत्पन्न करती है। इसका मुख्य लाभ उच्च विन्यास और लचीलेपन में निहित है ताकि व्यापारियों को उनके लिए उपयुक्त ईएमए का चयन करने की अनुमति मिल सके। हालांकि ईएमए अकेले गलत संकेत आसानी से दे सकता है जो सबसे बड़ा जोखिम है। अन्य संकेतकों और पैरामीटर अनुकूलन के साथ संयोजन से बेहतर व्यापार प्रदर्शन हो सकता है।
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Fan", shorttitle = "EMA Fan", overlay=true) // Revision: 1 // Author: @ToS_MavericK buyprice = 0.0 buyprice := buyprice[1] // === INPUT SMA === EMA1 = input(8) EMA2 = input(13) EMA3 = input(21) EMA4 = input(34) EMA5 = input(55) EMA6 = input(89) EMA7 = input(144) EMA8 = input(233) EnableEMA1 = input(true) EnableEMA2 = input(true) EnableEMA3 = input(true) EnableEMA4 = input(true) EnableEMA5 = input(true) EnableEMA6 = input(true) EnableEMA7 = input(true) EnableEMA8 = input(true) //Profit = input(defval = 5, type = integer, title = "Profit", minval = 1, step = 1) //StopLoss = input(defval = 15, type = integer, title = "StopLoss", minval = 1, step = 1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, 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 = 2012) 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 = 2020, title = "To Year", minval = 2012) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === SERIES SETUP === vEMA1 = ema(close, EMA1) vEMA2 = ema(close, EMA2) vEMA3 = ema(close, EMA3) vEMA4 = ema(close, EMA4) vEMA5 = ema(close, EMA5) vEMA6 = ema(close, EMA6) vEMA7 = ema(close, EMA7) vEMA8 = ema(close, EMA8) count = -1 if (EnableEMA1 == true) count := count + 1 if (EnableEMA2 == true) count := count + 1 if (EnableEMA3 == true) count := count + 1 if (EnableEMA4 == true) count := count + 1 if (EnableEMA5 == true) count := count + 1 if (EnableEMA6 == true) count := count + 1 if (EnableEMA7 == true) count := count + 1 if (EnableEMA8 == true) count := count + 1 // set position size Amount = 1 / (close * count) // === EXECUTION === strategy.entry("EMA1", strategy.long, qty = Amount, when = window() and crossover(vEMA1,vEMA2) and EnableEMA1 and EnableEMA2) strategy.close("EMA1", time > finish or crossunder(vEMA1,vEMA2)) strategy.entry("EMA2", strategy.long, qty = Amount, when = window() and crossover(vEMA2,vEMA3) and EnableEMA2 and EnableEMA3) strategy.close("EMA2", time > finish or crossunder(vEMA2,vEMA3)) strategy.entry("EMA3", strategy.long, qty = Amount, when = window() and crossover(vEMA3,vEMA4) and EnableEMA3 and EnableEMA4) strategy.close("EMA3", time > finish or crossunder(vEMA3,vEMA4)) strategy.entry("EMA4", strategy.long, qty = Amount, when = window() and crossover(vEMA4,vEMA5) and EnableEMA4 and EnableEMA5) strategy.close("EMA4", time > finish or crossunder(vEMA4,vEMA5)) strategy.entry("EMA5", strategy.long, qty = Amount, when = window() and crossover(vEMA5,vEMA6) and EnableEMA5 and EnableEMA6) strategy.close("EMA5", time > finish or crossunder(vEMA5,vEMA6)) strategy.entry("EMA6", strategy.long, qty = Amount, when = window() and crossover(vEMA6,vEMA7) and EnableEMA6 and EnableEMA7) strategy.close("EMA6", time > finish or crossunder(vEMA6,vEMA7)) strategy.entry("EMA7", strategy.long, qty = Amount, when = window() and crossover(vEMA7,vEMA8) and EnableEMA7 and EnableEMA8) strategy.close("EMA7", time > finish or crossunder(vEMA7,vEMA8)) plot(vEMA1, title = 'EMA1', color = red, linewidth = 2, style = line) // plot FastMA plot(vEMA2, title = 'EMA2', color = orange, linewidth = 2, style = line) // plot SlowMA plot(vEMA3, title = 'EMA3', color = yellow, linewidth = 2, style = line) // plot SlowMA plot(vEMA4, title = 'EMA4', color = green, linewidth = 2, style = line) // plot SlowMA plot(vEMA5, title = 'EMA5', color = teal, linewidth = 2, style = line) // plot SlowMA plot(vEMA6, title = 'EMA6', color = blue, linewidth = 2, style = line) // plot SlowMA plot(vEMA7, title = 'EMA7', color = maroon, linewidth = 2, style = line) // plot SlowMA plot(vEMA8, title = 'EMA8', color = white, linewidth = 2, style = line) // plot SlowMA //plot(long_stop, title = 'High-ATR', color = red, linewidth = 2, style = line) // plot SlowMA //plot(short_stop, title = 'Low+ATR', color = green, linewidth = 2, style = line) // plot SlowMA