- Persegi
- Strategi MACD Lanjutan dengan Martingale Terbatas
Strategi MACD Lanjutan dengan Martingale Terbatas
Penulis:
ChaoZhang, Tanggal: 2024-05-11 17:24:43
Tag:
MACDMA
Gambaran umum
Strategi ini menggabungkan indikator MACD dengan metode manajemen uang Martingale terbatas untuk menangkap peluang perdagangan ketika tren pasar berubah. Sinyal beli dihasilkan ketika garis cepat MACD melintasi di atas garis lambat, dan sinyal jual dihasilkan ketika garis cepat melintasi di bawah garis lambat.
Prinsip Strategi
- Hitung garis cepat, garis lambat, dan garis sinyal dari indikator MACD.
- Tentukan persilangan garis cepat dan lambat, pergi panjang pada persilangan bullish dan pendek pada persilangan bearish.
- Atur volume perdagangan tetap (0,01) untuk setiap perdagangan.
- Catat laba bersih dari perdagangan sebelumnya.
- Jika laba bersih saat ini lebih rendah dari perdagangan sebelumnya dan jumlah posisi tambahan kurang dari 3, menggandakan volume perdagangan berikutnya dan meningkatkan jumlah posisi tambahan sebesar 1; jika tidak, atur ulang volume perdagangan dan jumlah posisi tambahan.
- Untuk setiap posisi panjang, ambil keuntungan ketika harga naik sebesar 1% dan stop loss ketika turun sebesar 1%; sebaliknya untuk posisi pendek.
- Tanda titik beli dan jual pada grafik.
Keuntungan Strategi
- Mengkombinasikan indikator MACD trend-following dengan manajemen uang Martingale, yang dapat lebih menangkap tren pasar.
- Set tetap mengambil keuntungan dan stop loss tingkat untuk mengendalikan risiko perdagangan individu.
- Menggunakan ukuran posisi Martingale terbatas untuk mencapai pengembalian yang lebih tinggi ketika tren berlanjut.
- Membatasi jumlah maksimum posisi tambahan menjadi 3, menghindari risiko ukuran posisi yang berlebihan yang mengarah pada ledakan akun.
- Tanda membeli dan menjual sinyal pada grafik untuk pengamatan mudah kinerja strategi.
Risiko Strategi
- Indikator MACD mungkin mengalami perbedaan antara sinyal dan harga, yang mengarah pada penilaian yang salah.
- Rasio keuntungan dan stop loss tetap dapat kehilangan peluang keuntungan yang lebih besar atau mengalami kerugian yang lebih besar.
- Meskipun ukuran posisi Martingale dibatasi hingga 3 kali, masih ada risiko ledakan akun ketika mengalami kerugian berturut-turut di pasar yang bergolak.
- Strategi ini tidak mempertimbangkan fluktuasi pasar yang tidak normal, seperti kesenjangan tiba-tiba, yang dapat mengakibatkan ketidakmampuan untuk melaksanakan seperti yang diharapkan.
Arah Optimasi Strategi
- Pertimbangkan untuk memperkenalkan indikator konfirmasi tren, seperti MA, untuk menyaring sinyal MACD.
- Mengoptimalkan pengaturan mengambil keuntungan dan stop loss, seperti menggunakan ATR atau persentase untuk stop loss dinamis.
- Mengoptimalkan jumlah dan rasio posisi tambahan untuk mengendalikan risiko penarikan.
- Menetapkan mekanisme untuk mengatasi kondisi pasar yang tidak normal, seperti menangguhkan perdagangan ketika harga naik turun.
- Pertimbangkan untuk memperkenalkan ukuran posisi untuk menyesuaikan posisi secara dinamis berdasarkan volatilitas pasar.
Ringkasan
Strategi ini menangkap tren melalui indikator MACD sambil menggunakan Martingale terbatas untuk mengendalikan penarikan, yang dapat mencapai hasil yang baik di pasar tren. Namun, strategi ini juga memiliki risiko tertentu, seperti kegagalan sinyal dan kerugian stop tetap. Dengan memperkenalkan indikator lain, mengoptimalkan pengaturan parameter, ukuran posisi, dan metode lainnya, ketahanan dan profitabilitas strategi ini dapat ditingkatkan lebih lanjut.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100)
// MACD 설정
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0
// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)
// 매수 신호
if (longCondition)
strategy.entry("Long", strategy.long, qty=contractSize)
lastTradeResult := strategy.netprofit
// 매도 신호
if (shortCondition)
strategy.entry("Short", strategy.short, qty=contractSize)
lastTradeResult := strategy.netprofit
// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))
// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
if (martingaleCount < 3)
contractSize := contractSize * 2
martingaleCount := martingaleCount + 1
else
contractSize := 0.01
martingaleCount := 0
else
contractSize := 0.01
martingaleCount := 0
// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
Berkaitan
Lebih banyak