Esta estrategia utiliza dos promedios móviles (MA) para generar señales de negociación. Cuando el MA de período más corto cruza por encima del MA de período más largo, se genera una señal de compra; cuando el MA de período más corto cruza por debajo del MA de período más largo, se genera una señal de venta. La estrategia también establece un período de tiempo de negociación (8 AM a 20 PM UTC) y un objetivo de ganancia (150 puntos).
Esta estrategia genera señales comerciales basadas en el cruce de dos promedios móviles con períodos diferentes, adecuadas para mercados de tendencia. Al establecer un período de tiempo de negociación y un objetivo de ganancia fijo, puede controlar el riesgo hasta cierto punto. Sin embargo, la estrategia puede no funcionar bien en mercados agitados, y el objetivo de ganancia fija puede limitar el potencial de ganancia de la estrategia. En el futuro, se puede considerar la incorporación de más indicadores técnicos, la optimización del establecimiento de la meta de ganancia y el stop loss, la combinación de información de la microestructura del mercado y la adopción de diferentes configuraciones de parámetros para diferentes estados del mercado para optimizar esta estrategia.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Moving Average Crossover Strategy", overlay=true) // User-defined moving average periods ma1Periods = input(5, title="First Moving Average Periods") ma2Periods = input(20, title="Second Moving Average Periods") // Calculate moving averages ma1 = sma(close, ma1Periods) ma2 = sma(close, ma2Periods) // Plot moving averages plot(ma1, color=color.red, linewidth=2, title="First Moving Average") plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average") // Detect crossovers and crossunders bullishCross = crossover(ma1, ma2) bearishCross = crossunder(ma1, ma2) // Define trading hours (8 AM to 2 PM UTC) startHour = 8 endHour = 20 utcHour = hour(time, "UTC") isMarketOpen = true // Define profit target profitTarget = 150 // Check if the price has closed above/below the MA for the past 4 bars aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1] belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1] // Create buy and sell signals if (bullishCross and isMarketOpen and aboveMa) strategy.entry("Buy", strategy.long) strategy.exit("Sell", "Buy", profit=profitTarget) if (bearishCross and isMarketOpen and belowMa) strategy.entry("Sell", strategy.short) strategy.exit("Cover", "Sell", profit=profitTarget) // Plot shapes on crossovers plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")