Эта статья в основном анализирует количественную торговую стратегию, разработанную Ravikant_sharma на основе множественных экспоненциальных скользящих средних (EMA) и индекса относительной силы (RSI).
Стратегия использует 5 EMA с различными периодами, включая 9-дневные, 21-дневные, 51-дневные, 100-дневные и 200-дневные линии.
Перед покупкой должно быть выполнено одно из следующих условий:
В то же время индекс RSI должен быть выше 65, что указывает на сильный рост.
Перед закрытием позиции должно быть выполнено одно из следующих условий:
Это типичная тенденция, следующая за стратегией со следующими преимуществами:
Есть еще некоторые риски:
Стратегия может быть дополнительно оптимизирована следующими способами:
В заключение, это общая надежная и простая в реализации стратегия следования тренду. С перекрестным 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')