Strategi Momentum Turtle Trend Tracking adalah strategi mengikuti tren berdasarkan aturan Turtle Trading. Ini menggunakan Turtle Indicators untuk mengidentifikasi tren dan menggabungkan metrik momentum untuk menyaring beberapa perdagangan bising. Keuntungan utama dari strategi ini adalah kemampuan untuk menangkap tren harga yang kuat dan mencapai keuntungan berlebih.
Strategi ini menggunakan sistem breakout dalam Turtle Indicators untuk menentukan arah tren. Secara khusus, ketika harga penutupan lebih tinggi dari harga tertinggi selama 20 hari terakhir, itu adalah sinyal bullish dan pergi panjang; ketika harga penutupan lebih rendah dari harga terendah selama 20 hari terakhir, itu adalah sinyal bearish dan strategi pergi pendek.
Untuk menyaring beberapa perdagangan kebisingan, strategi ini juga menggabungkan faktor momentum. Jika fluktuasi harga kurang dari 5 ATR, strategi tidak akan memasuki perdagangan. Ini menghindari kerugian dari whipsaws di pasar sampingan.
Setelah membuka posisi, strategi ini menggunakan N-breakout exit dalam aturan Turtle asli untuk stop loss. Sistem ini menetapkan stop loss berdasarkan harga tertinggi dan terendah selama 20 hari terakhir. Misalnya, stop loss untuk posisi panjang akan 2N ATR di bawah terendah selama 20 hari terakhir. Pengambilan keuntungan untuk strategi ini sederhana - ditetapkan pada 10% dari total nilai akun.
Keuntungan terbesar dari strategi ini adalah bahwa ia menggabungkan kedua trend berikut dan manajemen momentum. Sistem penyu dapat dengan akurat menangkap tren jangka menengah dalam harga tanpa terganggu oleh kebisingan pasar. Filter momentum ATR tambahan lebih lanjut mengurangi jumlah perdagangan yang tidak perlu, sehingga sangat meningkatkan potensi keuntungan.
Secara khusus, strategi ini memiliki kekuatan berikut:
Meskipun ada potensi besar untuk optimasi lebih lanjut, strategi ini juga membawa beberapa risiko untuk dijaga:
Berdasarkan risiko-risiko di atas, peluang-peluang optimalisasi utama meliputi:
Secara keseluruhan, strategi Momentum Turtle Trend Tracking adalah sistem yang kuat untuk mengikuti tren jangka menengah hingga panjang. Ini menggabungkan indikator Turtle untuk identifikasi tren dan filter ATR untuk manajemen volatilitas untuk menangkap tren yang kuat. Selain itu, kontrol risiko dan penyesuaian parameter kuat untuk mengurangi penarikan. Peningkatan lebih lanjut seperti ukuran dinamis, pembalikan dan pengambilan keuntungan dapat meningkatkan kinerja.
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Heiken Ashi BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075) /////////////// Time Frame /////////////// testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2029, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// HA ///////////// haTicker = heikinashi(syminfo.tickerid) haOpen = security(haTicker, "D", open) haHigh = security(haTicker, "D", high) haLow = security(haTicker, "D", low) haClose = security(haTicker, "D", close) ///////////// Rate Of Change ///////////// source = close roclength = input(30, minval=1) pcntChange = input(7.0, minval=1) roc = 100 * (source - source[roclength]) / source[roclength] emaroc = ema(roc, roclength / 2) isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2)) /////////////// Strategy /////////////// long = haOpen < haClose and isMoving() short = haOpen > haClose and isMoving() last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) last_open_long_signal = 0.0 last_open_short_signal = 0.0 last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1]) last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1]) last_long_signal = 0.0 last_short_signal = 0.0 last_long_signal := long_signal ? time : nz(last_long_signal[1]) last_short_signal := short_signal ? time : nz(last_short_signal[1]) in_long_signal = last_long_signal > last_short_signal in_short_signal = last_short_signal > last_long_signal last_high = 0.0 last_low = 0.0 last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1]) last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1]) sl_inp = input(2.0, title='Stop Loss %') / 100 tp_inp = input(5000.0, title='Take Profit %') / 100 take_level_l = strategy.position_avg_price * (1 + tp_inp) take_level_s = strategy.position_avg_price * (1 - tp_inp) since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na slShort = strategy.position_avg_price * (1 + sl_inp) long_sl = in_long_signal ? slLong : na short_sl = in_short_signal ? slShort : na /////////////// Execution /////////////// if testPeriod() strategy.entry("L", strategy.long, when=long) strategy.entry("S", strategy.short, when=short) strategy.exit("L SL", "L", stop=long_sl, limit=take_level_l, when=since_longEntry > 0) strategy.exit("S SL", "S", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0) /////////////// Plotting /////////////// plotcandle(haOpen, haHigh, haLow, haClose, title='HA Candles', color = haOpen < haClose ? color.lime : color.red) bgcolor(isMoving() ? long ? color.lime : short ? color.red : na : color.white, transp=70) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=50)