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.
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.
Peningkatan yang mungkin:
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 )