Strategi Mengikuti Trend Turtle Momentum


Tarikh penciptaan: 2023-11-23 11:53:27 Akhirnya diubah suai: 2023-11-23 11:53:27
Salin: 0 Bilangan klik: 627
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Turtle Momentum

Gambaran keseluruhan

Strategi pengesanan trend tsunami dinamik adalah strategi pengesanan trend berdasarkan undang-undang perdagangan tsunami. Ia menggunakan indikator tsunami untuk mengenal pasti trend, dan digabungkan dengan indikator dinamik untuk menyaring sebahagian daripada perdagangan bising. Kelebihan utama strategi ini adalah keupayaan untuk menangkap trend harga yang kuat dan mencapai keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan sistem penembusan asas dalam indikator tsunami untuk menentukan arah trend. Khususnya, apabila harga penutupan lebih tinggi daripada harga tertinggi dalam 20 hari terakhir, ia adalah isyarat bullish, dan apabila harga penutupan lebih rendah daripada harga terendah dalam 20 hari terakhir, ia adalah isyarat bearish.

Untuk menapis sebahagian daripada perdagangan bising, strategi ini juga menambahkan faktor momentum. Jika harga turun naik kurang dari 5 ATR, maka strategi tidak akan memasuki perdagangan. Ini dapat mengelakkan kerugian yang disebabkan oleh perdagangan kecil kerana terlalu banyak kepala kosong.

Selepas membuka kedudukan, strategi menggunakan nilai N dalam prinsip tebing untuk menembusi exit untuk menghentikan kerugian. Sistem ini menetapkan titik berhenti berdasarkan harga tertinggi dan terendah dalam 20 hari terakhir. Sebagai contoh, harga berhenti yang lebih sederhana adalah ATR 2N di bawah harga terendah dalam 20 hari terakhir.

Analisis kelebihan

Kelebihan utama strategi ini adalah ia menggabungkan trend tracking dan pengurusan momentum. Sistem perdagangan pirus dapat menangkap trend harga pertengahan dengan tepat dan mengelakkan gangguan dari bunyi pasaran. Menambah penapis momentum ATR dapat mengurangkan jumlah perdagangan yang tidak perlu, dan dengan itu meningkatkan ruang keuntungan.

Secara khusus, strategi ini mempunyai beberapa kelebihan:

  1. Indeks Pantai adalah tepat dan boleh dipercayai untuk mengesan trend, dan boleh mengesan trend jangka menengah dengan berkesan.
  2. Mekanisme penapisan kuantiti dapat mengurangkan transaksi yang tidak perlu dan mengelakkan kerugian pada jumlah transaksi
  3. Langkah-langkah kawalan risiko yang sedia ada untuk menghentikan kerugian dalam masa yang tepat apabila trend berbalik
  4. Secara keseluruhannya, parameter strategi telah dioptimumkan dengan baik dan sesuai dengan prinsip-prinsip pantai.

Analisis risiko

Walaupun terdapat banyak ruang untuk pengoptimuman strategi ini, ia juga mempunyai beberapa risiko yang perlu dielakkan:

  1. Tidak dapat menyelesaikan masalah turun naik yang berlebihan dalam memegang kedudukan jangka panjang. Saiz kedudukan sistem tsunami tidak mempertimbangkan faktor turun naik, yang boleh menyebabkan kerugian tunggal yang terlalu besar.
  2. Apabila pasaran berbalik, harga stop loss mungkin akan ditembusi, menyebabkan kerugian yang lebih besar daripada jangkaan.
  3. Sistem ini tidak menetapkan matlamat keuntungan, dan ia mudah untuk mempunyai terlalu banyak kedudukan. Ini membawa kepada risiko pengangguran.

Arah pengoptimuman

Berdasarkan analisis risiko di atas, terdapat beberapa penambahbaikan utama dalam strategi ini:

  1. Algoritma kedudukan dinamik yang disesuaikan dengan kadar turun naik boleh dipertimbangkan, supaya anda dapat menurunkan kedudukan secara aktif apabila kerugian memegang mencapai tahap tertentu.
  2. Menambah mekanisme pembalikan, pertimbangkan untuk mengurangkan atau membalikkan kosong apabila membentuk bentuk yang serupa dengan kepala, bahu dan dua puncak.
  3. Meningkatkan sasaran keuntungan. Apabila keuntungan terkumpul mencapai peratusan tertentu dari jumlah aset akaun, anda boleh mengurangkan sebahagian daripada pulangan.

ringkaskan

Strategi pengesanan trend tsunami dinamik secara keseluruhan adalah program pengesanan trend garis tengah yang sangat praktikal. Ia menggabungkan indikator penilaian trend tsunami dan penapis gegaran indikator ATR, yang dapat mengunci trend harga yang kuat. Di samping itu, kawalan risiko dan pengoptimuman parameter strategi juga sangat tepat, yang dapat mengurangkan kemunduran.

Kod 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)