
Strategi ini adalah berasaskan prinsip trend breakout, menggabungkan kaedah breakout saluran, menggunakan double-track breakout garis cepat untuk menilai arah trend. Strategi ini mempunyai kedua-dua penembusan entries dan penarikan exits perlindungan ganda, yang boleh bertindak balas dengan berkesan terhadap perubahan pasaran. Kelebihan terbesar strategi ini adalah dapat memantau penarikan akaun dalam masa nyata, apabila penarikan balik melebihi jumlah tertentu, akan secara proaktif mengurangkan saiz kedudukan.
Garis perlahan dan pantas: Garis perlahan dan pantas digunakan untuk membina saluran. Garis cepat bertindak balas dengan lebih cepat dan garis perlahan lebih lancar.
Penembusan entries: Apabila harga melakukan lebih banyak apabila ia menembusi saluran ke atas, kosong apabila ia menembusi saluran ke bawah. Menggunakan Stop Loss Single Stop Stop untuk mengurangkan risiko.
Keluar dari penarikan balik: pemantauan masa nyata penarikan balik maksimum. Apabila titik keluar dari penarikan balik dicapai, ia secara aktif menghentikan kedudukan rata.
Skala pegangan beradaptasi: jumlah pegangan disesuaikan dengan hak dan kepentingan akaun dalam masa nyata, untuk mengelakkan risiko pasaran. Makin besar akaun ditarik balik, semakin sedikit pegangan.
Laluan dua hala + entri terobosan, lebih tepat untuk menilai trend.
Mekanisme penangguhan kerosakan, mengawal kerugian tunggal dengan berkesan.
Pemantauan dalam masa nyata untuk penarikan balik akaun, langkah proaktif untuk menyesuaikan saiz pegangan, dan mengurangkan risiko pasaran.
Saiz pegangan bergantung kepada hak dan kepentingan akaun, ketahanan terhadap risiko yang kuat, dapat menghadapi perubahan pasaran.
Dalam kes gempa besar, kawalan penarikan mungkin tidak berkesan, menyebabkan kerugian meningkat.
Apabila garis pantas memasuki kawasan neutral, mungkin terdapat beberapa isyarat penembusan yang tidak berkesan.
Garis perlahan terlalu licin untuk menangkap perubahan pantas dalam masa yang tepat.
Apabila digunakan secara bercampur-campur, penyimpanan dua arah mempunyai risiko terkurung.
Untuk keadaan gegaran besar, toleransi penarikan balik yang lebih tinggi boleh ditetapkan untuk mengelakkan kerosakan yang berlebihan.
Menambah penapisan zon neutral untuk mengelakkan isyarat tidak sah zon neutral.
Pengoptimuman parameter untuk laluan perlahan, meningkatkan kelajuan tindak balas kepada keadaan pantas.
Menambah peraturan penjarakan terbuka untuk mengelakkan penangkapan dua arah.
Strategi ini secara keseluruhan merupakan strategi yang berkesan untuk perdagangan trend panjang dan tengah. Kelebihan terbesar strategi ini adalah pemantauan penarikan balik dalam masa nyata dan penyesuaian kedudukan secara dinamik. Ini membolehkan strategi untuk menyesuaikan saiz kedudukan secara automatik dan mempunyai kemampuan yang kuat untuk menyesuaikan diri dengan pasaran.
//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)