
La estrategia es una estrategia de comercio cuantitativa basada en el cruce de las medias móviles y el stop loss de ATR dinámico. La estrategia utiliza una media móvil simple (SMA) de dos períodos diferentes para generar señales de comercio, mientras que utiliza la amplitud de fluctuación real media (ATR) para establecer dinámicamente paradas y paradas para un mejor control del riesgo. Además, la estrategia filtra las señales de comercio según los diferentes períodos de negociación para mejorar la estabilidad de la estrategia.
El principio central de la estrategia es el uso de cruces de medias móviles para capturar cambios en la tendencia de los precios. Se genera una señal de compra cuando las medias móviles rápidas cruzan las medias móviles lentas de abajo hacia arriba; se genera una señal de venta cuando las medias móviles rápidas cruzan las medias móviles lentas de arriba hacia abajo.
La estrategia es una estrategia de seguimiento de tendencias simple y fácil de entender, que capta las tendencias de los precios mediante el cruce de las medias móviles y utiliza el ATR para controlar el riesgo. A pesar de que la estrategia tiene un cierto riesgo, la estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante la optimización de los parámetros, la filtración de señales y la gestión del riesgo.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Moving Average Crossover Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(50, title="Slow MA Length")
atrLength = input(14, title="ATR Length")
riskPerTrade = input(1, title="Risk Per Trade (%)") / 100
// Time-based conditions
isLondonSession = hour >= 8 and hour <= 15
isAsianSession = hour >= 0 and hour <= 7
isEuropeanSession = hour >= 7 and hour <= 14
// Moving Averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Average True Range (ATR) for dynamic stop loss and take profit
atr = ta.atr(atrLength)
// Buy and Sell Conditions
buySignal = ta.crossover(fastMA, slowMA)
sellSignal = ta.crossunder(fastMA, slowMA)
// Dynamic stop loss and take profit
stopLoss = close - atr * 1.5
takeProfit = close + atr * 3
// Strategy Logic
if (buySignal and isEuropeanSession)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss)
if (sellSignal and isEuropeanSession)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss)
// Plotting
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")