یہ حکمت عملی ٹریکنگ تجارت کے لئے مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے SMA اور EMA کے دو گروپوں کے چلتے ہوئے اوسط کے درمیان کراس اوور کا حساب لگاتی ہے۔
یہ ایک تیز رفتار اور ایک سست حرکت پذیر اوسط جوڑی کا استعمال کرتا ہے۔ جب تیز لائن سست لائن سے اوپر گزرتی ہے تو یہ طویل ہوجاتا ہے ، اور نیچے کی طرف کراس اوور پر مختصر ہوجاتا ہے۔ جب قیمت سست لائن سے نیچے گرتی ہے یا تیز لائن سے اوپر بڑھتی ہے تو باہر نکل جاتا ہے۔ ایم اے لمبائی ، بار بندش وغیرہ کی تخصیص پیرامیٹر کی اصلاح کی اجازت دیتی ہے۔
اس دوہری ایم اے حکمت عملی کا فائدہ دو متحرک ایم اے پر مبنی آسان اور واضح اصول ہیں۔ ای ایم اے کا استعمال معاوضوں کو پکڑنے میں زیادہ حساسیت فراہم کرتا ہے۔ لیکن رینج سے منسلک مارکیٹوں کے دوران بھی آسانی سے وِپساؤس ہوتے ہیں۔
عام طور پر ، ڈبل ایم اے کراس اوور ٹریکنگ حکمت عملی رفتار کی سمت میں تجارت کے لئے رجحان سازی کی مارکیٹوں کے لئے موزوں ہے۔ لیکن پیرامیٹرز کی مناسب ترتیب ، سخت اسٹاپ نقصان اور پوزیشن سائزنگ اس حکمت عملی کے طویل مدتی استحکام کے لئے انتہائی ضروری ہے۔
/*backtest start: 2023-08-11 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Moving Average Strategy of BiznesFilosof", shorttitle="MAS of BiznesFilosof", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0) //Period startY = input(title="Start Year", defval = 2011) startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12) startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31) finishY = input(title="Finish Year", defval = 2050) finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12) finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31) //finish = input(2019, 02, 28, 00, 00) timestart = timestamp(startY, startM, startD, 00, 00) timefinish = timestamp(finishY, finishM, finishD, 23, 59) window = time >= timestart and time <= timefinish ? true : false // Lenghth strategy lma1 = input(title="Length MA1", defval = 21, minval=1) exponential1 = input(false, title="exponential") lma2 = input(title="Length MA2", defval = 1, minval=1) exponential2 = input(false, title="exponential") lbars = input(title="Length bars close", defval = 0, minval=0) ma1 = exponential1 ? ema(close, lma1) : sma(close, lma1) ma2 = exponential2 ? ema(close, lma2) : sma(close, lma2) //source = close source = ma2 //open strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(ma2, ma1) and window) strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(ma2, ma1) and window) if crossunder(source, ma1) and strategy.position_size > 0 strategy.close_all() if crossunder(ma2[lbars], ma1[lbars]) and strategy.position_size > 0 and lbars != 0 strategy.close_all() if crossover(source, ma1) and strategy.position_size < 0 strategy.close_all() if crossover(ma2[lbars], ma1[lbars]) and strategy.position_size < 0 and lbars != 0 strategy.close_all() src = close src1 = high src2 = low maH = exponential1 ? ema(src1, lma1) : sma(src1, lma1) maL = exponential1 ? ema(src2, lma1) : sma(src2, lma1) maColor = src>maH ? green : src<maL ? red : blue plot(ma1, title="MA1", color=maColor, linewidth=2, style=line) plot(ma2, title="MA2", color=gray, linewidth=1, style=line)