Strategi Mengikuti Tren Momentum Turtle


Tanggal Pembuatan: 2023-11-23 11:53:27 Akhirnya memodifikasi: 2023-11-23 11:53:27
menyalin: 0 Jumlah klik: 627
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Momentum Turtle

Ringkasan

Strategi pelacakan tren tsunami dinamis adalah strategi pelacakan tren yang didasarkan pada hukum perdagangan tsunami. Ini menggunakan indikator tsunami untuk mengidentifikasi tren dan, dalam kombinasi dengan indikator dinamis, memfilter sebagian dari perdagangan yang berisik. Keuntungan utama dari strategi ini adalah kemampuan untuk menangkap tren harga yang kuat dan menghasilkan keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan sistem dasar terobosan dalam indikator tsunami untuk menilai arah tren. Secara khusus, ketika harga close-out lebih tinggi dari harga tertinggi dalam 20 hari terakhir, ini adalah sinyal bullish; ketika harga close-out lebih rendah dari harga terendah dalam 20 hari terakhir, strategi ini adalah sinyal bearish.

Strategi ini juga menambahkan faktor momentum untuk menyaring sebagian dari noise trading. Strategi ini tidak akan masuk ke dalam perdagangan jika harga berfluktuasi kurang dari 5 ATR. Ini dapat menghindari kerugian karena terlalu banyak head-up yang menyebabkan perdagangan kecil.

Setelah membuka posisi, strategi menggunakan nilai N dari prinsip tsunami untuk menembus exit untuk menghentikan kerugian. Sistem ini mengatur titik stop loss berdasarkan harga tertinggi dan terendah dalam 20 hari terakhir. Misalnya, harga stop loss multipel adalah ATR 2N di bawah harga terendah dalam 20 hari terakhir.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah bahwa ia menggabungkan pelacakan tren dan pengelolaan volume. Sistem perdagangan pirus dapat menangkap tren harga jangka menengah secara akurat dan menghindari gangguan dari kebisingan pasar. Dan menambahkan filter volume ATR dapat mengurangi lebih lanjut jumlah transaksi yang tidak perlu, sehingga meningkatkan ruang untuk keuntungan secara signifikan.

Secara khusus, strategi ini memiliki beberapa keuntungan:

  1. Indikator tsunami dapat digunakan untuk menilai tren dengan akurat dan dapat secara efektif melacak tren jangka menengah.
  2. Mekanisme penyaringan momentum dapat mengurangi transaksi yang tidak perlu dan menghindari kerugian pada jumlah transaksi
  3. Pengendalian risiko di tempat untuk menghentikan kerugian tepat waktu jika tren berbalik
  4. Secara keseluruhan, parameter strategi dioptimalkan dengan baik dan sangat sesuai dengan prinsip-prinsip Pantai Gading.

Analisis risiko

Meskipun ada banyak ruang untuk pengoptimalan strategi ini, ada beberapa risiko potensial yang perlu diwaspadai:

  1. Tidak dapat mengatasi masalah volatilitas yang berlebihan dalam kepemilikan jangka panjang. Posisi sizing sistem tsunami tidak mempertimbangkan faktor volatilitas, yang dapat menyebabkan kerugian tunggal yang terlalu besar.
  2. Ketika terjadi pergeseran yang drastis, harga stop loss dapat ditembus, menyebabkan kerugian yang lebih besar dari yang diharapkan.
  3. Sistem ini tidak menetapkan target keuntungan, sehingga mudah terjadi over-holding. Hal ini dapat menyebabkan risiko pengangguran.

Arah optimasi

Berdasarkan analisis risiko di atas, strategi ini memiliki beberapa optimasi utama:

  1. Algoritma posisi dinamis yang disesuaikan dengan volatilitas dapat dipertimbangkan, sehingga dapat secara aktif mengurangi posisi ketika kerugian memegang mencapai tingkat tertentu.
  2. Menambahkan mekanisme reversal, pertimbangkan pengurangan posisi atau reversal caving ketika membentuk bentuk yang mirip dengan head-to-shoulder and double-top.
  3. Tingkatkan target keuntungan. Jika keuntungan terakumulasi mencapai persentase tertentu dari total aset akun, Anda dapat mengurangi sebagian dari uang kembali.

Meringkaskan

Strategi pelacakan tren tsunami dinamika secara keseluruhan adalah program pelacakan tren garis tengah yang sangat praktis. Ini menggabungkan indikator penilaian tren tsunami dan filter getaran indikator ATR, yang dapat secara efektif mengunci tren harga yang kuat. Selain itu, kontrol risiko dan pengoptimalan parameter strategi juga sangat tepat, yang dapat mengurangi kemungkinan penarikan balik. Efek strategi ini dapat ditingkatkan lebih lanjut jika terus menambahkan modul seperti manajemen posisi dinamis, mekanisme reversal, dan target laba.

Kode Sumber Strategi
/*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)