Esta estratégia usa duas médias móveis (MA) para gerar sinais de negociação. Quando o MA de curto período cruza acima do MA de longo período, um sinal de compra é gerado; quando o MA de curto período cruza abaixo do MA de longo período, um sinal de venda é gerado. A estratégia também define um período de negociação (8 AM a 20 PM UTC) e uma meta de lucro (150 pontos).
Esta estratégia gera sinais de negociação baseados no cruzamento de duas médias móveis com períodos diferentes, adequados para mercados de tendência. Ao definir um período de negociação e um objetivo de lucro fixo, ele pode controlar o risco até certo ponto. No entanto, a estratégia pode não funcionar bem em mercados agitados e o objetivo de lucro fixo pode limitar o potencial de lucro da estratégia. No futuro, pode-se considerar a incorporação de mais indicadores técnicos, otimizando a definição do objetivo de lucro e stop loss, combinando informações de microstrutura de mercado e adotando diferentes configurações de parâmetros para diferentes estados de mercado para otimizar essa estratégia.
/*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")