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

ڈبل کراس اوور ٹرینڈ مندرجہ ذیل حکمت عملی: ای ایم اے اور ایم اے سی ڈی ہم آہنگ تجارتی نظام

مصنف:چاؤ ژانگ، تاریخ: 2025-01-17 16:06:16
ٹیگز:ای ایم اےایم اے سی ڈیڈی آئی ایفDEAٹی پیSLRR

 Dual Crossover Trend Following Strategy: EMA and MACD Synergistic Trading System

جائزہ

یہ حکمت عملی ایک رجحان کے بعد ٹریڈنگ سسٹم ہے جو ای ایم اے اور ایم اے سی ڈی دوہری تکنیکی اشارے کو جوڑتا ہے۔ یہ قیمت کے ساتھ ای ایم اے 9 کے کراس اوور اور سست لائن (ڈی ای اے) کے ساتھ ایم اے سی ڈی فاسٹ لائن (ڈی آئی ایف) کے کراس اوور کے ذریعے مارکیٹ کے رجحانات کو پکڑتا ہے۔ یہ حکمت عملی پچھلے 5 موم بتیوں کی بنیاد پر ایک موافقت پذیر اسٹاپ نقصان کا استعمال کرتی ہے اور منافع کے اہداف کے لئے 3.5: 1 انعام رسک تناسب کا استعمال کرتی ہے ، جس سے ایک مکمل ٹریڈنگ سسٹم بنتا ہے۔

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

بنیادی منطق کو لمبی اور مختصر سمتوں میں تقسیم کیا گیا ہے: طویل شرائط: جب اختتامی قیمت نیچے سے EMA9 سے اوپر ٹوٹ جاتی ہے ، اور MACD کی DIF لائن DEA لائن سے اوپر عبور کرتی ہے ، تو نظام ایک طویل سگنل تیار کرتا ہے۔ مختصر حالات: جب بندش کی قیمت اوپر سے EMA9 سے نیچے ٹوٹ جاتی ہے ، اور MACD کی DIF لائن DEA لائن سے نیچے عبور کرتی ہے تو ، نظام ایک مختصر سگنل تیار کرتا ہے۔ خطرہ کا انتظام: - طویل پوزیشن سٹاپ نقصان پچھلے 5 موم بتیوں کے سب سے کم نقطہ کے نیچے مقرر کیا جاتا ہے - مختصر پوزیشن سٹاپ نقصان پچھلے 5 موم بتیوں کے سب سے زیادہ نقطہ کے اوپر مقرر کیا جاتا ہے - منافع کا ہدف سٹاپ نقصان کے فاصلے کے 3.5 گنا مقرر کیا گیا ہے

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

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

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

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

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

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

خلاصہ

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


/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

// =======================
// @version=6
strategy(title="MACD + EMA9 3 h",
     shorttitle="MACD+EMA9+StopTP_5candles",
     overlay=true,
     initial_capital=100000,    // Ajuste conforme desejar
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=200)      // Ajuste % de risco ou quantidade

// ----- Entradas (Inputs) -----
emaLen          = input.int(9,     "Período da EMA 9", minval=1)
macdFastLen     = input.int(12,    "Período MACD Rápido", minval=1)
macdSlowLen     = input.int(26,    "Período MACD Lento",  minval=1)
macdSignalLen   = input.int(9,     "Período MACD Signal", minval=1)
riskMultiplier  = input.float(3.5, "Fator de Multiplicação do Risco (TP)")
lookbackCandles = input.int(5,     "Quantidade de candles p/ Stop", minval=1)

// ----- Cálculo da EMA -----
ema9 = ta.ema(close, emaLen)

// ----- Cálculo do MACD -----
[macdLine, signalLine, histLine] = ta.macd(close, macdFastLen, macdSlowLen, macdSignalLen)
// DIF cruza DEA para cima ou para baixo
macdCrossover   = ta.crossover(macdLine, signalLine)   // DIF cruza DEA p/ cima
macdCrossunder  = ta.crossunder(macdLine, signalLine)  // DIF cruza DEA p/ baixo

// ----- Condições de Compra/Venda -----

// Compra quando:
// 1) Preço cruza EMA9 de baixo pra cima
// 2) MACD cruza a linha de sinal para cima
buySignal = ta.crossover(close, ema9) and macdCrossover

// Venda quando:
// 1) Preço cruza EMA9 de cima pra baixo
// 2) MACD cruza a linha de sinal para baixo
sellSignal = ta.crossunder(close, ema9) and macdCrossunder

// ----- Execução das ordens -----

// Identifica o menor e o maior preço dos últimos 'lookbackCandles' candles.
// A função ta.lowest() e ta.highest() consideram, por padrão, a barra atual também.
// Se você quiser EXCLUIR a barra atual, use low[1] / high[1] dentro do ta.lowest() / ta.highest().
lowestLow5  = ta.lowest(low, lookbackCandles)
highestHigh5= ta.highest(high, lookbackCandles)

// >>> Quando há sinal de COMPRA <<<
if (buySignal)
    // Fecha posição vendida, se existir
    strategy.close("Sell")
    // Entra comprado
    strategy.entry("Buy", strategy.long)
    
    // STOP: abaixo do menor preço dos últimos 5 candles
    stopPrice = lowestLow5
    // Risco = (preço de entrada) - (stop)
    // Note que strategy.position_avg_price só fica disponível a partir da barra seguinte.
    // Por isso, o exit costuma funcionar corretamente apenas na barra seguinte.
    // Para fins de teste, podemos usar 'close' como proxy do "entry" (ou aceitar essa limitação).
    // A forma "correta" de usar strategy.position_avg_price seria via calc_on_order_fills = true,
    // mas isso pode exigir algumas configurações adicionais.
    risk = strategy.position_avg_price - stopPrice
    
    // Take Profit = entrada + 2,5 * risco
    takeProfitPrice = strategy.position_avg_price + riskMultiplier * risk

    // Registra a saída (stop e alvo) vinculada à posição "Buy"
    strategy.exit("Exit Buy", "Buy", stop=stopPrice, limit=takeProfitPrice)

// >>> Quando há sinal de VENDA <<<
if (sellSignal)
    // Fecha posição comprada, se existir
    strategy.close("Buy")
    // Entra vendido
    strategy.entry("Sell", strategy.short)
    
    // STOP: acima do maior preço dos últimos 5 candles
    stopPrice = highestHigh5
    // Risco = (stop) - (preço de entrada)
    risk = stopPrice - strategy.position_avg_price
    
    // Take Profit = entrada - 2,5 * risco
    takeProfitPrice = strategy.position_avg_price - riskMultiplier * risk

    // Registra a saída (stop e alvo) vinculada à posição "Sell"
    strategy.exit("Exit Sell", "Sell", stop=stopPrice, limit=takeProfitPrice)

// ----- Plotagens visuais -----
plot(ema9, color=color.orange, linewidth=2, title="EMA 9")

plot(macdLine,       color=color.new(color.blue, 0),   title="MACD")
plot(signalLine,     color=color.new(color.red, 0),    title="Signal")
plot(histLine,       color=color.new(color.purple, 0), style=plot.style_histogram, title="Histogram")

// Só para auxiliar na visualização, vamos plotar a linha do lowestLow5 e highestHigh5
plot(lowestLow5,    color=color.new(color.lime, 70),  style=plot.style_line, title="Lowest 5 bars")
plot(highestHigh5,  color=color.new(color.fuchsia,70),style=plot.style_line, title="Highest 5 bars")

متعلقہ

مزید