Стратегия перекрестного перехода двойной скользящей средней является типичной количественной торговой стратегией, которая отслеживает тенденции. Стратегия использует перекрестные сигналы от 9-дневной линии и 14-дневной линии в индикаторе двойной скользящей средней для построения сигналов покупки и продажи. Она покупает, когда 9-дневная линия проходит через 14-дневную линию снизу, чтобы сформировать золотой крест, и продает, когда 9-дневная линия проходит через 14-дневную линию сверху, чтобы сформировать крест смерти. Для фильтрации ложных сигналов стратегия также вводит 50-дневный индикатор линии, чтобы определить, проходит ли цена.
Эта стратегия в основном торгуется на основе сигналов золотого креста и креста смерти от индикатора двойной скользящей средней. В двойных скользящих средних 9-дневная линия представляет собой краткосрочные тенденции, 14-дневная линия представляет собой среднесрочные тенденции, а их перекресток является эффективным техническим индикатором для оценки поворотов в рыночных тенденциях. Когда краткосрочная линия тренда проходит через среднесрочную линию тренда снизу, образуя золотой крест, это указывает на то, что краткосрочная линия тренда укрепляется, что является сигналом покупки; когда она проходит сверху, чтобы сформировать кросс смерти, это указывает на то, что краткосрочная линия тренда ослабевает, что является сигналом продажи.
Кроме того, стратегия также вводит 50-дневную линию для фильтрации вводящих в заблуждение сигналов. Она генерирует покупку только тогда, когда цена выше 50-дневной линии; и генерирует продажу только тогда, когда цена ниже 50-дневной линии. 50-дневная линия представляет собой средне- и долгосрочные тенденции. Только когда средне- и долгосрочные тенденции согласуются, краткосрочные операции выполняются.
Основная логика заключается в следующем:
// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
Преимущества стратегии двойной скользящей средней очевидны:
Стратегия двойной скользящей средней также сопряжена с некоторыми рисками:
Для устранения рисков можно сделать следующие оптимизации:
Стратегия двойной скользящей средней может быть оптимизирована в нескольких аспектах:
Стратегия двойной скользящей средней, как правило, является эффективной стратегией получения прибыли. Она может приносить прибыль путем непрерывного следования тенденциям. В то же время, она имеет определенные риски и нуждается в дальнейшем улучшении. Оптимизируя параметры, методы остановки и комбинации стратегий, эффекты этой стратегии могут быть еще больше усилены.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true) // Define the length for the SMAs sma9Length = input(9, title="SMA 9 Length") sma14Length = input(14, title="SMA 14 Length") sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50 // Calculate SMAs sma9 = ta.sma(close, sma9Length) sma14 = ta.sma(close, sma14Length) sma50 = ta.sma(close, sma50Length) // Calculate SMA 50 // Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50 buyCondition = ta.crossover(sma9, sma14) and close > sma50 // Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50 sellCondition = ta.crossunder(sma9, sma14) and close < sma50 // Track the time since position was opened var float timeElapsed = na if (buyCondition) timeElapsed := 0 else timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1 // Close the buy position after 5 minutes if (timeElapsed >= 5) strategy.close("Buy") // Track the time since position was opened var float timeElapsedSell = na if (sellCondition) timeElapsedSell := 0 else timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1 // Close the sell position after 5 minutes if (timeElapsedSell >= 5) strategy.close("Sell") // Plot the SMAs on the chart plot(sma9, title="SMA 9", color=color.blue) plot(sma14, title="SMA 14", color=color.red) plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart // Strategy entry and exit conditions using if statements if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short)