Chiến lược trung bình di chuyển kép 360 ° là một chiến lược giao dịch định lượng kết hợp hai trung bình di chuyển và xác định sức mạnh xu hướng. Bằng cách tính toán trung bình di chuyển trong các giai đoạn khác nhau, nó xác định xu hướng giá; trong khi đó, bằng cách tích lũy các góc chạm, nó đánh giá sức mạnh của xu hướng và đạt được các bước vào và ra chính xác hơn.
Logic cốt lõi của Chiến lược trung bình chuyển động kép 360 ° là:
Đặc biệt, chiến lược xác định trung bình động 1 phút thô và trung bình động được lọc Kalman. Bộ lọc Kalman loại bỏ một số tiếng ồn từ trung bình động để làm cho nó mịn hơn. góc chạm giữa hai đường trung bình động phản ánh sự thay đổi xu hướng giá. Ví dụ, khi góc chạm dương, nó chỉ ra xu hướng tăng; ngược lại, góc âm đại diện cho xu hướng giảm.
Chiến lược chọn 30 phút làm khoảng thời gian tính toán để tổng hợp tất cả các góc chạm dương và âm trong khoảng thời gian đó. Khi tổng vượt quá 360 độ, nó báo hiệu một xu hướng cực kỳ mạnh và phát ra tín hiệu dài; ngược lại, khi tổng dưới -360 độ, nó chỉ ra sự đảo ngược xu hướng và phát ra tín hiệu ngắn.
Những lợi thế chính của chiến lược trung bình di chuyển kép 360 ° là:
Chiến lược trung bình di chuyển kép 360 ° cũng mang một số rủi ro:
Để giảm thiểu các rủi ro trên, các biện pháp như rút ngắn thời gian trung bình động, tối ưu hóa sự kết hợp các tham số, thêm cơ chế dừng lỗ có thể được áp dụng.
Chiến lược trung bình di chuyển kép 360 ° có thể được tối ưu hóa thêm bằng cách:
Chiến lược trung bình di chuyển kép 360 ° sử dụng lọc trung bình di chuyển và đánh giá xu hướng góc chạm định lượng để đạt được một chiến lược giao dịch định lượng tương đối mạnh mẽ. So với các chỉ số kỹ thuật duy nhất, chiến lược này tạo thành một cân nhắc toàn diện hơn và có tính thực tế mạnh mẽ hơn.
/*backtest start: 2024-01-25 00:00:00 end: 2024-01-30 08:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@library=math strategy("策略360°(测试)", overlay=true) // 定义1分钟均线 ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数 //plot(ma1, color=color.yellow, title="原始均线") // 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码 kalman(x, g) => kf = 0.0 dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数 smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数 velo = 0.0 velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数 kf := smooth + velo kf // 定义卡尔曼滤波后的均线 ma2 = kalman(ma1, 0.01) plot(ma2, color=color.blue, title="卡尔曼滤波后的均线") // 定义切线角 angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数 // 定义累加的切线角 cum_angle = 0.0 cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数 // 定义30分钟周期 period = 30 // 您可以根据您的需要修改这个参数 // 定义周期内的切线角总和 sum_angle = 0.0 sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加 // 定义买入和卖出条件 buy = sum_angle > 360// 在这里使用了 math.radians() 函数 sell = sum_angle < -360 // 执行买入和卖出操作 strategy.entry("Long", strategy.long, when=buy) strategy.close("Short", when=buy) strategy.entry("Short", strategy.short, when=sell) strategy.close("Long", when=sell) // 绘制曲线图 plot(sum_angle, color=color.green, title="周期内的切线角总和") plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角