ڈبل حرکت پذیر اوسط کراس اوور حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-11 15:21:58
ٹیگز:

img

جائزہ

ڈبل حرکت پذیر اوسط کراس اوور حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو تجارت کے اشارے کے طور پر مختلف ادوار کے دو حرکت پذیر اوسط کے کراس اوور کا استعمال کرتی ہے۔ جب تیز ایم اے سست ایم اے سے اوپر یا نیچے عبور کرتا ہے تو یہ لمبی یا مختصر پوزیشنوں میں داخل ہوتا ہے اور کراس اوور کے بعد رجحان کی سمت کا تعین کرتا ہے۔ یہ غیر ضروری تجارتی تعدد کو کم کرتے ہوئے درمیانی مدتی رجحانات کو پکڑ سکتا ہے۔

حکمت عملی منطق

اس حکمت عملی میں دو حرکت پذیر اوسط استعمال ہوتے ہیں: قلیل مدتی قیمت کی نقل و حرکت کو پکڑنے کے لئے ایک مختصر مدت (جیسے 15 ادوار) کے ساتھ ایک تیز رفتار ایم اے ، اور اہم رجحان کی سمت کی نشاندہی کرنے کے لئے ایک لمبی مدت (جیسے 21 ادوار) کے ساتھ ایک سست ایم اے۔ تجارتی سگنل دونوں ایم اے کے مابین کراس اوور سے پیدا ہوتے ہیں۔ سست ایم اے کے اوپر تیز رفتار ایم اے کراسنگ خرید سگنل دیتی ہے ، جبکہ نیچے تیز رفتار ایم اے کراسنگ فروخت سگنل دیتی ہے۔

ایم اے کی مدت کے مجموعوں کو ایڈجسٹ کرکے ، حکمت عملی رجحانات کو پکڑنے کے لئے ٹائم فریم کو ایڈجسٹ کرسکتی ہے۔ مختصر ایم اے کمبو مختصر مدت کے جھولوں کو نشانہ بناتے ہیں جبکہ طویل ایم اے کمبو شور کو فلٹر کرتے ہیں اور صرف طویل مدتی رجحانات پر توجہ دیتے ہیں۔

اسٹریٹجی میں رسک مینجمنٹ ماڈیولز بھی شامل ہیں جن میں منافع ، اسٹاپ نقصان اور ٹریلنگ اسٹاپ نقصان شامل ہیں۔ یہ انفرادی تجارتوں کے زیادہ سے زیادہ منافع / نقصان کو محدود کرنے میں مدد کرتے ہیں اور مجموعی طور پر خطرہ رکھتے ہیں۔

فوائد

ڈبل ایم اے کی حکمت عملی میں مندرجہ ذیل فوائد ہیں:

  1. سادہ منطق اور سمجھنے / لاگو کرنے کے لئے آسان؛
  2. مارکیٹ کے حالات کو ایڈجسٹ کرنے کے لئے لچک
  3. کم تجارتی سگنل سے استحکام؛
  4. اسٹاپ نقصانات کے ذریعے مؤثر رسک کنٹرول؛
  5. ایم اے، خطرے کے پیرامیٹرز وغیرہ پر اصلاحات کی آسانی

خطرات

اس کے علاوہ کچھ خطرات پر بھی غور کرنا چاہئے:

  1. حد سے زیادہ کراس اوور اور رینج سے منسلک مارکیٹوں کے دوران ٹریڈنگ کی تعدد
  2. تاخیر سے چلنے والے ایم اے قیمتوں کے الٹ پوائنٹس کو یاد کر سکتے ہیں اور وقت میں نقصان کو روکنے میں ناکام ہوسکتے ہیں۔
  3. غیر ضروری نقصانات کے نتیجے میں جھوٹے بریک آؤٹ کے لئے کمزور؛
  4. عام قیمتوں کی نگرانی کی عدم درستگی کی وجہ سے ایم اے کی تاخیر.

ان کمزوریوں کو فلٹرنگ سگنل، ٹریلنگ سٹاپ نقصان وغیرہ جیسے اصلاحات کے ذریعے کم کیا جا سکتا ہے.

بہتر مواقع

اسٹریٹیجی کو ایسے پہلوؤں میں بہتر بنایا جاسکتا ہے جیسے:

  1. حجم یا اتار چڑھاؤ پر فلٹرز کا اضافہ کرنا تاکہ whipsaws سے بچ سکے۔
  2. مختلف مصنوعات اور ٹائم فریموں کے مطابق زیادہ سے زیادہ ایم اے اقسام اور ٹھیک ٹوننگ ادوار/فارمولے کی جانچ کرنا۔
  3. ایم اے کی اقسام جیسے ای ایم اے، ایل ڈبلیو ایم اے کا جائزہ لینا تاکہ قیمتوں کا تیزی سے سراغ لگایا جاسکے۔
  4. مشین لرننگ کے ساتھ ایم اے ٹوننگ اور سٹاپ نقصان سائزنگ کو خودکار کرنا۔
  5. متبادل سٹاپ نقصان کی تکنیک جیسے گپ، اوسط قیمت، لوڈشیلڈر۔

ان اضافوں سے جیت کی شرح میں نمایاں اضافہ، خطرے سے ایڈجسٹ منافع کی توقع ہے۔

نتیجہ

مجموعی طور پر ، دوہری حرکت پذیر اوسط کراس اوور حکمت عملی سادگی ، لچک اور قابو پانے والے خطرات پیش کرتی ہے۔ اس کے نفاذ اور اصلاح کی آسانی اسے ایک مثالی ابتدائی مقدار کی حکمت عملی بناتی ہے۔ بار بار جانچ اور ٹیوننگ کے ساتھ ، اس میں وقت کے ساتھ ساتھ ایک مضبوط نظام میں تیار ہونے کی اسناد ہیں۔


/*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)

مزید