Chiến lược này được gọi là chiến lược giao dịch hải dương dựa trên kênh Donchian. Chiến lược này lấy ý tưởng chính của các kinh nghiệm giao dịch hải dương nổi tiếng, sử dụng kênh Donchian để đánh giá xu hướng thị trường, lọc kết hợp với đường trung bình di chuyển, để thực hiện một chiến lược theo dõi xu hướng đơn giản hơn.
Chỉ số phán đoán chính của chiến lược này là kênh Donchian. Các kênh Donchian bao gồm phạm vi dao động trong N ngày của giá cao nhất và giá thấp nhất, nếu giá phá vỡ đường dẫn lên, thì là tín hiệu dài; nếu phá vỡ đường dẫn xuống, thì là tín hiệu ngắn.
Ngoài ra, chiến lược này cũng giới thiệu hai đường trung bình di chuyển (đường 50 ngày và đường 125 ngày) để lọc tín hiệu. Các giao dịch đa đầu sẽ chỉ được thực hiện khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm; giao dịch trống sẽ được thực hiện khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm. Điều này có thể lọc một số tín hiệu giả.
Điều kiện mở lệnh của chiến lược này là: giá trên đi qua kênh Donchian lên đường, và trên đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm, đáp ứng cả hai điều kiện mới mở nhiều lệnh; giá dưới đi qua kênh Donchian xuống đường, và dưới đường trung bình di chuyển chậm đi qua đường trung bình di chuyển chậm, mở đơn trống. Điều kiện vị trí thấp là giá chạm vào đường biên kênh Donchian chậm theo hướng ngược lại.
Chiến lược này có những ưu điểm sau:
Sử dụng kênh Donchian để xác định xu hướng, có hiệu quả tốt hơn trong việc đo lại và nắm bắt được xu hướng lớn;
Thêm bộ lọc cho các đường trung bình di chuyển, có thể lọc ra một số tín hiệu giả và tránh thiệt hại;
Sự kết hợp của các kênh Donchian chậm và trung bình di chuyển nhanh giúp cân bằng tần suất giao dịch và độ chính xác của dừng lỗ;
Các cơ sở quản lý rủi ro và các cơ chế ngăn chặn để kiểm soát tổn thất đơn lẻ.
Chiến lược này cũng có một số rủi ro:
Trong một tình huống chấn động, có thể có nhiều đơn vị thua lỗ nhỏ hơn.
Khi xu hướng thay đổi, việc lọc trung bình di chuyển sẽ làm tăng chi phí xây dựng kho;
Trong trường hợp của các nhà đầu tư, có thể xảy ra trường hợp bị truy tố.
Phương pháp đối phó và giải pháp:
Các tham số có thể được điều chỉnh thích hợp, rút ngắn chu kỳ Donchian, giảm chu kỳ trung bình di chuyển để phù hợp với các thị trường khác nhau.
Tăng khả năng đánh giá các xu hướng lớn, tránh tạo cơ sở để chống lại xu hướng lớn
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tăng khả năng phán đoán về cường độ đột phá. Ví dụ, giới thiệu khối lượng giao dịch, chỉ mở cửa nếu khối lượng giao dịch lớn hơn;
Tăng khả năng đánh giá các vùng nóng. Xác định các vùng nóng giá, kết hợp với các mức áp lực hỗ trợ, các vùng sóng và các đường nét khác, tránh xây dựng kho tại các vùng nóng.
Tối ưu hóa chiến lược dừng lỗ. Bạn có thể giới thiệu theo dõi dừng lỗ, dừng amplitude, dừng thời gian, để dừng lỗ thông minh hơn.
Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất điển hình và đơn giản. Bằng cách phán đoán hướng của kênh Donchian, các tín hiệu lọc đường trung bình di chuyển, hiệu quả đo lường tốt hơn. Chiến lược này phù hợp với các nhà đầu tư theo đuổi xu hướng lớn, kiểm soát rủi ro, dễ dàng hoạt động trên thực tế. Bằng cách tối ưu hóa một số tham số và quy tắc, có thể nâng cao hơn nữa tỷ lệ chiến thắng và khả năng lợi nhuận của chiến lược.
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Coded by Vladkos
strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5)
fromyear = input(2017, defval = 2018, minval = 1800, 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(21, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
ATR=input(20,minval=1)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstoploss= input(true,defval=true,title="Stop LOSS")
///////////ATR
tra=atr(ATR)
////////////Переменные
Donchian_slow=input(20,minval=1)
Donchian_fast=input(10,minval=1)
Slow_EMA=input(125,minval=1)
Fast_EMA=input(50,minval=1)
/////////// Медленный Дончан
lower = lowest(Donchian_slow)
upper = highest(Donchian_slow)
basis = avg(upper, lower)
plot(lower,color=blue)
plot(upper,color=blue)
/////////// быстрый Дончан
lowerF = lowest(Donchian_fast)
upperF = highest(Donchian_fast)
basisF = avg(upperF, lowerF)
plot(lowerF,color=red)
plot(upperF,color=red)
////////// Скользящие средние
ema_S=ema(close,Slow_EMA)
ema_F=ema(close,Fast_EMA)
plot(ema_S,color=red)
plot(ema_F,color=green)
///////// Условия сделок
long_condition= close>=upper[1] and ema_F>ema_S
long_exit= close<lowerF[1]
short_condition=close<=lower[1] and ema_F<ema_S
short_exit=close>upperF[1]
////////// Отправка ордеров
strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true)
strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true))
strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true))
strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true))
strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()