В процессе загрузки ресурсов... загрузка...

Стратегия обратной перемены двойной скользящей средней

Автор:Чао Чжан, Дата: 2023-12-01 16:56:43
Тэги:

img

Обзор

Стратегия перекрестного перехода двойной скользящей средней является типичной количественной торговой стратегией, которая отслеживает тенденции. Стратегия использует перекрестные сигналы от 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

Анализ преимуществ

Преимущества стратегии двойной скользящей средней очевидны:

  1. Простой в понимании и применении, подходящий для обучения новичков.
  2. Следуйте тренду, избегайте ловушки на рынках с ограниченным диапазоном.
  3. Используйте среднесрочные и долгосрочные индикаторы, чтобы отфильтровать вводящие в заблуждение сигналы и избежать обмана краткосрочным рыночным шумом.
  4. Может отслеживать тенденции рынков и эффективно получать прибыль в течение длительных периодов.

Анализ рисков

Стратегия двойной скользящей средней также сопряжена с некоторыми рисками:

  1. В экстремальных рыночных условиях, таких как рыночные крахи, могут быть большие снижения до формирования смертельного креста.
  2. На рыночных диапазонах золотые кресты и смертные кресты чередуются, неоднократно открывая и останавливая позиции.

Для устранения рисков можно сделать следующие оптимизации:

  1. Ввести другие показатели, чтобы быстро сократить потери в условиях падения рынка.
  2. Добавьте больше фильтров для открытия, чтобы избежать чередования перекрестков на различных рынках.

Руководство по оптимизации

Стратегия двойной скользящей средней может быть оптимизирована в нескольких аспектах:

  1. Оптимизация параметров, корректировка скользящих средних периодов, оптимизация параметров показателей.
  2. Дополнительно фильтруйте сигналы открытия.
  3. Внедрить механизмы остановки потери. Использовать движущиеся остановки потери, проникновение остановки потери и другие методы остановки.
  4. Комбинировать с другими торговыми стратегиями, такими как стратегии объема и волатильности.
  5. Соответственно использовать рычаги воздействия для повышения операционной эффективности.

Резюме

Стратегия двойной скользящей средней, как правило, является эффективной стратегией получения прибыли. Она может приносить прибыль путем непрерывного следования тенденциям. В то же время, она имеет определенные риски и нуждается в дальнейшем улучшении. Оптимизируя параметры, методы остановки и комбинации стратегий, эффекты этой стратегии могут быть еще больше усилены.


/*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)


Больше