यह रणनीति विभिन्न अवधियों की 3 ईएमए लाइनों पर आधारित है। यह वर्तमान प्रवृत्ति की दिशा का न्याय करती है कि क्या कीमत ईएमए लाइनों से ऊपर है। जब अल्पकालिक ईएमए लाइन लंबी अवधि की ईएमए लाइन से ऊपर पार करती है, तो एक खरीद संकेत उत्पन्न होता है। जब अल्पकालिक ईएमए लाइन लंबी अवधि की ईएमए लाइन से नीचे पार करती है, तो एक बिक्री संकेत उत्पन्न होता है। यह रणनीति प्रवृत्ति को ट्रैक करती है और ट्रेंड उलटने पर समय पर पदों को बंद करती है।
रणनीति में क्रमशः 10 दिन, 20 दिन और 50 दिन की 3 ईएमए लाइनें उपयोग की जाती हैं।
जब 10 दिन का ईएमए और 20 दिन का ईएमए दोनों 50 दिन के ईएमए से ऊपर होते हैं, तो इसे अपट्रेंड के रूप में परिभाषित किया जाता है;
जब 10 दिन का ईएमए और 20 दिन का ईएमए दोनों 50 दिन के ईएमए से नीचे होते हैं, तो इसे डाउनट्रेंड के रूप में परिभाषित किया जाता है;
जब अल्पकालिक ईएमए लाइनें (10-दिवसीय और 20-दिवसीय) दीर्घकालिक ईएमए लाइन (50-दिवसीय) से ऊपर जाती हैं, तो एक खरीद संकेत उत्पन्न होता है;
जब अल्पकालिक ईएमए लाइनें (10-दिवसीय और 20-दिवसीय) दीर्घकालिक ईएमए लाइन (50-दिवसीय) से नीचे जाती हैं, तो एक बिक्री संकेत उत्पन्न होता है;
अपट्रेंड के दौरान लंबी पोजीशन और डाउनट्रेंड के दौरान छोटी पोजीशन रखें;
रुझान उलटा होने पर वर्तमान दिशात्मक स्थिति को बंद करें (अल्पकालिक ईएमए दीर्घकालिक ईएमए को पार करता है) ।
यह रणनीति लाभ प्राप्त करने के लिए समय पर बंद होने वाली पदों को बंद करती है और लंबी और छोटी पदों के बीच बारी-बारी से बंद करती है।
इस रणनीति के लाभ इस प्रकार हैंः
इस रणनीति में कुछ जोखिम भी हैंः
सीमाबद्ध बाजारों के दौरान, ईएमए लाइनें अक्सर पार हो सकती हैं, जिसके परिणामस्वरूप अक्सर खुलने और बंद होने वाली पदों से उच्च व्यापार लागत हो सकती है;
ईएमए द्वारा प्रवृत्ति निर्धारण मूल्य अंतर के बाद विफल हो सकता है, अच्छे प्रवेश के अवसरों को खो देता है।
जोखिमों को अनुकूलित करने के लिए, कुछ तरीकों का उपयोग किया जा सकता हैः
खुले पदों के नियमों में उचित ढील दी जा सकती है जब ईएमए अतिव्यापार से बचने के लिए करीब होते हैं;
ईएमए विफलता से बचने के लिए अन्य संकेतकों को मिलाकर प्रवृत्ति निर्धारित करें।
रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
पैरामीटर अनुकूलन. इष्टतम पैरामीटर खोजने के लिए विभिन्न ईएमए अवधि संयोजनों का परीक्षण करें;
व्यापार लागत अनुकूलन. अनावश्यक बार-बार व्यापार को कम करने के लिए खुली स्थिति नियमों को ठीक से अनुकूलित करें;
स्टॉप लॉस रणनीति अनुकूलन। एकल हानि को नियंत्रित करने के लिए उचित स्टॉप लॉस स्तर सेट करें;
अन्य संकेतकों को मिलाएं। इष्टतम प्रवेश समय निर्धारित करने में सहायता के लिए एमएसीडी, केडीजे और अन्य संकेतकों का उपयोग करें।
सामान्य तौर पर, यह रणनीति काफी सरल और व्यावहारिक है। यह जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए उचित स्टॉप लॉस रणनीति के साथ प्रवृत्ति दिशा निर्धारित करने के लिए ईएमए का उपयोग करता है। अनुकूलन के लिए भी कमरे हैं। पैरामीटर अनुकूलन, स्टॉप लॉस रणनीति और अन्य संकेतकों को जोड़कर, इस रणनीति के प्रदर्शन में और सुधार किया जा सकता है।
/*backtest start: 2024-01-28 00:00:00 end: 2024-01-31 04:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_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/ // © mattehalen //@version=4 //study("EMA 10,20 59",overlay=true) strategy("EMA 10,20 59",overlay=true) infoBox = input(true, title="infoBox", type=input.bool) infoBox2 = input(false, title="infoBox2", type=input.bool) BuySellSignal_Bool = input(false, title="Buy & SellSignal", type=input.bool) infoBoxSize = input(title="infoBoxSize", defval=size.large, options=[size.auto, size.tiny, size.small, size.normal, size.large, size.huge]) ema1Value = input(10) ema2Value = input(20) ema3Value = input(59) maxLoss = input(3000) ema1 = ema(close,ema1Value) ema2 = ema(close,ema2Value) ema3 = ema(close,ema3Value) objcnt = 0 buyTitle = tostring(close[1]) myProfit = float(0) plot(ema1,title="ema1",color=color.red,linewidth=2) plot(ema2,title="ema2",color=color.green,linewidth=2) plot(ema3,title="ema3",color=color.black,linewidth=2) Buytrend = (ema1 and ema2 > ema3) and (ema1[1] and ema2[1] > ema3[1]) BarssinceBuyTrend = barssince(Buytrend) BarssinceSellTrend = barssince(not Buytrend) closeAtBuyTrend = close[1] bgcolor(Buytrend ? color.green : color.red,transp=70) BuySignal = Buytrend and not Buytrend[1] and BuySellSignal_Bool BuySignalOut = Buytrend and (crossunder(ema1,ema2)) and BuySellSignal_Bool BarssinceBuy = barssince(BuySignal) bgcolor(BuySignal ? color.green : na , transp=30) bgcolor(BuySignalOut ? color.black : na , transp=30) plot(BarssinceBuy,title="BarssinceBuy",display=display.none) SellSignal = not Buytrend and Buytrend[1] and BuySellSignal_Bool SellSignalOut = not Buytrend and (crossover(ema1,ema2)) and BuySellSignal_Bool BarssinceSell = barssince(SellSignal) bgcolor(SellSignal ? color.red : na , transp=30) bgcolor(SellSignalOut ? color.black : na , transp=30) plot(BarssinceSell,title="BarssinceSell",display=display.none) buyProfit = float(0) cntBuy =0 sellProfit = float(0) cntSell =0 buyProfit := Buytrend and not Buytrend[1]? nz(buyProfit[1]) + (close[BarssinceBuyTrend[1]]-close) : nz(buyProfit[1]) cntBuy := Buytrend and not Buytrend[1]? nz(cntBuy[1]) + 1: nz(cntBuy[1]) sellProfit := not Buytrend and Buytrend[1]? nz(sellProfit[1]) + (close-close[BarssinceSellTrend[1]]) : nz(sellProfit[1]) cntSell := not Buytrend and Buytrend[1]? nz(cntSell[1]) + 1 : nz(cntSell[1]) totalProfit = buyProfit + sellProfit // if (Buytrend and not Buytrend[1] and infoBox==true) // l = label.new(bar_index - (BarssinceBuyTrend[1]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuyTrend[1]]) + "\n" + "Profit = "+tostring(close[BarssinceBuyTrend[1]]-close) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.red,size=infoBoxSize) // if (not Buytrend and Buytrend[1] and infoBox==true) // l = label.new(bar_index - (BarssinceSellTrend[1]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSellTrend[1]]) + "\n" + "Profit = "+tostring(close-close[BarssinceSellTrend[1]]) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.green,size=infoBoxSize) // if (BuySignalOut and not BuySignalOut[1] and infoBox2==true) // // l = label.new(bar_index - (BarssinceBuy[0]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuy[0]]) + "\n" + "Profit = "+tostring(close-close[BarssinceBuy[0]]) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.purple,size=infoBoxSize // l = label.new(bar_index, na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuy[0]]) + "\n" + "Profit = "+tostring(close-close[BarssinceBuy[0]]) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.lime,size=infoBoxSize) // if (SellSignalOut and not SellSignalOut[1] and infoBox2==true) // // l = label.new(bar_index - (BarssinceSell[0]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSell[0]]) + "\n" + "Profit = "+tostring(close[BarssinceSell[0]]-close) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.purple,size=infoBoxSize) // l = label.new(bar_index, na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSell[0]]) + "\n" + "Profit = "+tostring(close[BarssinceSell[0]]-close) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.fuchsia,size=infoBoxSize) // l2 = label.new(bar_index, na, 'buyProfit in pip = '+tostring(buyProfit)+"\n"+ 'cntBuy = '+tostring(cntBuy) +"\n"+ 'sellProfit in pip = '+tostring(sellProfit)+"\n"+ 'cntSell = '+tostring(cntSell) +"\n"+ 'totalProfit in pip = '+tostring(totalProfit) , // color=totalProfit>0 ? color.green : color.red, // textcolor=color.white, // style=label.style_labeldown, yloc=yloc.abovebar, // size=size.large) // label.delete(l2[1]) //-------------------------------------------------- //-------------------------------------------------- if (Buytrend) strategy.close("short", comment = "Exit short") strategy.entry("long", true) strategy.exit("Max Loss", "long", loss = maxLoss) //if BuySignalOut // strategy.close("long", comment = "Exit Long") if (not Buytrend) // Enter trade and issue exit order on max loss. strategy.close("long", comment = "Exit Long") strategy.entry("short", false) strategy.exit("Max Loss", "short", loss = maxLoss) //if SellSignalOut // Force trade exit. //strategy.close("short", comment = "Exit short") //-------------------------------------------------- //-------------------------------------------------- //--------------------------------------------------