Осциллятор импульса с торговой стратегией RSI


Дата создания: 2023-09-18 14:07:51 Последнее изменение: 2023-09-18 14:07:51
Копировать: 0 Количество просмотров: 812
1
Подписаться
1617
Подписчики

[[Подробнее]

Обзор

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

Мы должны установить стоп-лосс, чтобы избежать больших потерь, если RSI будет находиться в зоне перепродажи слишком долго.

Наилучшая зона остановки - это когда цена возвращается к средней / верхней линии Бринга или когда RSI достигает зоны сверхпокупа, в зависимости от того, кто первый.

Многоголосное вступление:

RSI < 30 и цена закрытия < нижняя линия Бринга

Появились новые сообщения о событиях:

RSI > 70

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

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

При входе в многоголовый, установить стоп-стоп. Стоп-стоп устанавливается как цена входа(1+ фиксированный коэффициент), точка остановки устанавливается как цена входа(1- фиксированная пропорция) [2].

Таким образом, мы покупаем в то время, когда RSI находится в низком состоянии вблизи спуска Бринга, и продаем в то время, когда RSI находится в высоком состоянии, используя обратную торговлю для получения прибыли. В то же время мы устанавливаем стоп-стоп для контроля риска.

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

  • Использование бриндовых поясов для определения точек переворота цены для повышения точности
  • RSI отфильтровывает фальшивые прорывы, обеспечивая надежность входа
  • Установка стоп-стоп-убытков позволяет хорошо контролировать риски по одной сделке
  • Достаточно отследить данные, настроить параметры, обеспечить стабильную прибыль

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

  • Брин-пояса не могут полностью предсказать точку переворота цены, и есть определенная вероятность провала
  • RSI также может дать ложный сигнал.
  • Приблизившись к точке остановки, вы не сможете удержать позицию, что значительно увеличит риск.

Риск может быть снижен путем корректировки параметров пояса Бринга, выбора комбинации с другими показателями, а также надлежащего ослабления зоны остановки.

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

  • Фильтрация входа может быть рассмотрена в сочетании с другими показателями, такими как KD, MACD
  • Динамическая корректировка стоп-стоп-парата
  • Оптимизация параметров Брин-полосы
  • Тестирование жизнеспособности параметров различных торговых сортов

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

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

||

Overview

This strategy combines Bollinger Bands and the Relative Strength Index (RSI) indicator to predict price volatility and determine optimal entry points. The logic is straightforward - we watch for closing prices that touch the Bollinger lower band, after which there are two possible scenarios: either the price bounces back from the lower Bollinger band, or it continues falling. To confirm the price movement, we use a second indicator, RSI, to further investigate the trend. For example, if the price reaches the lower Bollinger band but the RSI value is not in oversold territory, we can conclude the price will continue down. If the RSI value is oversold, we can use this area as our entry point.

A stop loss is necessary to avoid losing too much capital if the RSI lingers too long in oversold territory.

The best take profit area is when the price rebounds back above the Bollinger middle band/upper band or when RSI reaches overbought levels, whichever comes first.

Long entry:

RSI < 30 and close price < Bollinger lower band

Long exit:

RSI > 70

Strategy Logic

The strategy first calculates the RSI indicator and sets upper/lower boundaries to determine overbought/oversold levels. It then calculates the Bollinger middle, upper and lower bands. When the closing price touches the lower band and RSI is below 30, go long. When RSI is above 70, close the position.

Upon entering long, set stop loss and take profit points. The take profit is set at entry price * (1 + fixed percentage), stop loss is set at entry price * (1 - fixed percentage).

This allows us to buy at Bollinger lower band when RSI is low and sell when RSI is high, profiting from the reversal. Stop loss and take profit control risk.

Advantage Analysis

  • Bollinger Bands determine reversal points accurately
  • RSI filters out false breakouts, ensuring reliable entry
  • Stop loss and take profit manage trade risk effectively
  • Extensive backtesting and parameter optimization ensure stable profitability

Risk Analysis

  • Bollinger Bands do not perfectly predict reversals, some failures occur
  • RSI can also give false signals
  • Stop loss too close cannot hold position, too loose increases risk

Risks can be mitigated by adjusting Bollinger parameters, using other indicators, and widening stop loss appropriately.

Optimization Directions

  • Consider combining with other indicators like KD, MACD to filter entries
  • Dynamically adjust stop loss/take profit percentages
  • Optimize Bollinger parameters
  • Test robustness across different products

Conclusion

The overall risk/reward profile of this strategy is balanced and backtest results are good. Further improvements can be made through parameter optimization and indicator enhancements. The reversal trading concept based on Bollinger Bands is simple and reliable, warranting further research and refinement.

[/trans]

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

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)