Стратегия захвата волатильности RSI, следующая за трендом


Дата создания: 2024-02-04 10:48:38 Последнее изменение: 2024-02-04 10:48:38
Копировать: 0 Количество просмотров: 595
1
Подписаться
1617
Подписчики

Стратегия захвата волатильности RSI, следующая за трендом

Обзор

Trend Riding RSI Swing Capture Strategy - это волатильная торговая стратегия, объединяющая RSI, MACD и анализ объема сделки. Эта стратегия используется для определения поддержки рыночных тенденций и открытия обратной позиции при появлении сверхпокупа и сверхпродажи с целью достижения низкой покупки и продажи.

Принципы

Основными показателями стратегии являются RSI, MACD и объем торгов. Конкретная логика:

  1. Определить, находится ли RSI в пределах перекупа или перепродажи, чтобы определить время, когда произойдет обратный оборот;

  2. использование MACD для определения ценовых тенденций и изменений энергии в качестве вспомогательных условий для входа;

  3. Поскольку в некоторых странах, например, в Китае и Китае, существуют различные методы, используемые для определения прорыва, то в некоторых странах, например, в Китае и Китае, используются различные методы.

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

Преимущества

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

Риск

Никакая торговая стратегия не может полностью избежать рыночного риска, и эта стратегия не является исключением. Основные риски сосредоточены в:

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

  2. Неправильная настройка параметров. Неправильная настройка параметров, таких как RSI, MACD, может привести к снижению качества торгового сигнала и создать слишком много ошибочных сигналов.

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

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

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

  1. Добавление алгоритмов машинного обучения для динамического отслеживания стоп-битов.

  2. Добавление большего количества фильтров, таких как ленты Brin, KD и т. д., повышает качество сигнала.

  3. Оптимизация стратегии управления капиталом, корректировка позиций в режиме реального времени. Это позволяет лучше контролировать влияние внезапных событий.

  4. Использование передового анализа данных для автоматического поиска оптимальных параметров.

  5. Повышение эффективности стратегии с использованием более глубоких рыночных данных.

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

Трендовый RSI - это очень практичная стратегия торговли на коротких линиях. Она учитывает тенденции в ценовых тенденциях, а также наблюдает за чрезмерной покупкой и продажей, а затем в сочетании с фильтрацией объема торговли образует относительно стабильную торговую систему. При строгом управлении риском эта стратегия способна стабильно получать прибыль в различных ситуациях, и это заслуживает внимания инвесторов.

Исходный код стратегии
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// SwingSync RSI Strategy
// This strategy combines RSI, MACD, and volume analysis to capture swing trading opportunities.
// It includes risk management features to protect your capital.
// Adjust the input parameters and backtest to optimize performance.// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © str0zzapreti

//@version=5
strategy('SwingSync RSI', overlay=true)
// Adjustable Parameters
// var custom_message = input.string('', title='Symbol')
ma_period = input.int(20, title='Moving Average Period')
stop_loss_percent = input.float(1, title='STOP LOSS (%)',step=0.1)
macd_fast_length = input(12, title='MACD Fast Length')
macd_slow_length = input(26, title='MACD Slow Length')
macd_signal_smoothing = input(9, title='MACD Signal Smoothing')
rsi_period = input(14, title='RSI Period')
rsi_overbought = input(70, title='RSI OVERBOUGHT LEVEL')
rsi_oversold = input(30, title='RSI OVERSOLD LEVEL')
volume_ma_period = input(20, title="Volume MA Period")
volume_threshold_percent = input(50, title="Volume Threshold (%)")
slippage = 0.5
risk_per_trade = input(1, title='Risk per Trade (%)')

// Calculating Indicators *
price = close
ma = ta.sma(price, ma_period)
rsi = ta.rsi(price, rsi_period)
vol_ma = ta.sma(volume, volume_ma_period)
[macdLine, signalLine, _] = ta.macd(price, macd_fast_length, macd_slow_length, macd_signal_smoothing)
volume_threshold = vol_ma * (1 + volume_threshold_percent / 100)

// Definitions
volumeCheck = volume > volume_threshold
longRsiCheck = rsi < rsi_overbought
longMovAvgCross = ta.crossover(price, ma)
longMovAvgCheck = price > ma
longMacdCross = ta.crossover(macdLine, signalLine)
longMacdCheck = macdLine > signalLine
shortRsiCheck = rsi > rsi_oversold
shortMovAvgCross = ta.crossunder(price, ma)
shortMovAvgCheck = price < ma
shortMacdCross = ta.crossunder(macdLine, signalLine)
shortMacdCheck = macdLine < signalLine

// Entry Conditions for Long and Short Trades
longCondition = volumeCheck and longRsiCheck and ((longMovAvgCross and longMacdCheck) or (longMacdCross and longMovAvgCheck)) 
shortCondition = volumeCheck and shortRsiCheck and  ((shortMovAvgCross and shortMacdCheck) or (shortMacdCross and shortMovAvgCheck)) 

// Tracking Last Trade Day
var int last_trade_day = na

if longCondition or shortCondition
    last_trade_day := dayofweek

// Calculate can_exit_trade based on day difference
can_exit_trade = dayofweek != last_trade_day

// Entry Orders
var float max_qty_based_on_equity = na
var float qty = na

if longCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Long', strategy.long, 1)

if shortCondition
    max_qty_based_on_equity := strategy.equity / price
    qty := (strategy.equity * risk_per_trade / 100) / price
    if qty > max_qty_based_on_equity
        qty := max_qty_based_on_equity
    strategy.entry('Short', strategy.short, 1)

// Exit Conditions
exitLongCondition = ta.crossunder(price, ma) or rsi > rsi_overbought
exitShortCondition = ta.crossover(price, ma) or rsi < rsi_oversold

// Calculate take profit and stop loss levels
stopLossLevelLong = strategy.position_avg_price * (1 - stop_loss_percent / 100)
stopLossLevelShort = strategy.position_avg_price * (1 + stop_loss_percent / 100)

// Adjust for slippage
adjusted_stop_loss_long = stopLossLevelLong * (1 + slippage / 100)
adjusted_stop_loss_short = stopLossLevelShort * (1 - slippage / 100)

// Strategy Exit Orders for Long Positions
if strategy.position_size > 0 and can_exit_trade
    if (close < adjusted_stop_loss_long)
        strategy.close('Long', comment='Stop Loss Long')
    if exitLongCondition
        strategy.close('Long', comment='Exit Long')

// Strategy Exit Orders for Short Positions
if strategy.position_size < 0 and can_exit_trade
    if (close > adjusted_stop_loss_short)
        strategy.close('Short', comment='Stop Loss Short')
    if exitShortCondition
        strategy.close('Short', comment='Exit Short')

plot(ma)