Стратегия многоэмального бычьего тренда

Автор:Чао Чжан, Дата: 2024-01-22 12:04:05
Тэги:

img

Обзор

Стратегия бычьего тренда Multi-EMA - это стратегия следования тренду, основанная на множественных экспоненциальных скользящих средних (EMA) разных периодов для определения тренда.

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

Стратегия использует 6 EMA периодов 10, 20, 50, 100, 150 и 200 дней. Эти EMA используются для определения текущей циклической стадии рынка. Когда более короткие периоды EMA (например, 10-дневные) пересекаются с более длительными периодами (например, 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% от входной цены. Как только вывод превысит 8%, позиция будет закрыта для стоп-лосса.

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

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

Стратегия бычьего тренда Multi-EMA имеет следующие основные преимущества:

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

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

Для этой стратегии также существуют некоторые риски:

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

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

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

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

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

Заключение

В целом, Стратегия бычьего тренда Multi-EMA является надежной и надежной системой, балансирующей определение тренда и контроль рисков.


/*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)
    


Больше