یہ حکمت عملی مختلف ادوار کی 3 ای ایم اے لائنوں پر مبنی ہے۔ یہ موجودہ رجحان کی سمت کا اندازہ اس بات پر لگاتا ہے کہ آیا قیمت ای ایم اے لائنوں سے اوپر ہے۔ جب قلیل مدتی ای ایم اے لائن طویل مدتی ای ایم اے لائن سے اوپر عبور کرتی ہے تو ، خرید کا اشارہ پیدا ہوتا ہے۔ جب قلیل مدتی ای ایم اے لائن طویل مدتی ای ایم اے لائن سے نیچے عبور کرتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔ یہ حکمت عملی رجحان کو ٹریک کرتی ہے اور رجحان کے الٹ جانے پر وقت میں پوزیشن بند کرتی ہے۔
اس حکمت عملی میں 3 ای ایم اے لائنیں استعمال کی جاتی ہیں ، جو بالترتیب 10 دن ، 20 دن اور 50 دن کی ہیں۔ فیصلہ کرنے کے قواعد یہ ہیں:
جب 10 دن کی ای ایم اے اور 20 دن کی ای ایم اے دونوں 50 دن کی ای ایم اے سے اوپر ہوں تو اسے اپ ٹرینڈ کے طور پر بیان کیا جاتا ہے۔
جب 10 دن کے EMA اور 20 دن کے EMA دونوں 50 دن کے EMA سے نیچے ہوں تو اسے نیچے کی طرف رجحان کے طور پر بیان کیا جاتا ہے۔
جب قلیل مدتی EMA لائنیں (10 دن اور 20 دن) طویل مدتی EMA لائن (50 دن) سے اوپر عبور کرتی ہیں تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔
جب قلیل مدتی EMA لائنیں (10 دن اور 20 دن) طویل مدتی EMA لائن (50 دن) سے نیچے عبور کرتی ہیں تو ، فروخت کا اشارہ پیدا ہوتا ہے۔
اپ ٹرینڈ کے دوران طویل پوزیشن رکھیں اور ڈاؤن ٹرینڈ کے دوران مختصر پوزیشن رکھیں
موجودہ سمت کی پوزیشن بند کریں جب رجحان الٹ جائے (قلیل مدتی EMA طویل مدتی EMA کو عبور کرتا ہے) ۔
اسٹریٹجی منافع حاصل کرتی ہے تاکہ منافع حاصل کرنے کے لئے بروقت پوزیشن بند کی جائے اور طویل اور مختصر پوزیشنوں کے درمیان متبادل طور پر.
اس حکمت عملی کے فوائد یہ ہیں:
اس حکمت عملی میں کچھ خطرات بھی ہیں:
رینج سے منسلک مارکیٹوں کے دوران، ای ایم اے لائنز اکثر کراس کر سکتے ہیں، جس کے نتیجے میں اکثر کھلنے اور بند ہونے والی پوزیشنوں سے تجارتی اخراجات زیادہ ہوتے ہیں۔
ای ایم اے کی طرف سے رجحان کا تعین قیمت کے فرق کے بعد ناکام ہوسکتا ہے، اچھے داخلے کے مواقع کو کھو دیتا ہے.
خطرات کو بہتر بنانے کے لیے کچھ طریقے استعمال کیے جا سکتے ہیں:
کھلی پوزیشن کے قواعد کو مناسب طریقے سے نرم کیا جاسکتا ہے جب ای ایم اے قریب ہوتے ہیں تاکہ زیادہ تجارت سے بچنے کے لئے؛
ای ایم اے کی ناکامی سے بچنے کے لئے دیگر اشارے کو ملا کر رجحان کا تعین کریں۔
حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
پیرامیٹر کی اصلاح۔ زیادہ سے زیادہ پیرامیٹرز تلاش کرنے کے لئے مختلف EMA مدت کے مجموعے کا تجربہ کریں۔
تجارتی لاگت کو بہتر بنانا۔ غیر ضروری بار بار تجارت کو کم کرنے کے لئے کھلی پوزیشن کے قواعد کو مناسب طریقے سے بہتر بنائیں۔
سٹاپ نقصان کی حکمت عملی کو بہتر بنانا۔ واحد نقصان کو کنٹرول کرنے کے لئے معقول سٹاپ نقصان کی سطح مقرر کریں؛
دوسرے اشارے کو یکجا کریں۔ بہترین انٹری ٹائمنگ کا تعین کرنے میں مدد کے لئے MACD ، KDJ اور دیگر اشارے استعمال کریں۔
عام طور پر ، یہ حکمت عملی کافی آسان اور عملی ہے۔ یہ خطرات کو مؤثر طریقے سے کنٹرول کرنے کے لئے مناسب اسٹاپ نقصان کی حکمت عملی کے ساتھ رجحان کی سمت کا تعین کرنے کے لئے ای ایم اے کا استعمال کرتا ہے۔ اصلاح کے لئے بھی کمرے موجود ہیں۔ پیرامیٹر کی اصلاح ، اسٹاپ نقصان کی حکمت عملی اور دیگر اشارے کو جوڑ کر ، اس حکمت عملی کی کارکردگی کو مزید بہتر بنایا جاسکتا ہے۔
/*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") //-------------------------------------------------- //-------------------------------------------------- //--------------------------------------------------