La stratégie 360° de la moyenne mobile double est une stratégie de trading quantitative qui intègre des moyennes mobiles doubles et la détermination de la force de tendance.
La logique de base de la stratégie 360° de la moyenne mobile double est la suivante:
Plus précisément, la stratégie définit la moyenne mobile brute d'une minute et la moyenne mobile filtrée par Kalman. Le filtre Kalman élimine un peu de bruit de la moyenne mobile pour la rendre plus lisse. L'angle de tangence entre les deux moyennes mobiles reflète les changements de tendance des prix. Par exemple, lorsque l'angle de tangence est positif, il indique une tendance à la hausse; inversement, un angle négatif représente une tendance à la baisse.
La stratégie choisit 30 minutes comme période de calcul pour additionner tous les angles tangents positifs et négatifs dans cette période. Lorsque la somme dépasse 360 degrés, elle signale une tendance extrêmement forte et émet un signal long; inversement, lorsque la somme est inférieure à -360 degrés, elle indique un renversement de tendance et émet un signal court.
Les principaux avantages de la stratégie de la moyenne mobile double 360° sont les suivants:
La stratégie 360° de la moyenne mobile double comporte également certains risques:
Pour atténuer les risques susmentionnés, des mesures telles que le raccourcissement de la période de moyenne mobile, l'optimisation des combinaisons de paramètres, l'ajout de mécanismes de stop-loss peuvent être adoptées.
La stratégie des moyennes mobiles doubles 360° peut être optimisée par:
La stratégie 360° de la moyenne mobile double utilise le filtrage de la moyenne mobile et les jugements quantitatifs de tendance de l'angle tangent pour atteindre une stratégie de trading quantitative relativement robuste.
/*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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角