यह रणनीति बाजार के रुझानों को निर्धारित करने के लिए विभिन्न अवधियों की दो ईएमए लाइनों के बीच क्रॉसओवर की गणना करके ट्रेडिंग सिग्नल उत्पन्न करती है। यह लंबी स्थिति खोलती है जब छोटी अवधि की ईएमए लंबी अवधि की ईएमए से पार हो जाती है, जो एक अपट्रेंड का संकेत देती है, और यह बंद हो जाती है जब छोटी अवधि की ईएमए लंबी अवधि की ईएमए से नीचे जाती है, जो एक डाउनट्रेंड का संकेत देती है।
यह रणनीति मुख्य रूप से डबल ईएमए लाइनों के स्वर्ण क्रॉस और मृत्यु क्रॉस सिद्धांत को लागू करती है। डबल ईएमए लाइनों में एक लंबा ईएमए और एक छोटा ईएमए होता है। लघु ईएमए पैरामीटर 10 दिनों और लंबे ईएमए पैरामीटर को 21 दिनों पर सेट किया जाता है।
जब शॉर्ट ईएमए लंबे ईएमए को पार करता है, तो एक खरीद संकेत उत्पन्न होता है। जब शॉर्ट ईएमए लंबे ईएमए से नीचे पार करता है, तो एक बिक्री संकेत उत्पन्न होता है। रणनीति विकास दर की सीमाएं भी निर्धारित करती है, केवल जब विकास सकारात्मक सीमा से अधिक हो और केवल जब गिरावट नकारात्मक सीमा से अधिक हो तो लंबी स्थिति खोलती है।
विशेष रूप से, खरीद की स्थिति तब होती है जब शॉर्ट ईएमए लंबे ईएमए से अधिक होता है और स्टॉक वृद्धि दर सकारात्मक सीमा से अधिक होती है। बंद स्थिति की स्थिति तब होती है जब शॉर्ट ईएमए लंबे ईएमए से कम होता है और स्टॉक वृद्धि दर नकारात्मक सीमा से नीचे आती है।
समग्र रणनीति अपेक्षाकृत सरल और विश्वसनीय है, कीमत के रुझानों को निर्धारित करने के लिए डबल ईएमए क्रॉसओवर का उपयोग करना और ट्रेडिंग सिग्नल उत्पन्न करने के लिए विकास दर की सीमाएं निर्धारित करना। एकल लाइन क्रॉसओवर की तुलना में, यह कुछ झूठे संकेतों को फ़िल्टर कर सकता है। लेकिन ईएमए लाइनों में खुद में पिछड़ने वाले मुद्दे हैं। अन्य संकेतकों या गतिशील पैरामीटर समायोजन को मिलाकर रणनीति प्रदर्शन में और सुधार किया जा सकता है।
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2) useTimeLimit = input(defval = false, title = "Use Start Time Limiter?") startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1) startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1) startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1) startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1) startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1) startTimeOk() => true lenght0 = input(10) lenght1 = input(21) source = close EmaShort = ema(ema(source, lenght0), lenght0) EmaLong = ema(ema(source, lenght1),lenght1) plot(EmaShort, color=red) plot(EmaLong, color=purple) growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2) thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01) thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001) if( startTimeOk() ) buy_condition = EmaShort > EmaLong and growth > thresholdUp buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown strategy.entry("buy", strategy.long, comment="buy", when=buy_condition) strategy.close(id='buy', when=buy_exit_condition)