ڈبل حرکت پذیر اوسط کراس اوور حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو تجارت کے اشارے کے طور پر مختلف ادوار کے دو حرکت پذیر اوسط کے کراس اوور کا استعمال کرتی ہے۔ جب تیز ایم اے سست ایم اے سے اوپر یا نیچے عبور کرتا ہے تو یہ لمبی یا مختصر پوزیشنوں میں داخل ہوتا ہے اور کراس اوور کے بعد رجحان کی سمت کا تعین کرتا ہے۔ یہ غیر ضروری تجارتی تعدد کو کم کرتے ہوئے درمیانی مدتی رجحانات کو پکڑ سکتا ہے۔
اس حکمت عملی میں دو حرکت پذیر اوسط استعمال ہوتے ہیں: قلیل مدتی قیمت کی نقل و حرکت کو پکڑنے کے لئے ایک مختصر مدت (جیسے 15 ادوار) کے ساتھ ایک تیز رفتار ایم اے ، اور اہم رجحان کی سمت کی نشاندہی کرنے کے لئے ایک لمبی مدت (جیسے 21 ادوار) کے ساتھ ایک سست ایم اے۔ تجارتی سگنل دونوں ایم اے کے مابین کراس اوور سے پیدا ہوتے ہیں۔ سست ایم اے کے اوپر تیز رفتار ایم اے کراسنگ خرید سگنل دیتی ہے ، جبکہ نیچے تیز رفتار ایم اے کراسنگ فروخت سگنل دیتی ہے۔
ایم اے کی مدت کے مجموعوں کو ایڈجسٹ کرکے ، حکمت عملی رجحانات کو پکڑنے کے لئے ٹائم فریم کو ایڈجسٹ کرسکتی ہے۔ مختصر ایم اے کمبو مختصر مدت کے جھولوں کو نشانہ بناتے ہیں جبکہ طویل ایم اے کمبو شور کو فلٹر کرتے ہیں اور صرف طویل مدتی رجحانات پر توجہ دیتے ہیں۔
اسٹریٹجی میں رسک مینجمنٹ ماڈیولز بھی شامل ہیں جن میں منافع ، اسٹاپ نقصان اور ٹریلنگ اسٹاپ نقصان شامل ہیں۔ یہ انفرادی تجارتوں کے زیادہ سے زیادہ منافع / نقصان کو محدود کرنے میں مدد کرتے ہیں اور مجموعی طور پر خطرہ رکھتے ہیں۔
ڈبل ایم اے کی حکمت عملی میں مندرجہ ذیل فوائد ہیں:
اس کے علاوہ کچھ خطرات پر بھی غور کرنا چاہئے:
ان کمزوریوں کو فلٹرنگ سگنل، ٹریلنگ سٹاپ نقصان وغیرہ جیسے اصلاحات کے ذریعے کم کیا جا سکتا ہے.
اسٹریٹیجی کو ایسے پہلوؤں میں بہتر بنایا جاسکتا ہے جیسے:
ان اضافوں سے جیت کی شرح میں نمایاں اضافہ، خطرے سے ایڈجسٹ منافع کی توقع ہے۔
مجموعی طور پر ، دوہری حرکت پذیر اوسط کراس اوور حکمت عملی سادگی ، لچک اور قابو پانے والے خطرات پیش کرتی ہے۔ اس کے نفاذ اور اصلاح کی آسانی اسے ایک مثالی ابتدائی مقدار کی حکمت عملی بناتی ہے۔ بار بار جانچ اور ٹیوننگ کے ساتھ ، اس میں وقت کے ساتھ ساتھ ایک مضبوط نظام میں تیار ہونے کی اسناد ہیں۔
/*backtest start: 2022-12-10 00:00:00 end: 2023-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Silent Trader Strategy", shorttitle = "Silent Trader", overlay = true, pyramiding = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_value = 0.0675, initial_capital = 1000, currency = currency.USD, calc_on_order_fills = true, calc_on_every_tick = true) maFastSource = input(defval = ohlc4, title = "Fast MA Source") maFastLength = input(defval = 15, title = "Fast MA Period", minval = 1) maSlowSource = input(defval = ohlc4, title = "Slow MA Source") maSlowLength = input(defval = 21, title = "Slow MA Period", minval = 1) tradeInvert = input(defval = false, title = "Invert Trade Direction?") inpTakeProfit = input(defval = 100, title = "Take Profit percentage(0.1%)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na useTimeLimit = input(defval = true, title = "Use Start Time Limiter?") startYear = input(defval = 2018, 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() => inputTime = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute) timeOk = time > inputTime ? true : false r = (useTimeLimit and timeOk) or not useTimeLimit maFast = ema(maFastSource, maFastLength) maSlow = sma(maSlowSource, maSlowLength) fast = plot(maFast, title = "Fast MA", color = #26A69A, linewidth = 1, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = #EF5350, linewidth = 1, style = line, transp = 50) aboveBelow = maFast >= maSlow ? true : false tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false if( startTimeOk() ) enterLong = not tradeDirection[1] and tradeDirection exitLong = tradeDirection[1] and not tradeDirection strategy.entry( id = "Long", long = true, when = enterLong ) //strategy.close( id = "Long", when = exitLong ) enterShort = tradeDirection[1] and not tradeDirection exitShort = not tradeDirection[1] and tradeDirection strategy.entry( id = "Short", long = false, when = enterShort ) //strategy.close( id = "Short", when = exitShort ) strategy.exit("Exit Long", from_entry = "Long", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick) strategy.exit("Exit Short", from_entry = "Short", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)