
Il s’agit d’une stratégie de suivi de tendances de la triple moyenne basée sur la méthodologie de négociation d’Oliver Valez. Cette stratégie utilise des signaux croisés de moyennes mobiles de 20 cycles, 50 cycles et 200 cycles pour identifier les tendances du marché et les opportunités de négociation. La moyenne de 200 cycles sert de filtre de tendance principal, tandis que les croisements de moyennes de 20 cycles et 50 cycles sont utilisés pour générer des signaux de négociation spécifiques.
La logique centrale de la stratégie comprend trois niveaux clés:
Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. Grâce à la coopération synchrone du triple équilibre, l’exactitude de la reconnaissance des tendances est garantie et un signal de négociation clair est fourni. Le mécanisme de gestion des risques de la stratégie est relativement parfait, mais il y a encore de la place pour l’optimisation.
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-08 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Oliver Valez Triple MA Strategy", overlay=true, margin_long=100, margin_short=100)
// Inputs
ma20_length = input.int(20, "20-period MA Length", minval=1)
ma50_length = input.int(50, "50-period MA Length", minval=1)
ma200_length = input.int(200, "200-period MA Length", minval=1)
use_ema = input.bool(false, "Use EMA Instead of SMA")
sl_percent = input.float(2.0, "Stop Loss %", minval=0.0)
tp_percent = input.float(4.0, "Take Profit %", minval=0.0)
// Calculate MAs
ma20 = use_ema ? ta.ema(close, ma20_length) : ta.sma(close, ma20_length)
ma50 = use_ema ? ta.ema(close, ma50_length) : ta.sma(close, ma50_length)
ma200 = use_ema ? ta.ema(close, ma200_length) : ta.sma(close, ma200_length)
// Plot MAs
plot(ma20, "MA 20", color=color.new(color.blue, 0), linewidth=2)
plot(ma50, "MA 50", color=color.new(color.orange, 0), linewidth=2)
plot(ma200, "MA 200", color=color.new(color.red, 0), linewidth=2)
// Trend Filter
bullish_trend = close > ma200
bearish_trend = close < ma200
// Entry Conditions
long_condition = ta.crossover(ma20, ma50) and bullish_trend
short_condition = ta.crossunder(ma20, ma50) and bearish_trend
// Exit Conditions
exit_long = ta.crossunder(ma20, ma50)
exit_short = ta.crossover(ma20, ma50)
// Risk Management
stop_loss = strategy.position_avg_price * (1 - sl_percent/100)
take_profit = strategy.position_avg_price * (1 + tp_percent/100)
// Execute Trades
if (long_condition)
strategy.entry("Long", strategy.long)
strategy.exit("XL", "Long", stop=stop_loss, limit=take_profit)
if (short_condition)
strategy.entry("Short", strategy.short)
strategy.exit("XS", "Short", stop=stop_loss, limit=take_profit)
// Close trades on opposite signals
if (exit_long)
strategy.close("Long")
if (exit_short)
strategy.close("Short")
// Plot Signals
plotshape(long_condition, "Buy", shape.labelup, location.belowbar, color=color.green, text="BUY", textcolor=color.white)
plotshape(short_condition, "Sell", shape.labeldown, location.abovebar, color=color.red, text="SELL", textcolor=color.white)
// Background Color for Trend
bgcolor(bullish_trend ? color.new(color.green, 90) : bearish_trend ? color.new(color.red, 90) : na)