Следующая стратегия по развитию мульти-EMA и RSI

Автор:Чао Чжан, Дата: 2024-03-01 13:26:24
Тэги:

img

Обзор

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

Принцип стратегии

Расчет показателя

Стратегия использует 5 EMA с различными периодами, включая 9-дневные, 21-дневные, 51-дневные, 100-дневные и 200-дневные линии.

Условия въезда

Перед покупкой должно быть выполнено одно из следующих условий:

  1. 9-дневная EMA пересекает 21-дневную EMA
  2. 9-дневная EMA пересекает 51-дневную EMA
  3. 51-дневная EMA пересекается ниже 100-дневной EMA

В то же время индекс RSI должен быть выше 65, что указывает на сильный рост.

Условия выхода

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

  1. 9-дневная EMA пересекает 51-дневную EMA, что указывает на изменение тренда
  2. Цена закрытия превышает 125% от входной цены, достигая целевой прибыли
  3. RSI падает ниже 40, сигнализируя об обратном движении.
  4. Цена закрытия падает ниже 98% от цены входа, запускается стоп-лосс

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

Это типичная тенденция, следующая за стратегией со следующими преимуществами:

  1. Использование перекресток EMA для определения направления тренда для эффективного отслеживания тренда
  2. Сочетание среднемесячных операций различных периодов позволяет определить более надежные сигналы тренда
  3. Фильтр RSI избегает ложных сигналов на рынках с диапазоном
  4. Настройки "приобрести прибыль" и "остановить убытки" блокируют прибыль и контролируют риски

Риски и решения

Есть еще некоторые риски:

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

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

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

  1. Оптимизация параметров для различных продуктов
  2. Добавление других технических показателей для построения многофакторных моделей
  3. Включение алгоритмов машинного обучения для оценки качества сигнала
  4. Сочетание анализа настроений, чтобы избежать эмоциональных ловушек
  5. Испытание различных стратегий получения прибыли/остановки убытков для поиска оптимального

Заключение

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


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 3h
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/
// © Ravikant_sharma

//@version=5

strategy('new', overlay=true)

start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2043, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)

rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))   

//plot(ema4, '100', color.new(color.gray, 0)) 


//LongEntry = (  ta.crossover(ema0,ema3)  or  ta.crossover(ema0,ema2) or  ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1) 
    if rsi2>65
        LongEntry:=true
if ta.crossover(ema1,ema2)
    if rsi2>65
        LongEntry:=true
        
LongExit =  ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)



if time >= start and time <= end 
    if(LongEntry and rsi2>60)
        strategy.entry('Long', strategy.long, 1)
    if(LongExit)
        strategy.close('Long') 



Больше