
La stratégie de croisement de canaux d’adaptation entre les moyennes mobiles à trois indices et les moyennes mobiles à trois indices est un système de négociation quantitative combinant des EMA (moyennes mobiles indicielles) et des RMA (moyennes mobiles relatives) à courtes périodes. Elle utilise l’indicateur ATR (amplitude d’onde réelle) pour construire des canaux de prix et identifier les signaux d’entrée en bourse en capturant le comportement de rupture des prix sur ces canaux. La stratégie intègre un mécanisme de gestion des risques qui calcule la taille de la position avec un ratio de risque fixe et utilise le prix d’ouverture comme point d’arrêt, tout en concevant un mécanisme de placement des positions basé sur le prix d’ouverture d’un cycle précédent, formant un système de négociation complet.
La logique centrale de la stratégie est basée sur la combinaison de deux ensembles de moyennes avec leur canal ATR:
Système de canal de l’EMA:
Système de voies RMA:
Conditions de déclenchement du signal:
Gestion des positions:
Les mécanismes de stop-loss et de liquidation:
Répondre rapidement aux changements du marchéLa stratégie utilise des moyennes mobiles à cycles ultra-court pour capturer rapidement les fluctuations de prix et entrer en tendance à temps.
Mécanisme de double confirmationLes deux systèmes EMA et RMA fonctionnent ensemble et la fiabilité des transactions est considérablement améliorée lorsque les deux émettent le même signal de direction.
Adaptation à la volatilitéLa stratégie permet d’ajuster automatiquement la sensibilité dans différents environnements de fluctuation.
Un contrôle précis des risquesLe risque est fixé à 0,5% du capital du compte et le seuil de risque d’une transaction est strictement contrôlé.
Une stratégie de sortie claireLe mécanisme de placement basé sur le prix d’ouverture du cycle précédent offre une claire garantie de rentabilité pour la transaction.
Multiplication des canaux différenciés: Le canal EMA utilise 1,5 fois l’ATR, tandis que le canal RMA utilise 1,0 fois l’ATR. Cette conception permet aux deux systèmes d’avoir une sensibilité différente et d’être capables de saisir différents types d’opportunités de marché.
Risques liés à la surventeLes moyennes mobiles à très courte période peuvent générer trop de faux signaux dans un marché en crise, ce qui entraîne des transactions fréquentes et une érosion des frais de traitement.
Le paramètre de stop loss est trop fixeL’utilisation du prix d’ouverture comme point d’arrêt peut ne pas toujours être la meilleure option, en particulier dans des situations de forte volatilité ou de saut en longueur.
Les conditions de placement sont plus simplesLes prix d’ouverture de la période précédente peuvent entraîner une sortie prématurée d’une tendance forte.
Le manque de filtrage du marché: la stratégie ne fait pas de distinction entre les différents états du marché ((trends/tremblements), et peut être fréquemment négociée dans des conditions de marché inappropriées.
Risques liés à l’optimisation des paramètres: les paramètres actuels (comme le cycle 3 et le multiplicateur ATR) peuvent être trop conformes aux données historiques, et la performance future est incertaine.
Optimisation de l’adaptabilité des conditions du marché:
Confirmation de plusieurs périodes:
Optimisation dynamique du stop loss:
Une stratégie de placement renforcée:
Évaluation de la qualité du signal:
La stratégie de croisement de canaux adaptative entre la moyenne mobile triangulaire et la moyenne mobile relative triangulaire combine habilement deux types différents de moyennes mobiles et de canaux ATR, formant un système de négociation sensible aux ruptures de prix et doté d’une capacité de contrôle du risque. Cette stratégie est particulièrement adaptée pour capturer les fluctuations de prix à court terme et réagir rapidement aux tendances à évolution rapide.
Cependant, la stratégie présente également des risques potentiels de survente et des problèmes d’adaptabilité aux conditions du marché. La robustesse et la performance à long terme de la stratégie peuvent être considérablement améliorées par l’ajout de filtres d’état du marché, l’optimisation des mécanismes de stop-loss et l’introduction de confirmation de plusieurs périodes. En particulier, l’ajout de la capacité d’identification de l’environnement du marché permettra à la stratégie de s’engager de manière sélective dans des transactions dans différentes conditions de marché, améliorant encore l’utilité et la rentabilité de la stratégie.
Dans l’ensemble, il s’agit d’une stratégie de trading quantitatif structurée et logiquement rigoureuse, dotée d’une bonne base théorique et d’un potentiel d’application. Grâce aux orientations d’optimisation suggérées dans cet article, la stratégie devrait être plus adaptable et stable dans divers environnements de marché.
/*backtest
start: 2024-04-07 00:00:00
end: 2025-04-06 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("EMA3 & RMA3 ATR Strategy", overlay=true, initial_capital=10000, currency=currency.USD)
// —— 输入参数 ——
ema_len = input.int(3, "EMA周期")
ema_mult = input.float(1.5, "EMA通道ATR乘数", step=0.1)
rma_len = input.int(3, "RMA周期")
rma_mult = input.float(1.0, "RMA通道ATR乘数", step=0.1)
atr_len = input.int(3, "ATR周期")
// —— 核心计算 ——
ema_val = ta.ema(close, ema_len)
atr_val = ta.atr(atr_len)
ema_upper = ema_val + atr_val * ema_mult
ema_lower = ema_val - atr_val * ema_mult
rma_val = ta.rma(close, rma_len)
rma_upper = rma_val + atr_val * rma_mult
rma_lower = rma_val - atr_val * rma_mult
// —— 信号条件 ——
ema_buy = barstate.isconfirmed and close > ema_upper
ema_sell = barstate.isconfirmed and close < ema_lower
rma_buy = barstate.isconfirmed and close > rma_upper
rma_sell = barstate.isconfirmed and close < rma_lower
// —— 仓位计算 ——
risk_percent = 0.5 // 单次风险0.5%
position_size(price, stop_price) =>
risk_amount = strategy.equity * risk_percent / 100
math.abs(price - stop_price) > 0 ? (risk_amount / math.abs(price - stop_price)) : na
// —— 交易逻辑 ——
var float prev_open = na
if barstate.isconfirmed
prev_open := open[1]
// 多单逻辑
if (ema_buy or rma_buy) and strategy.position_size == 0
stop_price = open
qty = position_size(close, stop_price)
if not na(qty)
strategy.entry("Long", strategy.long, qty=qty)
strategy.exit("Long Stop", "Long", stop=stop_price)
// 空单逻辑
if (ema_sell or rma_sell) and strategy.position_size == 0
stop_price = open
qty = position_size(close, stop_price)
if not na(qty)
strategy.entry("Short", strategy.short, qty=qty)
strategy.exit("Short Stop", "Short", stop=stop_price)
// 平仓逻辑
if strategy.position_size > 0
if ta.crossover(low, prev_open)
strategy.close("Long")
if strategy.position_size < 0
if ta.crossunder(high, prev_open)
strategy.close("Short")
// —— 可视化 ——
plot(ema_val, "EMA3", color.new(#00BFFF, 0), 2)
plot(ema_upper, "EMA Upper", color.red, 1)
plot(ema_lower, "EMA Lower", color.green, 1)
plot(rma_val, "RMA3", color.new(#FFA500, 0), 2)
plot(rma_upper, "RMA Upper", #FF1493, 1)
plot(rma_lower, "RMA Lower", #32CD32, 1)