Распространенные стратегии пересечения скользящих средних


Дата создания: 2023-11-03 17:23:54 Последнее изменение: 2023-11-03 17:23:54
Копировать: 0 Количество просмотров: 707
1
Подписаться
1617
Подписчики

Распространенные стратегии пересечения скользящих средних

Обзор

Строка пересечения скользящих средних - очень классическая и часто используемая стратегия технического анализа. Основная идея этой стратегии заключается в том, чтобы использовать пересечение между скользящими средними разных периодов в качестве сигнала для покупки и продажи. Сигнал покупки возникает, когда короткосрочная скользящая средняя пересекает более длительную скользящую среднюю снизу; сигнал продажи возникает, когда короткосрочная скользящая средняя пересекает более длительную скользящую среднюю снизу.

Стратегический принцип

Стратегия вводит типы (SMA, EMA, WMA, RMA) и длительность циклов, а также временные рамки для отсчета.

Вычисление различных типов скользящих средних в вариантных функциях. Вычисленные скользящие средние сохраняются с помощью переменной ma.

Когда цена закрытия превышает ма, создается сигнал покупки; когда цена закрытия превышает ма, создается сигнал продажи.

Для установки стоп-убытков, черезatr рассчитывается средняя истинная частота колебаний за 14 циклов. С точки прохождения в качестве отсчета, вверх или вниз плюс уменьшение в 2 разаatr в качестве пределов стоп-убытков.

Конкретная логика вступления и выхода из турнира:

Многоголовый вход: close наносится на ma и в течение отсчета времени, точка остановки является точкой входа close Многоголовый выезд: закрытие при прохождении ma минус 2xatr, или остановка при максимальной цене, превышающей точку входа close плюс 2xatr Вход в пустоту: close под прохождением ma и в течение отсчета времени, точка остановки как точка входа close Пустой выход: закрытие на ма плюс 2xatr, или минимальная цена ниже точки входа, закрытие минус 2xatr, остановка выхода

Стратегические преимущества

  1. Стратегические идеи просты, понятны и легко реализуемы
  2. Широкое применение для разных рынков и сортов
  3. Гибкая параметровая настройка, тип и периодичность скольжения средних
  4. Применение ATR помогает контролировать риски

Стратегический риск

  1. Подвижная средняя стратегия может привести к частым сделкам и остановкам, что может привести к снижению прибыли.
  2. Подвижные средние с большей вероятностью могут создавать вводящие в заблуждение сигналы при значительных колебаниях
  3. ATR может быть слишком большим или слишком маленьким, чтобы предотвратить большие потери

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

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

Направление оптимизации стратегии

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

  1. Добавление фильтров, таких как объем торгов, волатильность и т. д., чтобы избежать нерационального прорыва
  2. Применение адаптивного ATR-стоп-моделя, позволяющего изменять пределы стоп-убытков с учетом колебаний рынка
  3. Для улучшения качества сигналов используйте многофакторную проверку в сочетании с Stoch, RSI и другими показателями.
  4. Повышение оценки тенденций и предотвращение контрреволюционных операций
  5. Используйте время EXIT, чтобы избежать долгосрочных потерь
  6. Оптимизация циклических параметров скользящих средних для поиска оптимального сочетания параметров

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )