
Это трёхмерная стратегия отслеживания трендов средней линии, основанная на методологии торговли Оливера Валеса. Стратегия использует перекрестные сигналы 20-циклической, 50-циклической и 200-циклической скользящих средних для выявления рыночных тенденций и торговых возможностей. 200-циклическая средняя линия служит основным фильтром трендов, а перекрестные линии 20-циклической и 50-циклической средней линии используются для генерации конкретных торговых сигналов.
Основная логика стратегии состоит из трех ключевых уровней:
Это полностью структурированная, логически ясная стратегия отслеживания трендов. Благодаря совместной работе с тремя равномерными линиями, она гарантирует точность идентификации трендов и предоставляет четкие торговые сигналы. Механизм управления рисками стратегии относительно совершенен, но все еще есть место для оптимизации.
/*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)