Strategi perdagangan risiko terkontrol MACD

Penulis:ChaoZhangTanggal: 2023-10-26 15:51:34
Tag:

img

Gambaran umum

Strategi ini merancang strategi perdagangan jangka panjang yang mengontrol risiko setiap perdagangan berdasarkan indikator MACD. Dibandingkan dengan strategi flipping panjang-pendek tradisional, strategi ini lebih berfokus pada pengendalian risiko setiap perdagangan. Dengan menghitung stop loss yang wajar dan mengambil tingkat keuntungan dan menetapkan ukuran posisi yang sesuai, itu membatasi kerugian maksimum untuk setiap perdagangan. Ini dapat secara efektif mengontrol penarikan dan mencapai keuntungan yang stabil dalam jangka panjang.

Prinsip-prinsip

Strategi ini pertama-tama menghitung garis MACD dan garis sinyal dari indikator MACD. Ketika garis MACD melintasi di atas garis sinyal, itu ditentukan sebagai sinyal beli. Untuk menyaring breakout palsu, strategi membutuhkan barsince ((crossover ((macd_line, signal_line)) <= 5, yang berarti breakout terjadi dalam 5 bar terbaru. Ini juga mengharuskan baik garis MACD dan sinyal berada di bawah 0, yang menunjukkan kondisi oversold, dan penutupan berada di atas garis WMA, yang menunjukkan tren naik. Ketika kondisi di atas terpenuhi, posisi panjang dibuka.

Untuk setiap perdagangan, strategi menghitung stop loss yang wajar dan mengambil tingkat keuntungan. Stop loss ditetapkan pada level terendah dari 3 bar terbaru. Take profit ditetapkan pada harga masuk ditambah 4 kali jarak antara stop loss dan harga masuk.

Kuncinya adalah bahwa strategi menghitung ukuran posisi spesifik berdasarkan risiko yang terjangkau maksimum. Parameter capital_risk menetapkan persentase dari total modal yang dapat hilang untuk setiap perdagangan. Ukuran posisi dalam USD kemudian dihitung berdasarkan rentang stop loss. Kemudian dikonversi menjadi kontrak untuk eksekusi.

Risiko dari setiap perdagangan dikendalikan dalam 1% dari total modal, yang dapat secara efektif mengendalikan drawdown.

Keuntungan

  • Pengendalian risiko adalah prioritas, risiko per perdagangan dapat dikendalikan
  • Ukuran posisi dioptimalkan untuk memaksimalkan penggunaan modal
  • Strategi stop loss secara efektif mengontrol penarikan
  • Keuntungan yang wajar memungkinkan potensi keuntungan yang tinggi

Risiko dan Peningkatan

  • MACD memiliki lag, mungkin melewatkan perubahan tren yang cepat
  • Pengaturan stop loss atau take profit yang tidak tepat dapat mengurangi keuntungan atau meningkatkan risiko
  • Frekuensi perdagangan yang tinggi dapat meningkatkan biaya transaksi

Peningkatan yang mungkin:

  • Menggabungkan indikator lain untuk menentukan tren, menghindari MACD lag
  • Mengoptimalkan stop loss dan mengambil algoritma keuntungan untuk menjadi lebih fleksibel
  • Meredakan frekuensi perdagangan untuk mengurangi biaya transaksi

Ringkasan

Strategi ini menentukan arah tren menggunakan MACD, dan mengambil kontrol risiko sebagai prioritas untuk berdagang dengan ukuran posisi yang dioptimalkan. Kuncinya adalah kontrol risiko dan ukuran posisi, yang dapat mencapai keuntungan yang stabil dalam jangka panjang. Tetapi MACD memiliki beberapa kelemahan, dan mekanisme stop loss / take profit perlu dioptimalkan lebih lanjut. Mengoptimalkan penggunaan indikator lebih lanjut, pengaturan stop loss / take profit, dan mengurangi frekuensi perdagangan dapat membuat strategi lebih kuat.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )

capital_risk    = input( 1.0, "% capital risk per trade" ) / 100
r_exit          = input( 4.0, "Take Profit in 'R'" )
wma_length      = input( 150, 'WMA Bias Length' )

[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)

w_line = wma( close, wma_length )

golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0

float stop = na
float tp = na

// For a stop, use a recent low 
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]


// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range 
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close

// Enter the position
if golong
    strategy.entry("long", strategy.long, qty=position_size_in_contracts)
    strategy.exit("long exit","long", stop=stop, limit=tp)

// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
//     strategy.close("long")


plot( strategy.equity,  color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )

Lebih banyak