Эта стратегия использует два скользящих средних (MA) для генерации торговых сигналов. Когда короткосрочный MA пересекает длинносрочный MA, генерируется сигнал покупки; когда короткосрочный MA пересекает длинносрочный MA, генерируется сигнал продажи. Стратегия также устанавливает период торговли (8 утра до 20 вечера UTC) и цель прибыли (150 пунктов).
Эта стратегия генерирует торговые сигналы, основанные на перекрестке двух скользящих средних с различными периодами, подходящих для трендовых рынков. Установив период торговли и фиксированную цель прибыли, он может контролировать риск в определенной степени. Однако стратегия может не работать хорошо на нестабильных рынках, и фиксированная цель прибыли может ограничить потенциал прибыли стратегии. В будущем можно рассмотреть возможность включения более технических индикаторов, оптимизации установки цели прибыли и стоп-лосса, объединения информации о микроструктуре рынка и принятия различных параметров параметров для различных состояний рынка для оптимизации этой стратегии.
/*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")