MACD حرکت پذیر اوسط مجموعہ کراس پیریڈ متحرک رجحان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-19 10:48:11
ٹیگز:

img

جائزہ

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

حکمت عملی کا اصول

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

فوائد کا تجزیہ

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

خطرے کا تجزیہ اور حل

  1. ایم اے سی ڈی سگنلز میں تاخیر ہوتی ہے، جس سے سگنل کے اثرات قدرے خراب ہو سکتے ہیں۔
  • حل: سگنل کو پہلے سے پکڑنے کے لئے تیز اور سست حرکت پذیر اوسط کے درمیان فرق میں اضافہ کریں۔
  1. کراس سائیکل سگنل لازمی طور پر درست نہیں ہوتے اور حکمت عملیوں کو گمراہ کرسکتے ہیں۔
  • حل: اس بات کو یقینی بنانے کے لئے متحرک پوزیشن ایڈجسٹمنٹ میکانزم متعارف کروانا کہ مرکزی سائیکل کی حکمت عملی غالب ہو۔
  1. ملٹی فیکٹر مشترکہ حکمت عملیوں کا مجموعی استحکام ناکافی ہوسکتا ہے۔
  • حل: مجموعی طور پر استحکام کو یقینی بنانے کے لئے ہر حکمت عملی پیرامیٹر وزن کے تناسب کو احتیاط سے ایڈجسٹ کریں.

اصلاح کی ہدایات

  1. مختلف سائیکل پیرامیٹرز کے مجموعوں کے اثرات کا تجربہ کریں۔
  2. حکمت عملی کی افادیت پر مختلف کراس سائیکل مجموعوں کے اثرات کا تجربہ کریں۔
  3. MACD اشارے کے پیرامیٹرز کو ایڈجسٹ کریں، جیسے تیز رفتار اور سست حرکت پذیر اوسط سائیکل، سگنل لائن سائیکل وغیرہ۔
  4. مختلف پوزیشن ایڈجسٹمنٹ عوامل کے اثرات کی جانچ کریں.
  5. دیگر اقسام پر بیک ٹسٹ اثرات کی جانچ کریں۔

خلاصہ

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


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@temelbulut
//@version=5
strategy('MACD Strategy %80', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50)

fastLength = input.int(title='MACD Fast Length', defval=12, minval=1)
slowLength = input.int(title='MACD Slow Length', defval=26, minval=1)
signalLength = input.int(title='MACD Signal Length', defval=9, minval=1)
crossscore = input(title='Cross (buy/sell) Score', defval=10.)
indiside = input(title='indicator Direction Score', defval=8)
histside = input(title='Histogram Direction Score', defval=2)
shotsl = input(title='Show Stop Loss Line', defval=false)
Mult = input.float(title='Stop Loss Factor', defval=1.2, minval=0.1, maxval=100)
Period = input.int(title='Stop Loss Period', defval=10, minval=1, maxval=100)
lookaheadi = input(title='Lookahead', defval=true)

HTF = timeframe.period == '1' ? '5' : timeframe.period == '3' ? '15' : timeframe.period == '5' ? '15' : timeframe.period == '15' ? '60' : timeframe.period == '30' ? '60' : timeframe.period == '45' ? '60' : timeframe.period == '60' ? '240' : timeframe.period == '120' ? '240' : timeframe.period == '180' ? '240' : timeframe.period == '240' ? 'D' : timeframe.period == 'D' ? 'W' : 'W'

calc = timeframe.period == '1' ? 5 : timeframe.period == '3' ? 5 : timeframe.period == '5' ? 3 : timeframe.period == '15' ? 4 : timeframe.period == '30' ? 4 : timeframe.period == '45' ? 4 : timeframe.period == '60' ? 4 : timeframe.period == '120' ? 3 : timeframe.period == '180' ? 3 : timeframe.period == '240' ? 6 : timeframe.period == 'D' ? 5 : 1

count() =>
    indi = ta.ema(close, fastLength) - ta.ema(close, slowLength)
    signal = ta.ema(indi, signalLength)
    Anlyse = 0.0
    // direction of indi and histogram
    hist = indi - signal
    Anlyse := indi > indi[1] ? hist > hist[1] ? indiside + histside : hist == hist[1] ? indiside : indiside - histside : 0
    Anlyse += (indi < indi[1] ? hist < hist[1] ? -(indiside + histside) : hist == hist[1] ? -indiside : -(indiside - histside) : 0)
    Anlyse += (indi == indi[1] ? hist > hist[1] ? histside : hist < hist[1] ? -histside : 0 : 0)
    // cross now earlier ?
    countcross = indi >= signal and indi[1] < signal[1] ? crossscore : indi <= signal and indi[1] > signal[1] ? -crossscore : 0.
    countcross += nz(countcross[1]) * 0.6
    Anlyse += countcross
    nz(Anlyse)

Anlys = count()
AnlysHfrm = lookaheadi ? request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_on) : request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_off)
Result = (AnlysHfrm * calc + Anlys) / (calc + 1)

longCondition = ta.change(Result) != 0 and Result > 0
if longCondition
    strategy.entry('MACD Long', strategy.long,alert_message = 'MACD Long')

shortCondition = ta.change(Result) != 0 and Result < 0
if shortCondition
    strategy.entry('MACD Short', strategy.short,alert_message = 'MACD Short')

countstop(pos) =>
    Upt = hl2 - Mult * ta.atr(Period)
    Dnt = hl2 + Mult * ta.atr(Period)
    TUp = 0.
    TDown = 0.
    TUp := close[1] > TUp[1] ? math.max(Upt, TUp[1]) : Upt
    TDown := close[1] < TDown[1] ? math.min(Dnt, TDown[1]) : Dnt
    tslmtf = pos == 1 ? TUp : TDown
    tslmtf

pos = longCondition ? 1 : -1
stline = 0.
countstop__1 = countstop(pos)
security_1 = request.security(syminfo.tickerid, HTF, countstop__1)
stline := ta.change(time(HTF)) != 0 or longCondition or shortCondition ? security_1 : nz(stline[1])
plot(stline, color=shotsl ? color.rgb(148, 169, 18) : na, style=plot.style_line, linewidth=2, title='Stop Loss')



مزید