
La estrategia es un sistema de comercio cuantitativo que combina múltiples indicadores técnicos, mediante la combinación de tres indicadores técnicos clásicos, el promedio móvil (MA), el indicador de fuerza relativa (RSI) y el promedio móvil de dispersión de la tendencia (MACD), para construir un sistema completo de señales de comercio. La estrategia utiliza un método de seguimiento de tendencias combinado con la identificación de la dinámica, al tiempo que garantiza la dirección correcta de la negociación y se centra en la captura de la oportunidad. Al mismo tiempo, integra mecanismos de control de riesgo de pérdidas, como paradas, paradas y seguimiento de paradas, formando una estrategia de comercio sistematizada.
La estrategia se basa principalmente en la construcción de señales de comercio en los siguientes tres niveles:
Concretamente, cuando la media rápida (de 50 días) cruza la media lenta (de 200 días) para formar una horquilla de oro, y el RSI no alcanza el nivel de sobrecompra y el MACD forma una horquilla de oro, el sistema genera una señal de plus. Por el contrario, cuando hay un forro muerto y el RSI no alcanza el nivel de sobreventa, y el MACD forma un forro muerto, el sistema genera una señal de vacío.
La estrategia se basa en la combinación de múltiples indicadores técnicos para construir un sistema de negociación relativamente completo. La estrategia funciona bien en mercados con tendencias evidentes, pero aún necesita un ajuste optimizado en función de las condiciones reales del mercado. Se recomienda que los operadores realicen una verificación de retroalimentación adecuada y ajusten los parámetros según su propia capacidad de asumir riesgos.
/*backtest
start: 2024-06-01 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EthioTrader
//@version=5
strategy("Optimal Multi-Indicator Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
// ===== Input Parameters =====
// Moving Averages
fastMA = ta.sma(close, 50)
slowMA = ta.sma(close, 200)
plot(fastMA, "Fast MA", color=color.green)
plot(slowMA, "Slow MA", color=color.red)
// RSI
rsiLength = input(14, "RSI Length")
rsiOverbought = input(70, "RSI Overbought")
rsiOversold = input(30, "RSI Oversold")
rsi = ta.rsi(close, rsiLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Risk Management
stopLossPerc = input(2.0, "Stop Loss (%)") / 100
takeProfitPerc = input(4.0, "Take Profit (%)") / 100
trailingStopPerc = input(1.0, "Trailing Stop (%)") / 100
// ===== Strategy Logic =====
// Trend Condition: Golden Cross (Fast MA > Slow MA)
bullishTrend = ta.crossover(fastMA, slowMA)
bearishTrend = ta.crossunder(fastMA, slowMA)
// Momentum Condition: RSI and MACD
bullishMomentum = rsi < rsiOverbought and ta.crossover(macdLine, signalLine)
bearishMomentum = rsi > rsiOversold and ta.crossunder(macdLine, signalLine)
// Entry Signals
longCondition = bullishTrend and bullishMomentum
shortCondition = bearishTrend and bearishMomentum
// Exit Signals
trailingStop = strategy.position_avg_price * (1 - trailingStopPerc)
exitLong = ta.crossunder(close, trailingStop) or (close >= strategy.position_avg_price * (1 + takeProfitPerc))
exitShort = ta.crossover(close, trailingStop) or (close <= strategy.position_avg_price * (1 - takeProfitPerc))
// ===== Execute Orders =====
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price * (1 - stopLossPerc), limit=strategy.position_avg_price * (1 + takeProfitPerc), trail_price=trailingStop, trail_offset=trailingStopPerc * close)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price * (1 + stopLossPerc), limit=strategy.position_avg_price * (1 - takeProfitPerc), trail_price=trailingStop, trail_offset=trailingStopPerc * close)
// ===== Plotting =====
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")