Стратегия торговли движущейся средней тенденцией

Автор:Чао Чжан, Дата: 2023-10-09 16:00:02
Тэги:

Обзор

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

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

Стратегия рассчитывает скользящую среднюю линию ma с длиной len с помощью функции sma. Затем она рассчитывает 3 дополнительных скользящих средних линий longline1, longline2, longline3, которые смещаются на -4%, -5%, -6% соответственно на основе ma.

Для генерации длинного сигнала, если текущая позиция плоская, она длинна с 1 лотом, когда цена пересекает длинную линию1. Если уже 1 лот длинный, она добавляет еще 1 лот, когда цена пересекает длинную линию2. Если уже 2 лота длинные, она добавляет еще 1 лот, когда цена пересекает длинную линию3. Максимальная длинная позиция составляет 3 лота.

Для генерации короткого сигнала, если он уже длинный, он выходит из всех длинных позиций, когда цена пересекается ниже ma.

Поэтапный вход позволяет стратегии следовать тенденции.

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

  • Использование скользящих средних для определения направления тренда фильтрует рыночный шум и позволяет получать стабильную прибыль
  • Поэтапные длинные/короткие записи могут больше извлекать выгоду из тенденций
  • Использование смещенных скользящих средних в качестве входных точек лучше улавливает тенденции
  • Относительно небольшие вычеты, максимальный вычет контролируется около 20%

Риски

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

Решения рисков:

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

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

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

  1. Добавьте другие индикаторы, такие как MACD, чтобы определить силу тренда.

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

  3. Корректировать размер и соотношение стадированных партий для предотвращения преследования высоких цен

  4. Добавить механизм движения стоп-потери на основе ATR

  5. Динамически корректировать размер позиции на основе волатильности рынка, уменьшать размер, когда волатильность высока

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

  7. Разработать модуль выхода для рассмотрения получения прибыли при определенных моделях

Резюме

В целом, стратегия торгует на основе направления тренда, определяемого скользящими средними, и прибыли от тенденций через поэтапные записи. Но у нее есть некоторые проблемы с отставанием и риски преследования высоких цен. Мы можем оптимизировать ее, добавляя вспомогательные индикаторы, оптимизируя параметры, корректируя размер позиций, добавляя стоп-лосс и т. Д., Чтобы адаптироваться к различным рыночным условиям и достигать устойчивой прибыли.


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

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)
    

Больше