وسائل لوڈ ہو رہے ہیں... لوڈنگ...

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

مصنف:چاؤ ژانگ، تاریخ: 2024-12-11 15:46:20
ٹیگز:ایم اے سی ڈیایل آر ایسڈبلیو ایم اےتھیمای ایم اےایس ایم اے

img

جائزہ

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

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

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

حکمت عملی کے فوائد

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

حکمت عملی کے خطرات

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

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

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

خلاصہ

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


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy('SIMPLIFIED MACD & LRS Backtest by NHBProd', overlay=false)

// Function to calculate TEMA (Triple Exponential Moving Average)
tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * (ema1 - ema2) + ema3

// MACD Calculation Function
macdfx(src, fast_length, slow_length, signal_length, method) =>
    fast_ma = method == 'SMA' ? ta.sma(src, fast_length) :
              method == 'EMA' ? ta.ema(src, fast_length) :
              method == 'WMA' ? ta.wma(src, fast_length) :
              tema(src, fast_length)
    slow_ma = method == 'SMA' ? ta.sma(src, slow_length) :
              method == 'EMA' ? ta.ema(src, slow_length) :
              method == 'WMA' ? ta.wma(src, slow_length) :
              tema(src, slow_length)
    macd = fast_ma - slow_ma
    signal = method == 'SMA' ? ta.sma(macd, signal_length) :
             method == 'EMA' ? ta.ema(macd, signal_length) :
             method == 'WMA' ? ta.wma(macd, signal_length) :
             tema(macd, signal_length)
    hist = macd - signal
    [macd, signal, hist]

// MACD Inputs
useMACD = input(true, title="Use MACD for Signals")
src = input(close, title="MACD Source")
fastp = input(12, title="MACD Fast Length")
slowp = input(26, title="MACD Slow Length")
signalp = input(9, title="MACD Signal Length")
macdMethod = input.string('EMA', title='MACD Method', options=['EMA', 'SMA', 'WMA', 'TEMA'])

// MACD Calculation
[macd, signal, hist] = macdfx(src, fastp, slowp, signalp, macdMethod)

// Linear Regression Inputs
useLR = input(true, title="Use Linear Regression for Signals")
lrLength = input(24, title="Linear Regression Length")
lrSource = input(close, title="Linear Regression Source") 
lrSignalSelector = input.string('Rising Linear', title='Signal Selector', options=['Price Above Linear', 'Rising Linear', 'Both'])

// Linear Regression Calculation
linReg = ta.linreg(lrSource, lrLength, 0)
linRegPrev = ta.linreg(lrSource, lrLength, 1)
slope = linReg - linRegPrev

// Linear Regression Buy Signal
lrBuySignal = lrSignalSelector == 'Price Above Linear' ? (close > linReg) :
              lrSignalSelector == 'Rising Linear' ? (slope > 0 and slope > slope[1]) :
              lrSignalSelector == 'Both' ? (close > linReg and slope > 0) : false

// MACD Crossover Signals
macdCrossover = ta.crossover(macd, signal)

// Buy Signals based on user choices
macdSignal = useMACD and macdCrossover
lrSignal = useLR and lrBuySignal

// Buy condition: Use AND condition if both are selected, OR condition if only one is selected
buySignal = (useMACD and useLR) ? (macdSignal and lrSignal) : (macdSignal or lrSignal)

// Plot MACD
hline(0, title="Zero Line", color=color.gray)
plot(macd, color=color.blue, title="MACD Line", linewidth=2)
plot(signal, color=color.orange, title="Signal Line", linewidth=2)
plot(hist, color=hist >= 0 ? color.green : color.red, style=plot.style_columns, title="MACD Histogram")

// Plot Linear Regression Line and Slope
plot(slope, color=slope > 0 ? color.purple : color.red, title="Slope", linewidth=2)
plot(linReg,title="lingreg")
// Signal Plot for Visualization
plotshape(buySignal, style=shape.labelup, location=location.bottom, color=color.new(color.green, 0), title="Buy Signal", text="Buy")

// Sell Signals for Exiting Long Positions
macdCrossunder = ta.crossunder(macd, signal)  // MACD Crossunder for Sell Signal
lrSellSignal = lrSignalSelector == 'Price Above Linear' ? (close < linReg) :
               lrSignalSelector == 'Rising Linear' ? (slope < 0 and slope < slope[1]) :
               lrSignalSelector == 'Both' ? (close < linReg and slope < 0) : false

// User Input for Exit Signals: Select indicators to use for exiting trades
useMACDSell = input(true, title="Use MACD for Exit Signals")
useLRSell = input(true, title="Use Linear Regression for Exit Signals")

// Sell condition: Use AND condition if both are selected to trigger a sell at the same time, OR condition if only one is selected
sellSignal = (useMACDSell and useLRSell) ? (macdCrossunder and lrSellSignal) : 
             (useMACDSell ? macdCrossunder : false) or 
             (useLRSell ? lrSellSignal : false)

// Plot Sell Signals for Visualization (for exits, not short trades)
plotshape(sellSignal, style=shape.labeldown, location=location.top, color=color.new(color.red, 0), title="Sell Signal", text="Sell")

// Alerts
alertcondition(buySignal, title="Buy Signal", message="Buy signal detected!")
alertcondition(sellSignal, title="Sell Signal", message="Sell signal detected!")

// Take Profit and Stop Loss Inputs
takeProfit = input.float(10.0, title="Take Profit (%)")  // Take Profit in percentage
stopLoss = input.float(0.10, title="Stop Loss (%)")        // Stop Loss in percentage

// Backtest Date Range
startDate = input(timestamp("2024-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2025-12-12 00:00"), title="End Date")
inBacktestPeriod = true
// Entry Rules (Only Long Entries)
if (buySignal and inBacktestPeriod)
    strategy.entry("Buy", strategy.long)

// Exit Rules (Only for Long Positions)
strategy.exit("Exit Buy", from_entry="Buy", limit=close * (1 + takeProfit / 100), stop=close * (1 - stopLoss / 100))

// Exit Long Position Based on Sell Signals
if (sellSignal and inBacktestPeriod)
    strategy.close("Buy", comment="Exit Signal")


متعلقہ

مزید