یہ حکمت عملی ای ایم اے اور مجموعی حجم کے اشارے کو جوڑتی ہے ، جو رجحانات کا تعین کرنے کے لئے ان کے کراس اوور حالات کی بنیاد پر خرید اور فروخت کے سگنل تیار کرتی ہے۔ یہ ایک عام رجحان کی پیروی کرنے والی حکمت عملی سے تعلق رکھتا ہے ، جو طویل مدتی مارکیٹ کی سمتوں کو ٹریک کرتا ہے۔
50 دن کے ای ایم اے اور 100 دن کے مجموعی حجم کے اشارے کا حساب لگایا جاتا ہے۔ جب ای ایم اے نیچے سے مجموعی حجم سے اوپر کی طرف بڑھتا ہے تو ، خریدنے کا اشارہ لانگ ہونے کے لئے تیار کیا جاتا ہے۔ جب ای ایم اے اوپر سے مجموعی حجم سے نیچے کی طرف بڑھتا ہے تو ، فروخت کا اشارہ مختصر ہونے کے لئے تیار کیا جاتا ہے۔
پوزیشنوں کے دوران ، فکسڈ اسٹاپ نقصان اور منافع حاصل کرنے کی حکمت عملی نافذ کی جاتی ہے۔ اسٹاپ نقصان لاگ ان قیمت سے 8٪ نیچے مقرر کیا جاتا ہے۔ لاگ ان قیمت سے 8٪ زیادہ منافع حاصل کیا جاتا ہے ، جب قیمت منافع حاصل کرنے کی سطح تک پہنچ جاتی ہے تو جزوی پوزیشن بند ہوجاتی ہے۔
اس حکمت عملی میں رجحان اشارے ای ایم اے اور فنڈز کے بہاؤ کے اشارے کی مجموعی حجم کو یکجا کیا گیا ہے ، جس سے درمیانی اور طویل مدتی رجحانات کی مؤثر طریقے سے نشاندہی کرنے کے لئے قیمت اور حجم دونوں کی معلومات کا فائدہ اٹھایا جاسکتا ہے۔ فکسڈ منافع لینے اور اسٹاپ نقصان موثر ہے اور خطرات پر قابو پانے کے دوران جزوی منافع کو مقفل کرنے میں مدد کرتا ہے۔
ای ایم اے کی مدت کو مختلف مصنوعات کے لئے آزادانہ طور پر ایڈجسٹ کیا جاسکتا ہے۔ لکیری تجارت کے لئے لمبی اور مختصر تجارت دونوں کو نافذ کیا جاتا ہے۔ بیک ٹسٹ رجحانات کی مدت کے دوران اچھی کارکردگی کا مظاہرہ کرتے ہیں۔
متحرک اوسطوں پر زیادہ انحصار کرنے سے رینج سے وابستہ استحکام کے دوران whipsaws کا نتیجہ نکل سکتا ہے۔ فکسڈ منافع لینے اور اسٹاپ نقصان سے بھی قبل از وقت باہر نکلنے یا بڑے پیمانے پر اسٹاپ آؤٹ ہوسکتے ہیں۔ صرف قیمت اور حجم کے عوامل کو دوسرے عناصر کے بغیر سمجھا جاتا ہے۔
متحرک اوسط ادوار کو بڑھانا جھوٹے سگنل کو کم کرسکتا ہے۔ اتار چڑھاؤ ، آر ایس آئی جیسے اضافی اشارے بھی فیصلوں میں مدد کرسکتے ہیں۔ ٹریل اسٹاپ ، متحرک باہر نکلنے وغیرہ کے ذریعہ منافع لینے اور نقصان کو روکنے کے طریقہ کار کو بہتر بنانا فائدہ مند ہوسکتا ہے۔
بہترین ترتیبات تلاش کرنے کے لئے ای ایم اے پیرامیٹر کے مجموعوں کو ٹیسٹ اور بہتر بنائیں.
ایک مجموعی نظام بنانے کے لئے دیگر تکنیکی اشارے شامل کریں.
مشین لرننگ کا اطلاق رجحانات کی پیشن گوئی اور EMA کارکردگی کو بہتر بنانے کے لئے.
ٹریل اسٹاپس، متحرک باہر نکلنے وغیرہ کو یکجا کرکے منافع لینے اور نقصان کو روکنے کی حکمت عملی کو بہتر بنائیں.
متحرک پوزیشن سائزنگ کے لیے کیپٹل مینجمنٹ ماڈیولز متعارف کرانا۔
حکمت عملی مجموعہ بنانے کے لئے مصنوعات کی خصوصیات کی بنیاد پر پیرامیٹرز کو اپنی مرضی کے مطابق کریں.
رجحان کی نشاندہی کے لئے ای ایم اے اور حجم کو جوڑنے کی حکمت عملی کا خیال واضح ہے۔ لیکن حرکت پذیر اوسط اور فکسڈ آؤٹ پٹ پر زیادہ انحصار کرنے میں نقائص ہیں۔ مزید فیصلے کے اشارے شامل کرنا اور آؤٹ پٹ کو بہتر بنانا استحکام کو بہتر بنا سکتا ہے۔ مجموعی طور پر یہ رجحان کی نگرانی کے لئے قیمت اور حجم کے اعداد و شمار کو استعمال کرنے کا خیال فراہم کرتا ہے۔
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 2h basePeriod: 15m 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/ // © mohanee //@version=4 strategy("EMA_cumulativeVolume_crossover[Strategy]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000) emaLength= input(50, title="EMA Length", minval=1, maxval=200) cumulativePeriod = input(100, title="cumulative volume Period", minval=1, maxval=200) riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(8,title="Stop Loss",minval=1) takePartialProfits=input(false, title="take partial profits (percentage same as stop loss)") tradeDirection=input(title="Trade Direction", defval="LONG", options=["LONG", "SHORT"]) avgPrice = (high + low + close) / 3 avgPriceVolume = avgPrice * volume cumulPriceVolume = sum(avgPriceVolume, cumulativePeriod) cumulVolume = sum(volume, cumulativePeriod) vwapValue = cumulPriceVolume / cumulVolume emaVal=ema(close, emaLength) plot(emaVal, title="EMA", color=color.green, transp=25) plot(vwapValue, title="Cumulate Volumne / VWAP", color=color.orange, linewidth=2, transp=25) bgcolor(emaVal>vwapValue?color.blue:color.purple) //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 strategy.entry(id="LE",comment="LE", long=true, qty=qty1, when=crossover(emaVal, vwapValue) and (tradeDirection=="LONG") ) //emaVal>vwapValue and crossover(close , emaVal) //stoploss stopLossVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00 //draw initil stop loss plot(strategy.position_size>=1 ? stopLossVal : na, color = color.purple , style=plot.style_linebr, linewidth = 2, title = "stop loss") //partial exits takeProfit= strategy.position_size>=1 ? (strategy.position_avg_price * (1+(stopLoss*0.01) )) : ( close[1] * 2 ) if(takePartialProfits==true) strategy.close(id="LE", comment="Partial"+tostring(close-strategy.position_avg_price, "###.##") , qty=strategy.position_size/3 , when = (tradeDirection=="LONG" ) and close>takeProfit and crossunder(close, emaVal) ) //close<close[1] and close[1]<close[2] and close[2]<close[3]) strategy.close(id="LE" , comment="LE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when=crossunder(emaVal, vwapValue) and (tradeDirection=="LONG") ) strategy.close(id="LE" , comment="SL Exit Loss="+tostring(close-strategy.position_avg_price, "###.##"), when= close < stopLossVal and (tradeDirection=="LONG") ) //for short you dont have to wait crossodown of ema, falling is speed , so just check if close crossing down vwapVal strategy.entry(id="SE",comment="SE", long=false, qty=qty1, when=(close<vwapValue and close<open and close[1] < vwapValue and close[1]<open[1] and close<close[1]) and emaVal>=vwapValue and (tradeDirection=="SHORT") ) //emaVal>vwapValue and crossover(close , emaVal) //stoploss stopLossValUpside= abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ? (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00 //draw initil stop loss plot(abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ? stopLossValUpside : na, color = color.purple , style=plot.style_linebr, linewidth = 2, title = "stop loss") //partial exits shortTakeProfit= abs(strategy.position_size)>=1 and tradeDirection=="SHORT" ? (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00 if(takePartialProfits==true) strategy.close(id="SE", comment="Partial" , qty=strategy.position_size/3 , when = (tradeDirection=="SHORT" ) and close<shortTakeProfit ) //close<takeProfit and (emaVal - close)>8 ) //strategy.close(id="SE" , comment="SE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when=crossover(emaVal, vwapValue) and (tradeDirection=="SHORT") ) strategy.close(id="SE" , comment="SE Exit Points="+tostring(close-strategy.position_avg_price, "###.##"), when= abs(strategy.position_size)>=1 and ( (emaVal<vwapValue and close>vwapValue and open>vwapValue and close>open ) or (crossover(emaVal,vwapValue)) ) and (tradeDirection=="SHORT") ) strategy.close(id="SE" , comment="SL Exit Loss="+tostring(close-strategy.position_avg_price, "###.##"), when= abs(strategy.position_size)>=1 and close > stopLossValUpside and (tradeDirection=="SHORT" ) )