Strategi Perdagangan Adaptif Turtle Breakout Retracement


Tanggal Pembuatan: 2023-12-08 11:54:02 Akhirnya memodifikasi: 2023-12-08 11:54:02
menyalin: 0 Jumlah klik: 732
1
fokus pada
1621
Pengikut

Strategi Perdagangan Adaptif Turtle Breakout Retracement

Ringkasan

Strategi ini didasarkan pada prinsip trend breakout, yang menggabungkan metode channel breakout, menggunakan jalur cepat dan lambat untuk menentukan arah tren. Strategi ini memiliki entri yang terobosan dan keluar mundur dengan perlindungan ganda, yang dapat secara efektif menanggapi perubahan pasar. Keuntungan terbesar dari strategi ini adalah bahwa Anda dapat memantau mundur akun secara real-time, dan ketika mundur melebihi proporsi tertentu, Anda akan secara proaktif mengurangi ukuran posisi Anda.

Prinsip Strategi

  1. Jalur cepat dan lambat dua jalur: menggunakan jalur cepat dan lambat untuk membangun saluran. Jalur cepat lebih cepat merespon, dan jalur lambat lebih halus.

  2. Breakout entries: melakukan lebih banyak ketika harga menembus saluran ke atas, kosong saat menembus saluran ke bawah. Menggunakan Stop Loss Single Stop untuk mengurangi risiko.

  3. Keluar dari penarikan: pemantauan maksimal penarikan secara real-time. Keluar dari penarikan akan secara aktif menghentikan posisi terendah setelah mencapai titik keluar dari penarikan. Keluar dari penarikan dapat disesuaikan dengan kondisi pasar.

  4. Skala kepemilikan beradaptasi: jumlah kepemilikan disesuaikan secara real time dengan hak dan kepentingan akun, menghindari risiko pasar. Semakin besar penarikan akun, semakin sedikit kepemilikan.

Keunggulan Strategis

  1. Dua jalur + entri terobosan, lebih akurat dalam menilai tren.

  2. Mekanisme penghentian kerugian, pengendalian kerugian tunggal yang efektif.

  3. Monitoring real-time penarikan akun, secara proaktif menyesuaikan ukuran kepemilikan, mengurangi risiko pasar.

  4. Ukuran posisi terikat dengan hak dan kepentingan akun, ketahanan terhadap risiko yang kuat, dapat menanggapi perubahan pasar.

Risiko Strategis

  1. Dalam situasi gempa besar, kontrol penarikan bisa gagal dan menyebabkan kerugian meningkat.

  2. Ketika jalur cepat memasuki zona netral, mungkin terjadi beberapa kali sinyal penembusan yang tidak efektif.

  3. Jalurnya terlalu licin untuk menangkap gerakan berbalik dengan cepat.

  4. Dalam penggunaan campuran multi-ruang, dua arah memiliki risiko terkurung.

Arah optimasi strategi

  1. Toleransi penarikan yang lebih tinggi dapat diatur untuk situasi gempa besar, untuk menghindari kerusakan yang berlebihan.

  2. Tambahkan filter zona netral untuk menghindari sinyal zona netral yang tidak berfungsi.

  3. Optimalisasi parameter pada jalur lambat untuk meningkatkan respons terhadap situasi cepat.

  4. Menambahkan aturan penataan gudang terbuka untuk menghindari penangkapan dua arah.

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi yang efektif untuk perdagangan tren panjang dan menengah. Keuntungan terbesar dari strategi ini adalah pemantauan penarikan real-time dan penyesuaian posisi secara dinamis. Hal ini memungkinkan strategi untuk secara otomatis menyesuaikan ukuran posisi dan memiliki kemampuan yang kuat untuk beradaptasi dengan pasar.

Kode Sumber Strategi
//Noro
//2020

//Original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007, CURTIS FAITH, ISBN: 9780071486644) 

//@version=4
strategy("Noro's Turtles Strategy", shorttitle = "Turtles str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, title = "Long")
needshort = input(false, title = "Short")
sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
needfast = input(true, title = "Fast")
needslow = input(true, title = "Slow")
enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)
showof = input(true, title = "Show offset")
showll = input(false, title = "Show lines")
showlabel = input(true, defval = true, title = "Show label")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast
fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

//Slow
slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

//Lines
offset = showof ? 1 : 0
col1 = showll and needlong and needfast ? color.blue : na
col2 = showll and needshort and needfast ? color.red : na
col3 = showll and needlong and needslow ? color.blue : na
col4 = showll and needshort and needslow ? color.red : na
plot(fastL, color = col1, offset = offset)
plot(fastLC, color = col1, offset = offset)
plot(fastS, color = col2, offset = offset)
plot(fastSC, color = col2, offset = offset)
plot(slowL, color = col3, offset = offset)
plot(slowLC, color = col3, offset = offset)
plot(slowS, color = col4, offset = offset)
plot(slowSC, color = col4, offset = offset)

//Orders
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
size = strategy.position_size
lotlong = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort = 0.0
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Fast
strategy.entry("fast L", strategy.long, lotlong, stop = fastL, when = needfast and needlong and strategy.position_size == 0 and truetime)
strategy.entry("fast S", strategy.short, lotshort, stop = fastS, when = needfast and needshort and strategy.position_size == 0 and truetime)
strategy.exit("fast L", stop = fastLC, when = needfast and needlong and strategy.position_size > 0)
strategy.exit("fast S", stop = fastSC, when = needfast and needshort and strategy.position_size < 0)

//Slow
strategy.entry("slow L", strategy.long, lotlong, stop = slowL, when = needslow and needlong and strategy.position_size == 0 and truetime)
strategy.entry("slow S", strategy.short, lotshort, stop = slowS, when = needslow and needshort and strategy.position_size == 0 and truetime)
strategy.exit("slow L", stop = slowLC, when = needslow and needlong and strategy.position_size > 0)
strategy.exit("slow S", stop = slowSC, when = needslow and needshort and strategy.position_size < 0)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showlabel

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)