Стратегия бычьего тренда с множественными скользящими средними


Дата создания: 2024-01-22 12:04:05 Последнее изменение: 2024-01-22 12:04:05
Копировать: 0 Количество просмотров: 661
1
Подписаться
1617
Подписчики

Стратегия бычьего тренда с множественными скользящими средними

Обзор

Многомерная многородная стратегия - это стратегия для отслеживания тенденций, основанная на выводах по индикаторам с перемещающейся средней ((EMA) за несколько различных периодов. Она делает это, когда цена превышает 10-дневную ЭМА и другие более длинные линии ЭМА имеют многородное соединение; затем используется стоп-стоп на 8% для блокировки прибыли.

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

Эта стратегия использует шесть линий EMA с различными периодами: 10, 20, 50, 100, 150 и 200 дней. Эти линии EMA используются для определения того, в какой циклической стадии находится рынок. Когда короткая линия EMA (например, 10-дневная линия) пересекает более длительную линию EMA (например, 20-дневная линия, 50-дневная линия), это рассматривается как маркупирующий период, когда рынок вступает в многоочередную тенденцию.

В частности, стратегия открывает позиции, если выполняются следующие условия:

  1. 10-я линия EMA выше 20-й линии EMA
  2. 20-я линия EMA выше 50-й линии EMA
  3. 100-дневная линия EMA выше, чем 150-дневная линия EMA
  4. 150-дневная линия EMA выше 200-дневная линия EMA
  5. 10-дневная линия EMA

После открытия позиции, стратегия использует 8% для блокирования прибыли. То есть, если цена акции не упадет более чем на 8% от покупной цены, то будет продолжать держать эту позицию.

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

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

Такой метод имеет следующие основные преимущества:

  1. Эффективное отфильтрование фальшивых прорывов позволяет уловить маркировочный этап цикла цен и сократить количество ненужных сделок.
  2. Многократная фильтрация линий EMA уменьшает вероятность пробивания стоп-ложек, что позволяет более безопасно держать позиции.
  3. 8% - ни слишком тесно, ни слишком свободно, что позволяет хорошо блокировать прибыль и избегать слишком частого остановки.
  4. Стратегия имеет гибкую настройку параметров, позволяющую найти оптимальную комбинацию параметров в зависимости от разных сортов.

Анализ рисков

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Поскольку строка EMA не является 100%-ной оценкой тренда, существует вероятность того, что она может быть скорректирована.
  2. 8% последующий стоп может привести к потере части прибыли в крупных сделках.
  3. Система EMA-межлинейной системы сама отстает от изменения цены, и в то время, когда она меняется, она может немного отстать.

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

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

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

  1. Тестирование различных комбинаций EMA и циклических параметров, чтобы найти оптимальные.
  2. Добавить индикаторы типа индекса волатильности для оценки силы тренда, чтобы избежать ненужных позиций.
  3. Добавление дополнительных фильтровальных показателей, таких как MACD, KDJ и т. д., для определения многоглавой последовательности.
  4. Внедрение алгоритмов машинного обучения для реализации динамического сдерживания потерь.

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

В целом, многомерно-среднелинейная многоглавая стратегия является более устойчивой и надежной стратегией отслеживания тенденций. Она одновременно учитывает тенденционное суждение и контроль риска.

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

//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)