
Esta estrategia es un sistema de trading automatizado basado en señales de cruce de medias móviles, que optimiza el rendimiento del trading estableciendo una relación riesgo-rendimiento fija. La estrategia utiliza el cruce de la media móvil rápida (Fast MA) y la media móvil lenta (Slow MA) para determinar la dirección de la tendencia del mercado, y combina el punto de stop loss preestablecido y el objetivo de ganancias para gestionar el riesgo de la posición.
La lógica central de la estrategia se basa en las señales de cruce generadas por dos medias móviles de diferentes períodos (10 períodos y 30 períodos). Cuando la línea rápida cruza la línea lenta, el sistema genera una señal larga; cuando la línea rápida cruza la línea lenta, el sistema genera una señal corta. Después de abrir cada posición, el sistema calculará automáticamente la posición de stop loss en función de la relación de stop loss preestablecida del 2% y establecerá el objetivo de ganancias de acuerdo con una relación riesgo-retorno de 2,5 veces. Este enfoque garantiza que cada operación tenga un perfil de riesgo-retorno fijo.
Esta estrategia construye un sistema de trading completo combinando métodos clásicos de análisis técnico con conceptos modernos de gestión de riesgos. Si bien existen ciertas limitaciones, a través de la optimización y mejora continua, se espera que la estrategia mantenga un desempeño estable en diferentes entornos de mercado. La clave es ajustar continuamente la configuración de los parámetros en función de los resultados comerciales reales y encontrar la configuración que mejor se adapte al entorno actual del mercado.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")
fastLength = input.int(10, "Fast MA Length")
slowLength = input.int(30, "Slow MA Length")
stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR = input.float(2.5, "Risk to Reward Ratio", step=0.1)
//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)
// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)
// Entry Conditions
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0
if (strategy.position_size == 0) // not in a position
if longCondition
// Long entry
entryPrice := price
strategy.entry("Long", strategy.long)
if shortCondition
// Short entry
entryPrice := price
strategy.entry("Short", strategy.short)
if strategy.position_size > 0
// We are in a long position
if strategy.position_avg_price > 0 and strategy.position_size > 0
longStop = strategy.position_avg_price * (1 - stopLossPerc/100)
longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)
if strategy.position_size < 0
// We are in a short position
if strategy.position_avg_price > 0 and strategy.position_size < 0
shortStop = strategy.position_avg_price * (1 + stopLossPerc/100)
shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)
//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")