이중 이동 평균 전략 360 °는 이중 이동 평균과 트렌드 강도 결정을 통합하는 양적 거래 전략이다. 다른 기간 동안 이동 평균을 계산함으로써 가격 추세를 결정합니다. 한편, 촉각을 축적함으로써 트렌드의 강도를 판단하고 더 정확한 입출출을 달성합니다.
이중 이동 평균 전략 360°의 핵심 논리는 다음과 같습니다.
특히, 전략은 원시 1분 이동 평균과 칼만 필터 이동 평균을 정의한다. 칼만 필터는 이동 평균에서 약간의 소음을 제거하여 부드럽게 만든다. 두 이동 평균 사이의 접경 각은 가격 트렌드 변화를 반영한다. 예를 들어, 접경 각이 긍정적 인 경우 상승 추세를 나타냅니다. 반대로, 부정적인 각은 하락 추세를 나타냅니다.
이 전략은 그 기간 내의 모든 긍정적 및 부정적인 접각각을 합하는 계산 기간으로 30 분을 선택합니다. 합이 360도를 초과하면 극도로 강한 트렌드를 신호하고 긴 신호를 발사합니다. 반대로 합이 -360도 이하라면 트렌드 반전을 표시하고 짧은 신호를 발사합니다.
이중 이동 평균 전략 360°의 주요 장점은 다음과 같습니다.
이중 이동 평균 전략 360 ° 또한 몇 가지 위험을 수반:
위의 위험을 완화하기 위해 이동 평균 기간을 단축하고 매개 변수 조합을 최적화하고 스톱 로스 메커니즘을 추가하는 등의 조치를 취할 수 있습니다.
이중 이동 평균 전략 360°는 다음으로 더 이상 최적화 될 수 있습니다.
이중 이동 평균 전략 360 °는 이동 평균 필터링과 양적 접경 각 트렌드 판단을 사용하여 비교적 견고한 양적 거래 전략을 달성합니다. 단일 기술 지표와 비교하면이 전략은 더 포괄적인 고려 사항을 형성하고 더 강력한 실용성을 가지고 있습니다. 그러나 매개 변수 조정 및 위험 통제는 여전히 중요합니다. 그리고 전략은 앞으로 더 나은 결과를 위해 더 이상 최적화 될 수 있습니다.
/*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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角