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

Автор:Чао Чжан, Дата: 2023-11-03 17:23:54
Тэги:

img

Обзор

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

Логика стратегии

Эта стратегия использует ввод для установки типа (SMA, EMA, WMA, RMA) и периода скользящей средней, а также временного диапазона обратного тестирования.

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

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

Для установки стоп-лосса рассчитывается 14-периодный средний истинный диапазон atr.

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

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

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

Преимущества стратегии

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

Риски стратегии

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

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

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

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

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

  1. Добавьте условия фильтра, такие как объем, волатильность, чтобы избежать иррационального прорыва
  2. Использовать адаптивный ATR стоп-лосс, чтобы диапазон стоп-лосса менялся с изменчивостью рынка
  3. Комбинировать Stoch, RSI и другие индикаторы для многофакторного подтверждения для улучшения качества сигнала
  4. Добавить определение тренда, чтобы избежать торговли против тренда
  5. Используйте время выхода, чтобы избежать удержания проигравших слишком долго
  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] ) 


Больше