Эта стратегия в полной мере использует скользящие средние и индекс относительной силы для выявления и отслеживания тенденций. Ей нужны только два индикатора для определения тенденции и нахождения правильного времени входа / выхода. Стратегия направлена на отслеживание средне- и долгосрочных ценовых тенденций при избежании краткосрочного рыночного шума.
Стратегия использует три EMA с различными периодами, причем EMA-A имеет самый короткий период, EMA-B средний и EMA-C самый длинный. Когда более короткая EMA-A пересекает выше более длинной EMA-B, она сигнализирует о восходящей тенденции, таким образом, длинный. И наоборот, когда EMA-A пересекает ниже EMA-B, она сигнализирует о нисходящей тенденции, таким образом, короткий. Чтобы отфильтровать ложные сигналы, она также использует самую длинную EMA-C - только с учетом входа после того, как цена нарушает EMA-C.
Стратегия также использует RSI для определения точек выхода. Когда она длинная, она закрывает позицию, если RSI превышает 70. Когда короткая, она выходит, если RSI падает ниже 30. Это блокирует прибыль тренда и предотвращает дальнейшее расширение потерь.
Эти риски могут быть уменьшены путем оптимизации параметров RSI, добавления фильтров и сочетания с анализом трендов.
Эта стратегия сочетает в себе индикаторы тренда и осциллятора для идентификации и захвата тренда. С помощью простых параметров и оптимизации логики она может быть значительно улучшена, сохраняя при этом простоту. Это очень практичный шаблон тренда, подходящий для средне- и долгосрочных инвесторов.
/*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)