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

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

img

Обзор

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

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

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

В частности, ключевая логика включает:

  1. Определить входные данные и параметры цен: получить данные о ценах OHLC; определить параметры HullMA период z, данные о ценах p.

  2. Вычислить двойные МР: вычислить 2-периодные МР n2ma, z-периодные МР nma.

  3. Вычислить разницу МА: вычислить разницу между двумя МА.

  4. Вычислить индикатор импульса: вычислить скользящую среднюю диф - n1, n2, n3 с периодом sqn.

  5. Определить перекресток: отметить n1 над n2 зеленым, в противном случае красным.

  6. Формы графика: графика n1 и n2.

  7. Идентифицировать сигналы: генерировать сигнал, когда n1, n2, n3 выстраиваются в одном направлении.

  8. Вход и выход: идти длинным, когда быстрая линия над медленной линией и индикатор импульса согласуются; идти коротким, когда быстрая линия ниже медленной линии и индикатор импульса согласуются.

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

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

  1. Кроссовер MA обнаруживает изменения в тренде, получая выгоду от тенденций.

  2. Индикатор импульса отфильтровывает ложные сигналы, избегая заблуждения краткосрочными колебаниями.

  3. Только торговля по основным изменениям тренда уменьшает ненужную частоту торговли.

  4. Оптимизация параметров соответствует характеристикам различных продуктов.

  5. Разрешение на некоторую степень пирамиды продлевает циклы прибыли.

Риски

Необходимо также знать о некоторых рисках:

  1. Кроссовер с двойным MA задерживается в обнаружении изменений тренда, потенциально пропуская лучшее время.

  2. Неправильное настройка параметров на индикаторе импульса может вызвать плохой сигнал.

  3. Существует дисбаланс между длительными и короткими периодами хранения.

  4. Стратегии не хватает механизмов, чтобы хорошо справиться с нестабильными рыночными условиями.

  5. Существует риск чрезмерной оптимизации, требующая постепенной оптимизации параметров.

Некоторые решения:

  1. Подумайте о добавлении других ведущих индикаторов для раннего обнаружения изменений цен.

  2. Оптимизируйте параметры индикатора импульса, чтобы найти лучшие комбинации.

  3. Добавить индикатор волатильности в контрольный период хранения.

  4. Ограничьте размеры позиций, чтобы уменьшить однократные потери.

  5. Испытание прочности параметров для избежания чрезмерной оптимизации.

Направления к улучшению

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

  1. Испытать различные типы МА для поиска оптимальных параметров для каждого продукта.

  2. Добавьте другие индикаторы, такие как MACD, полосы Боллинджера, чтобы определить изменения тренда.

  3. Оптимизируйте время входа, чтобы точно определить поворотные моменты.

  4. Оптимизируйте выход с помощью остановок, чтобы закрепить прибыль.

  5. Оптимизация параметров в соответствии с характеристиками продукта.

  6. Используйте машинное обучение для поиска оптимальных комбинаций параметров.

  7. Создать механизмы динамического измерения позиций для контроля рисков.

  8. Добавьте количественные показатели, такие как коэффициент Шарпа, фактор прибыли для оценки стратегии.

  9. Оценить производительность на исторических данных с использованием механизма обратного тестирования.

Резюме

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


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//OCTOPUS Indicator Strategy
strategy("FAVEL corp. Indicator Strategy", shorttitle="FAVEL corp. Monarch", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=20, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
z=input(defval=60,title="HullMA cross")
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(z/2))
nma=wma(p,z)
diff=n2ma-nma
sqn=round(sqrt(z))
n2ma1=2*wma(p[1],round(z/2))
nma1=wma(p[1],z)
diff1=n2ma1-nma1
sqn1=round(sqrt(z))
n2ma2=2*wma(p[2],round(z/2))
nma2=wma(p[2],z)
diff2=n2ma2-nma2
sqn2=round(sqrt(z))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
n3=wma(diff2,sqn)
c=n1>n2?green:red
n1e=plot(n1, color=c, linewidth=1, offset=2)
n2e=plot(n2, color=c, linewidth=1, offset=2)
fill(n1e, n2e, color=c, transp=75)
plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4)
closelong = p<p[1] and n1<n3
if (closelong)
    strategy.close("BUY")
closeshort = p>p[1] and n1>n3
if (closeshort)
    strategy.close("SELL")
longCondition = strategy.opentrades<1 and n1>n2 and p>p[1] and n1>n3
if (longCondition)
    strategy.entry("BUY",strategy.long)
shortCondition = strategy.opentrades<1 and n1<n2 and p<p[1] and n1<n3
if (shortCondition)
    strategy.entry("SELL",strategy.short)

Больше