Sumber dimuat naik... memuat...

Strategi Convergensi MACD dengan R: R, had harian, dan Stop Loss yang lebih ketat

Penulis:ChaoZhang, Tarikh: 2024-06-03 16:47:56
Tag:MACD

img

Ringkasan

Strategi ini menggunakan konvergensi dan divergensi penunjuk MACD untuk menjana isyarat perdagangan. Apabila garis MACD melintasi garis isyarat, dan nilai garis MACD adalah lebih besar daripada 1.5 atau kurang daripada -1.5, ia menjana isyarat panjang dan pendek, masing-masing. Strategi ini menetapkan tahap mengambil keuntungan dan menghentikan kerugian tetap dan memperkenalkan konsep nisbah risiko-balasan (R: R). Di samping itu, ia menggunakan kehilangan maksimum harian dan had keuntungan dan stop-loss yang lebih ketat untuk mengawal risiko dengan lebih baik.

Prinsip Strategi

  1. Mengira garis MACD dan garis isyarat penunjuk MACD.
  2. Tentukan situasi persilangan antara garis MACD dan garis isyarat, sambil mempertimbangkan sama ada nilai garis MACD melebihi ambang tertentu (1.5 dan -1.5).
  3. Apabila isyarat panjang muncul, buka kedudukan panjang dengan harga mengambil keuntungan daripada harga tertinggi semasa + 600 unit tik minimum dan harga stop-loss daripada harga terendah semasa - 100 unit tik minimum.
  4. Apabila isyarat pendek muncul, buka kedudukan pendek dengan harga mengambil keuntungan daripada harga terendah semasa - 600 unit tik minimum dan harga stop-loss daripada harga tertinggi semasa + 100 unit tik minimum.
  5. Memperkenalkan logik stop-loss: apabila harga meningkat (posisi panjang) atau jatuh (posisi pendek) lebih daripada 300 unit tick minimum berbanding dengan harga kemasukan, pindahkan harga stop-loss ke harga kemasukan + (harga penutupan - harga kemasukan - 300) untuk kedudukan panjang atau harga kemasukan - (harga kemasukan - harga penutupan - 300) untuk kedudukan pendek.
  6. Tetapkan had kerugian maksimum harian dan keuntungan: apabila kerugian harian mencapai 600 unit tik minimum atau keuntungan mencapai 1800 unit tik minimum, tutup semua kedudukan.

Analisis Kelebihan

  1. Menggabungkan penunjuk MACD dengan keadaan ambang harga secara berkesan menapis beberapa isyarat bunyi.
  2. Nisbah risiko-balasan tetap (R: R) menjadikan risiko dan ganjaran setiap perdagangan boleh dikawal.
  3. Logik stop-loss yang mengikuti melindungi keuntungan selepas trend terbentuk dan mengurangkan pengeluaran.
  4. Batas kerugian maksimum harian dan keuntungan membantu mengawal pendedahan risiko harian dan mengelakkan kerugian atau keuntungan yang berlebihan diikuti dengan penarikan.

Analisis Risiko

  1. Indikator MACD mempunyai kesan lag, yang boleh menyebabkan isyarat tertunda atau salah.
  2. Tahap keuntungan dan stop loss tetap mungkin tidak disesuaikan dengan keadaan pasaran yang berbeza dan sering boleh dipicu dalam pasaran yang bergelora.
  3. Logik stop-loss yang mengikuti mungkin gagal untuk menghentikan kerugian pada masa yang tepat semasa pembalikan trend, yang membawa kepada keuntungan kembali.
  4. Batasan kerugian maksimum harian dan keuntungan boleh menyebabkan strategi menutup kedudukan lebih awal apabila trend harian jelas, kehilangan keuntungan yang berpotensi.

Arah pengoptimuman

  1. Pertimbangkan untuk menggunakan penunjuk MACD pelbagai jangka masa untuk mengesahkan isyarat dan meningkatkan ketepatan isyarat.
  2. Sesuaikan secara dinamik tahap mengambil keuntungan dan stop-loss berdasarkan turun naik pasaran untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Mengoptimumkan logik stop-loss terakhir, seperti menetapkan jarak stop-loss terakhir berdasarkan penunjuk ATR untuk penyesuaian yang lebih baik terhadap turun naik harga.
  4. Mengoptimumkan parameter had kerugian dan keuntungan maksimum harian untuk mencari nilai had yang sesuai yang mengawal risiko sambil menangkap pergerakan trend sebanyak mungkin.

Ringkasan

Strategi ini menggunakan konvergensi dan divergensi penunjuk MACD untuk menjana isyarat perdagangan sambil memperkenalkan langkah-langkah kawalan risiko seperti nisbah risiko-balasan, stop-loss, dan had harian. Walaupun strategi ini dapat menangkap pergerakan trend dan mengawal risiko ke tahap tertentu, masih ada ruang untuk pengoptimuman dan penambahbaikan.


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

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DD173838

//@version=5
strategy("MACD Convergence Strategy with R:R, Daily Limits, and Tighter Stop Loss", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// MACD settings
fastLength = input.int(12, title="Fast Length", minval=1)
slowLength = input.int(26, title="Slow Length", minval=1)
signalSmoothing = input.int(9, title="Signal Smoothing", minval=1)
source = input(close, title="Source")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)

// Plot MACD and signal line
plot(macdLine, title="MACD Line", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)

// Define convergence conditions
macdConvergenceUp = ta.crossover(macdLine, signalLine) and macdLine > 1.5
macdConvergenceDown = ta.crossunder(macdLine, signalLine) and macdLine < -1.5

// Define take profit and stop loss

        
    
takeProfit = 600
stopLoss = 100

// Plot buy and sell signals on the chart
plotshape(series=macdConvergenceDown, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
plotshape(series=macdConvergenceUp, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")

// Execute short and long orders with defined take profit and stop loss
if (macdConvergenceDown)
    strategy.entry("Short", strategy.short, qty=1, stop=high + (stopLoss / syminfo.mintick), limit=low - (takeProfit / syminfo.mintick))

if (macdConvergenceUp)
    strategy.entry("Long", strategy.long, qty=1, stop=low - (stopLoss / syminfo.mintick), limit=high + (takeProfit / syminfo.mintick))

// Trailing stop logic
var float entryPrice = na
var float trailingStopPrice = na

if (strategy.position_size != 0)
    entryPrice := strategy.opentrades.entry_price(0)

if (strategy.position_size > 0)  // For long positions
    if (close - entryPrice > 300)
        trailingStopPrice := entryPrice + (close - entryPrice - 300)

if (strategy.position_size < 0)  // For short positions
    if (entryPrice - close > 300)
        trailingStopPrice := entryPrice - (entryPrice - close - 300)

if (strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice)
    strategy.close("Long", comment="Trailing Stop")

if (strategy.position_size < 0 and not na(trailingStopPrice) and close > trailingStopPrice)
    strategy.close("Short", comment="Trailing Stop")

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 600
maxDailyProfit = 1800
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")


Berkaitan

Lebih lanjut