Стратегия следования за трендом EMA и RSI


Дата создания: 2023-09-26 15:39:48 Последнее изменение: 2023-09-26 15:39:48
Копировать: 0 Количество просмотров: 978
1
Подписаться
1617
Подписчики

Обзор

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

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

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

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

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

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

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

  • Возвращение к основной тенденции может дать ложные сигналы
  • Взрывы могут привести к падению цен
  • Неправильная настройка параметров RSI может привести к преждевременной остановке
  • Осторожность при настройке циклов EMA: слишком короткие - шум, слишком длинные - пропуск тренда

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

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

  • Оптимизировать параметры RSI, чтобы сбалансировать стоп-стоп
  • Тестирование различных комбинаций циклов EMA
  • Подтверждение увеличения энергопотребления или других показателей
  • Стойкость может быть установлена по ATR
  • Можно попытаться снизить позиции в середине тренда
  • Оптимизация времени входа, например, предыдущая высота / низкая точка, или поглощение энергии
  • Возможность включения в механизм реадмиссии

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

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

Исходный код стратегии
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@author Alorse

//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)

// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)

// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)

len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)

len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)

// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')

entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70

entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30


bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
    nPastBars := nPastBars + 1
    nPastBars
if strategy.position_size == 0
    nPastBars := 0
    nPastBars
if closeAfterXBars
    exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
    exitLong
    exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
    exitShort

// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)

// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)