ایم اے سی ڈی مومنٹم انڈیکیٹر بیک ٹیسٹ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-24 13:21:54
ٹیگز:

جائزہ

یہ حکمت عملی MACD رفتار اشارے کو RSI oversold / oversold اشارے کے ساتھ جوڑتی ہے۔ جب MACD اوپر یا نیچے کی طرف بڑھتا ہے تو ، یہ چیک کرتا ہے کہ آیا RSI بھی زیادہ قابل اعتماد تجارتی سگنل پیدا کرنے کے ل look بیک پیریڈ میں اسی طرح کی نیچے / اوپر کی تبدیلی کو مکمل کرتا ہے۔ عام قلیل مدتی اوسط ریورسشن حکمت عملی منطق۔

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

  1. MACD DIFF، DEA اور ہسٹگرام کا حساب لگائیں۔ DIFF کے اوپر DEA کا کراس اوور bullish کراس اوور سگنل دیتا ہے ، اور نیچے کراس اوور موت کراس سگنل دیتا ہے۔

  2. اوور سیولڈ باؤنس اور اوور بکڈ سیلز کی نشاندہی کرنے کے لئے آر ایس آئی کا حساب لگائیں۔ اگر حالیہ نیچے یا ٹاپنگ واقع ہوئی ہے تو بیک اپ ونڈو چیک کریں۔

  3. جب ایم اے سی ڈی بولش کراس اوور ہوتا ہے تو ، اگر آر ایس آئی نے نظرثانی کی ونڈو کے اندر oversold سے چھلانگ لگا دی ہے تو ، لمبا سگنل تیار کیا جاتا ہے۔ ایم اے سی ڈی ڈیتھ کراس پر ، اگر آر ایس آئی نے نظرثانی کی ونڈو کو سر کیا ہے تو ، مختصر سگنل تیار کیا جاتا ہے۔

  4. خطرہ کنٹرول میں داخل ہونے کے بعد سٹاپ نقصان مقرر کریں.

فوائد

  1. ایم اے سی ڈی حساس طور پر رجحان کی تبدیلیوں کی نشاندہی کرتا ہے۔ آر ایس آئی مؤثر طریقے سے زیادہ خرید / فروخت کی سطح کا اندازہ کرتا ہے۔

  2. ایم اے سی ڈی اور آر ایس آئی دونوں سگنلز کی ضرورت ہے جو غلط سگنلز کو فلٹر کرتی ہے۔

  3. پیچھے دیکھنے والی کھڑکی سگنل کی وشوسنییتا کو بہتر بناتی ہے۔

  4. سٹاپ نقصان خطرے کے انتظام میں مدد کرتا ہے.

خطرات

  1. ایم اے سی ڈی اور آر ایس آئی کی تاخیر سے زیادہ سے زیادہ اندراجات ضائع ہوسکتے ہیں۔

  2. دوہری اشارے کے سگنل کا کم امکان کم تجارت کا مطلب ہے.

  3. بڑے رجحان کی سمت پر غور نہ کرنے سے پھنسنے کا خطرہ ہوتا ہے۔

  4. خراب سٹاپ نقصان کی ترتیب بہت وسیع یا بہت تنگ ہو سکتا ہے.

ممکنہ حل:

  1. تاخیر کو کم کرنے کے لئے MACD اور RSI پیرامیٹرز کو ایڈجسٹ کریں۔

  2. زیادہ سگنل فراہم کرنے کے لئے اشارے کی حد کی حد کو وسیع کریں.

  3. ٹرینڈ فلٹر شامل کریں تاکہ مخالف ٹرینڈ اندراجات سے بچ سکے۔

  4. زیادہ سے زیادہ سطحوں کے لئے مختلف سٹاپ نقصان کے پیرامیٹرز کی جانچ کریں.

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

  1. ایس ایم اے اور دیگر چلتی اوسطوں کا ٹیسٹ کریں۔

  2. لچکدار سٹاپ کے لئے پیچھے سٹاپ نقصان شامل کریں.

  3. داخلہ کی کیفیت کا اندازہ کرنے کے لئے رجحان کی طاقت کو شامل کریں.

  4. اشارے کی نقل و حرکت کی پیشن گوئی کرنے کے لئے مشین لرننگ کا استعمال کریں.

  5. داخلہ کے وقت کو بہتر بنانے کے لئے مزید عوامل کو یکجا کریں.

خلاصہ

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


/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//based on Range Strat - MACD/RSI 
// strategy("MACD/RSI - edited", 
//      overlay=true,
//      default_qty_type=strategy.percent_of_equity,
//      default_qty_value=10, precision=2, initial_capital=100000,
//      pyramiding=2,
//      commission_value=0.05)

//Backtest date range
StartDate = input(timestamp("13 Jun 2022"), title="Start Date")
EndDate = input(timestamp("13 Jun 2024"), title="Start Date")
inDateRange = true

// RSI Input Settings
rsisrc = input(title="RSI Source", defval=close, group="RSI Settings")
length = input(title="Length", defval=14, group="RSI Settings" )
overSold = input(title="Over Sold Threshold", defval=30, group="RSI Settings" )
overBought = input(title="Over Bought Threshold", defval=70, group="RSI Settings" )
rsi_lookback = input(title="RSI cross lookback period", defval=7, group="RSI Settings")

// Calculating RSI
vrsi = ta.rsi(rsisrc, length)
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)

// Function looking for a happened condition during lookback period
f_somethingHappened(_cond, _lookback) =>
    bool _crossed = false
    for i = 1 to _lookback
        if _cond[i]
            _crossed := true
    _crossed


coCheck = f_somethingHappened(co, rsi_lookback)
cuCheck = f_somethingHappened(cu, rsi_lookback)

// MACD Input Settings
macdsrc = input(title="MACD Source", defval=close, group="MACD Settings")
fast_length = input(title="Fast Length", defval=12, group="MACD Settings")
slow_length = input(title="Slow Length", defval=26, group="MACD Settings")
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9, group="MACD Settings")
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"], group="MACD Settings")
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD Settings")


// Calculating MACD
fast_ma = sma_source == "SMA" ? ta.sma(macdsrc, fast_length) : ta.ema(macdsrc, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(macdsrc, slow_length) : ta.ema(macdsrc, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
delta = macd - signal

MACDcrossover = ta.crossover(delta, 0)
MACDcrossunder = ta.crossunder(delta, 0)

// Stop Loss Input Settings
longLossPerc = input(title="Long Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01
shortLossPerc = input(title="Short Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01

// Calculating Stop Loss
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)



// Strategy Entry
if (not na(vrsi))
	if (inDateRange and MACDcrossover and coCheck)
		strategy.entry("LONG", strategy.long, comment="LONG")
	if (inDateRange and MACDcrossunder and cuCheck)
		strategy.entry("SHORT", strategy.short, comment="SHORT")

// Submit exit orders based on calculated stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="LONG STOP", stop=longStopPrice)
if (strategy.position_size < 0)
    strategy.exit(id="SHORT STOP", stop=shortStopPrice)

مزید