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


Дата создания: 2024-01-17 17:45:45 Последнее изменение: 2024-01-17 17:45:45
Копировать: 2 Количество просмотров: 568
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия использует двойные подвижные средние, подвижные средние с 8 и 21 циклами соответственно. При использовании длинных подвижных средних над короткосрочными подвижными средними, делают больше; при использовании длинных подвижных средних ниже короткосрочных подвижных средних, делают меньше.

Эта стратегия также включает в себя скольжение скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения скольжения

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

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

Эта стратегия также устанавливает наклонный порог. Многосигналы создаются только тогда, когда наклон больше положительного порога, и пустые сигналы - только тогда, когда наклон меньше отрицательного порога. Это позволяет отфильтровывать промежутки, в которых нет очевидной тенденции, чтобы повысить качество торговых сигналов.

В частности, логика генерирования торговых сигналов этой стратегии состоит в следующем:

  1. Вычислить простые скользящие средние для 8 и 21 циклов
  2. Обнаружение перекрестных сигналов
  3. Вычислить наклонность 21-циклической скользящей средней, которая получена путем обратного сечения функции atn
  4. Многосигнал создается только тогда, когда наклон превышает установленный положительный порог
  5. Сигнал затухания создается только тогда, когда наклон ниже установленного отрицательного порога

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

Эта стратегия имеет следующие преимущества:

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

Риски и решения

Однако эта стратегия также несет в себе некоторые риски:

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)

ma1= sma(close,8)
ma2= sma(close,21)

angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)

i_lookback   = input(2,     "Angle Period", input.integer, minval = 1)
i_atrPeriod  = input(10,    "ATR Period",   input.integer, minval = 1)
i_angleLevel = input(6,     "Angle Level",  input.integer, minval = 1)
i_maSource   = input(close, "MA Source",    input.source)

f_angle(_src, _lookback, _atrPeriod) =>
    rad2degree = 180 / 3.141592653589793238462643  //pi 
    ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
    ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)

plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)

crosso=crossover(ma1,ma2) 
crossu=crossunder(ma1,ma2)

_lookback = 15

f_somethingHappened(_cond, _lookback) =>
    bool _crossed = false
    for i = 1 to _lookback
        if _cond[i]
            _crossed := true
    _crossed
    
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)

long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)


if(long)
    strategy.entry("Long",strategy.long)
if(short)
    strategy.entry("short",strategy.short)