
Chiến lược này chủ yếu dựa trên nguyên tắc phá vỡ xu hướng, kết hợp với phương pháp phá vỡ kênh, sử dụng phá vỡ hai đường dẫn nhanh và chậm để đánh giá xu hướng. Chiến lược này có cả các mục nhập phá vỡ và các lối ra rút lui. Bảo vệ kép, có thể đáp ứng hiệu quả với sự đột biến của thị trường. Ưu điểm lớn nhất của chiến lược là có thể theo dõi rút lui tài khoản trong thời gian thực, khi rút lui vượt quá một tỷ lệ nhất định, sẽ chủ động giảm quy mô vị trí.
Đường hai đường nhanh chậm: sử dụng đường nhanh và đường chậm để xây dựng đường. Đường nhanh phản ứng nhanh hơn, đường chậm mịn hơn. Kết hợp với đường hai đường phá vỡ định hướng xu hướng.
Các mục phá vỡ: Khi giá phá vỡ kênh lên, hãy làm nhiều hơn, khi phá vỡ kênh xuống, hãy làm trống. Sử dụng phương pháp dừng lỗ đơn để giảm rủi ro.
Exits rút lui: giám sát rút lui tối đa trong thời gian thực. Khi điểm rút lui đạt được, nó sẽ chủ động dừng lỗ bằng.
Tự điều chỉnh quy mô nắm giữ: Số lượng nắm giữ được điều chỉnh theo quyền lợi của tài khoản theo thời gian thực, tránh rủi ro thị trường.
Đường hầm song song với các mục đột phá giúp xác định xu hướng chính xác hơn.
Cơ chế ngăn chặn thiệt hại, kiểm soát hiệu quả tổn thất đơn lẻ.
Theo đó, các nhà đầu tư có thể có các cơ hội khác nhau để có thể thực hiện các hoạt động như: thu hồi tài khoản theo thời gian thực, chủ động điều chỉnh quy mô nắm giữ, giảm rủi ro thị trường.
Kích thước nắm giữ được gắn liền với quyền lợi tài khoản, khả năng chống rủi ro mạnh mẽ, có thể đối phó với sự biến động của thị trường.
Trong một cơn động đất lớn, các biện pháp kiểm soát rút lui có thể không hiệu quả, dẫn đến tổn thất lớn hơn.
Một số tín hiệu đột phá không hiệu quả có thể xuất hiện khi đường dây nhanh đi vào vùng trung lập.
Tuy nhiên, các nhà khoa học đã phát hiện ra rằng đường dây quá mịn mà không thể bắt kịp được sự chuyển đổi nhanh chóng.
Khi sử dụng hỗn hợp nhiều không gian, lưu trữ hai chiều có nguy cơ bị giam giữ.
Đối với các trường hợp động đất lớn, bạn có thể thiết lập dung nạp cao hơn để tránh thiệt hại quá mức.
Tăng bộ lọc vùng trung tính để tránh các tín hiệu không hiệu quả trong vùng trung tính.
Tối ưu hóa các tham số của đường dây chậm, tăng tốc độ phản ứng với các tình huống nhanh.
Thêm quy tắc sắp xếp kho để tránh bị giam giữ hai bên.
Chiến lược này nói chung là một chiến lược hiệu quả phù hợp với giao dịch xu hướng đường dài và trung bình. Lợi thế lớn nhất của chiến lược là giám sát rút lui và điều chỉnh động trong thời gian thực. Điều này cho phép chiến lược tự động điều chỉnh quy mô vị trí và có khả năng thích ứng mạnh mẽ với thị trường.
//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)