
Chiến lược này là một hệ thống theo dõi xu hướng cổ điển. Nó sử dụng đường trung bình di chuyển để xác định hướng xu hướng và tham gia khi phá vỡ kênh Dongxian. Các tham số của kênh Dongxian được đặt ở mức 50 ngày có thể lọc hiệu quả tiếng ồn thị trường ngắn hạn.
Chiến lược này được xây dựng dựa trên những điểm sau:
Sử dụng đường trung bình di chuyển chỉ số 40 ngày và 120 ngày để xây dựng các chỉ số để đánh giá xu hướng. Khi đường nhanh đi qua đường chậm từ phía dưới, là tín hiệu vàng, cho thấy xu hướng đi lên; Khi đường nhanh đi qua đường chậm từ phía trên xuống, là tín hiệu chết, cho thấy xu hướng đi xuống.
Các tham số của đường Dongxian được thiết lập là 50 ngày, lọc các biến động ngắn hạn của thị trường. Chỉ làm nhiều khi giá phá vỡ đường lên và làm rỗng khi phá vỡ đường xuống, để tránh bị mắc kẹt.
Đặt điểm dừng lỗ là 4 lần ATR bên dưới giá. ATR có thể đo lường hiệu quả sự biến động và rủi ro của thị trường, đặt điểm dừng lỗ cho một số nhân của nó có thể kiểm soát tổn thất của một giao dịch.
Đường trung bình di chuyển chỉ số phù hợp hơn với xu hướng giá hiện tại, trong khi đường trung bình di chuyển đơn giản quá trơn tru.
Thời hạn chuyển tiếp 50 ngày được sử dụng kết hợp với đường trung bình 40, 120 ngày, có thể lọc hiệu quả các đột phá giả mạo.
Chiến lược này có những ưu điểm sau:
Hỗn hợp trung bình di chuyển có thể xác định hiệu quả hướng xu hướng thị trường. Đường trung bình 40 ngày có thể nắm bắt xu hướng ngắn hạn, đường trung bình 120 ngày có thể xác định xu hướng dài trung bình.
Đường Dongxian lọc tiếng ồn, tránh theo đuổi cao và hạ. Chỉ có giá phá vỡ đường vào, có thể tránh hiệu quả khu vực xung đột ở giữa thị trường giao dịch.
Điểm dừng lỗ được thiết lập hợp lý, có thể kiểm soát tổn thất giao dịch đơn lẻ, tránh bùng nổ. Việc kiểm soát tổn thất đơn lẻ có thể đảm bảo tính bền vững của lợi nhuận.
Chỉ số di chuyển trung bình phù hợp hơn với xu hướng thay đổi giá, thời gian giữ của hệ thống có thể dài hơn, phù hợp với tư duy giao dịch xu hướng.
Các tham số trung bình di chuyển được lựa chọn dựa trên sự nhạy cảm của xu hướng và sự ổn định của bộ lọc tiếng ồn.
Chiến lược này cũng có một số rủi ro:
Rủi ro của việc giữ vị trí dài hạn: Chiến lược này thuộc chiến lược theo dõi xu hướng, sẽ phải đối mặt với tổn thất lớn hơn khi có sự sắp xếp ngang dài hạn hoặc xu hướng đảo ngược.
Rủi ro phá vỡ giả: Một tỷ lệ phá vỡ giả có thể xảy ra khi giá chạm vào gần các kênh, dẫn đến giao dịch không cần thiết.
Rủi ro đặt tham số: Cài đặt các tham số trung bình di chuyển và đường dẫn quá chủ quan, các thị trường khác nhau cần điều chỉnh các tham số, nếu không sẽ ảnh hưởng đến sự ổn định của hệ thống.
Rủi ro điểm dừng quá nhỏ: điểm dừng được thiết lập quá nhỏ, sẽ phải đối mặt với quá nhiều điểm dừng, ảnh hưởng đến lợi nhuận.
Giải pháp tương ứng:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Kiểm tra các kết hợp của các đường trung bình khác nhau để tìm các kết hợp tham số tốt nhất. Bạn có thể kiểm tra các kết hợp của các trung bình di chuyển như đơn giản, chỉ số, Hull.
Tối ưu hóa các chu kỳ và tham số của kênh, làm cho tín hiệu đột phá hiệu quả hơn. Có thể tối ưu hóa với tần số dao động của thị trường.
Tối ưu hóa chiến lược dừng lỗ, sử dụng dừng theo dõi xu hướng trong quá trình chạy xu hướng, sử dụng dừng cố định sau khi xu hướng kết thúc.
Sử dụng các chỉ số như MACD, KD để xác thực đa yếu tố, tăng độ chính xác của tín hiệu.
Tăng chiến lược quản lý vị trí, tăng vị trí trong khi chạy xu hướng, tối ưu hóa lợi nhuận.
Lựa chọn các tham số kết hợp dựa trên các đặc điểm của các giống khác nhau, làm cho tham số hệ thống trở nên mạnh hơn.
Chiến lược này nói chung là một hệ thống theo dõi xu hướng điển hình và đơn giản hơn. Trung tâm là việc sử dụng đường trung bình di chuyển và lọc đột phá của kênh. Chiến lược dừng lỗ cũng là cổ điển và thực tế. Chiến lược này có thể được sử dụng như là khung cơ bản để phát triển hệ thống định lượng, có thể được đưa vào sử dụng trực tiếp và thu nhập cũng ổn định hơn.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Robrecht99
//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)
// Backtest Range //
Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")
//Moving Averages //
len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")
// Donchian Channels //
Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //
length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))
// Buy and Sell Conditions //
entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast
// Buy and Sell Signals //
if (close > h1 and entrycondition2)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
strategy.close(id="long")
if (close < l1 and sellcondition2)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
strategy.close(id="short")