Strategi Pengesanan Trend Turtle Momentum adalah strategi mengikuti trend berdasarkan peraturan Perdagangan Turtle. Ia menggunakan Indikator Turtle untuk mengenal pasti trend dan menggabungkan metrik momentum untuk menapis beberapa perdagangan bising. Kelebihan utama strategi ini adalah keupayaan untuk menangkap trend harga yang kuat dan mencapai pulangan yang berlebihan.
Strategi ini menggunakan sistem breakout dalam Turtle Indicators untuk menentukan arah trend. Khususnya, apabila harga penutupan lebih tinggi daripada harga tertinggi dalam tempoh 20 hari yang lalu, ia adalah isyarat bullish dan pergi panjang; apabila harga penutupan lebih rendah daripada harga terendah dalam tempoh 20 hari yang lalu, ia adalah isyarat bearish dan strategi pergi pendek.
Untuk menapis beberapa perdagangan bunyi bising, strategi ini juga menggabungkan faktor momentum. Jika turun naik harga kurang daripada 5 ATR, strategi tidak akan memasuki perdagangan. Ini mengelakkan kerugian dari whipsaws di pasaran sampingan.
Selepas membuka kedudukan, strategi ini menggunakan keluar N-breakout dalam peraturan Turtle asal untuk kerugian berhenti. Sistem ini menetapkan kerugian berhenti berdasarkan harga tertinggi dan terendah dalam tempoh 20 hari yang lalu. Sebagai contoh, kerugian berhenti untuk kedudukan panjang akan menjadi 2N ATR di bawah yang terendah dalam tempoh 20 hari yang lalu.
Kelebihan terbesar strategi ini ialah ia menggabungkan kedua-dua trend berikut dan pengurusan momentum. Sistem penyu boleh dengan tepat menangkap trend jangka pertengahan dalam harga tanpa diganggu oleh bunyi bising pasaran. penapis momentum ATR tambahan seterusnya mengurangkan bilangan dagangan yang tidak perlu, dengan itu meningkatkan potensi keuntungan.
Secara khusus, strategi ini mempunyai kekuatan berikut:
Walaupun terdapat potensi yang besar untuk pengoptimuman lanjut, strategi ini juga membawa beberapa risiko untuk menjaga:
Berdasarkan risiko di atas, peluang pengoptimuman utama termasuk:
Secara keseluruhan, strategi Pemantauan Trend Turtle adalah sistem yang kukuh untuk trend jangka menengah hingga panjang. Ia menggabungkan penunjuk Turtle untuk pengenalan trend dan penapis ATR untuk pengurusan turun naik untuk menangkap trend yang kuat. Selain itu kawalan risiko dan penyesuaian parameter adalah kukuh untuk mengurangkan pengeluaran. Peningkatan lanjut seperti ukuran dinamik, pembalikan dan pengambilan keuntungan dapat meningkatkan prestasi.
/*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)