
Il s’agit d’une stratégie de négociation basée sur un croisement des moyennes mobiles à 15 cycles et des moyennes mobiles à 50 cycles (EMA). La stratégie permet un contrôle optimal du rapport risque/bénéfice grâce à des paramètres intelligents de stop-loss et de gain. La stratégie est capable non seulement de capturer les signaux de renversement de tendance, mais également d’ajuster automatiquement les paramètres de négociation en fonction des fluctuations du marché, ce qui améliore la stabilité et la rentabilité de la stratégie.
La logique de base de la stratégie est basée sur un signal croisé entre un EMA rapide (en 15 cycles) et un EMA lent (en 50 cycles). Lorsque la ligne rapide traverse une ligne lente, le système génère un signal de multiplication; lorsque la ligne rapide traverse une ligne lente, le système génère un signal de pause. Afin d’optimiser la gestion des risques, la stratégie utilise une méthode de paramétrage dynamique, à savoir que le prix d’ouverture le plus bas des lignes 2K précédentes est utilisé comme point d’arrêt multiple et le prix d’ouverture le plus élevé comme point d’arrêt vide.
Il s’agit d’une stratégie homogène, structurée et logiquement claire. En combinant les méthodes d’analyse technique classiques avec les techniques modernes de gestion des risques, la stratégie réalise de meilleures caractéristiques de risque-récompense. Bien qu’il existe une certaine marge d’optimisation, le cadre de base de la stratégie présente une bonne praticité et extensibilité.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30)
// Input for EMAs
ema_short_length = input(15, title="Short EMA Length")
ema_long_length = input(50, title="Long EMA Length")
// Calculate EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
// Plot EMAs
plot(ema_short, color=color.blue, title="15 EMA")
plot(ema_long, color=color.red, title="50 EMA")
// Entry Conditions (Any EMA Cross)
cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long)
// Determine Trade Direction
is_long = ta.crossover(ema_short, ema_long)
is_short = ta.crossunder(ema_short, ema_long)
// Stop Loss and Take Profit
long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles
short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles
long_take_profit = close + 2 * (close - long_stop_loss)
short_take_profit = close - 2 * (short_stop_loss - close)
// Execute Trades
if (cross_condition)
if (is_long)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
else if (is_short)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// Plot Stop Loss and Take Profit Levels
plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2)
plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2)
plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2)
plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)