Strategi Penumpuan Had Dalam Hari Nisbah MACD dan R:R

MACD
Tarikh penciptaan: 2024-06-03 16:47:56 Akhirnya diubah suai: 2024-06-03 16:47:56
Salin: 3 Bilangan klik: 611
1
fokus pada
1617
Pengikut

Strategi Penumpuan Had Dalam Hari Nisbah MACD dan R:R

Gambaran keseluruhan

Strategi ini menilai isyarat perdagangan berdasarkan penyebaran dan penyebaran indikator MACD. Apabila garis MACD bersilang dengan garis isyarat, dan nilai garis MACD lebih besar dari 1.5 atau kurang dari 1.5, ia menghasilkan isyarat jual dan jual, masing-masing. Pada masa yang sama, strategi ini menetapkan titik stop loss tetap dan memperkenalkan konsep nisbah pulangan risiko (R: R).

Prinsip Strategi

  1. Hitung garis MACD dan garis isyarat MACD.
  2. Menilai persimpangan antara garis MACD dan garis isyarat, sambil mempertimbangkan sama ada nilai garis MACD melebihi nilai ambang tertentu ((1.5 dan -1.5)).
  3. Apabila terdapat isyarat melakukan lebih banyak, buka lebih banyak, set harga berhenti sebagai harga tertinggi semasa + 600 unit perubahan minimum, harga berhenti sebagai harga minimum semasa - 100 unit perubahan minimum.
  4. Apabila isyarat shorting muncul, buka posisi shorting, set harga stop stop sebagai harga minimum semasa - 600 unit perubahan minimum, harga stop loss sebagai harga maksimum semasa + 100 unit perubahan minimum.
  5. Memperkenalkan logik hentian bergerak, apabila harga naik (((banyak kepala) atau turun (((head) melebihi 300 unit perubahan minimum berbanding harga pembukaan, harga hentian akan dipindahkan ke harga pembukaan + (((harga penutup-harga pembukaan-300) (((banyak kepala) atau harga pembukaan- ((harga pembukaan-harga penutup-300) (((head)
  6. Tetapkan had kerugian maksimum dan keuntungan maksimum dalam satu hari, apabila kerugian mencapai 600 unit perubahan minimum atau keuntungan mencapai 1800 unit perubahan minimum, semua kedudukan akan dihapuskan.

Analisis kelebihan

  1. Gabungan penunjuk MACD dengan keadaan penurunan harga, secara berkesan menapis beberapa isyarat bunyi bising.
  2. Rasio risiko pulangan tetap ((R: R), risiko dan keuntungan setiap urus niaga boleh dikawal.
  3. Logik stop loss bergerak dapat melindungi keuntungan dan mengurangkan penarikan balik selepas trend terbentuk.
  4. Had kerugian dan keuntungan maksimum dalam satu hari membantu mengawal risiko dalam satu hari dan mengelakkan kerugian atau keuntungan yang berlebihan.

Analisis risiko

  1. Indeks MACD mempunyai keterlambatan, mungkin berlaku kelewatan isyarat atau isyarat salah.
  2. Titik hentian yang tetap mungkin tidak dapat disesuaikan dengan keadaan pasaran yang berbeza, dan mungkin sering mencetuskan hentian dalam keadaan yang bergolak.
  3. Logik stop loss bergerak mungkin tidak dapat dihentikan tepat pada masanya apabila trend berbalik, menyebabkan pulangan keuntungan.
  4. Pembatasan kerugian dan keuntungan maksimum dalam satu hari boleh menyebabkan strategi untuk melonggarkan kedudukan terlalu awal dan kehilangan potensi keuntungan apabila trend dalam satu hari jelas.

Arah pengoptimuman

  1. Pertimbangkan untuk menggunakan penunjuk MACD pelbagai bingkai masa untuk mengesahkan isyarat dan meningkatkan ketepatan isyarat.
  2. Mengubah kedudukan stop loss mengikut pergerakan pasaran yang tidak menentu untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Mengoptimumkan logik berhenti bergerak, seperti menetapkan jarak berhenti bergerak berdasarkan petunjuk ATR, untuk lebih menyesuaikan diri dengan turun naik harga.
  4. Optimumkan parameter untuk had kerugian maksimum dan keuntungan harian, cari nilai had yang sesuai, dan cuba menangkap keadaan trend sambil mengawal risiko.

ringkaskan

Strategi ini menilai isyarat dagangan melalui penumpuan dan penyebaran indikator MACD, dan memperkenalkan langkah-langkah kawalan risiko seperti nisbah pulangan risiko, hentian bergerak dan had harian. Walaupun strategi ini dapat menangkap trend dan mengawal risiko, masih ada ruang untuk pengoptimuman dan penambahbaikan.

Kod sumber strategi
/*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")