Торговая стратегия RSI и коррекции Фибоначчи


Дата создания: 2023-12-27 16:49:52 Последнее изменение: 2023-12-27 16:49:52
Копировать: 3 Количество просмотров: 1189
1
Подписаться
1623
Подписчики

Торговая стратегия RSI и коррекции Фибоначчи

Обзор

В данной статье описывается стратегия торговли в сочетании с относительно сильным индексом (RSI) и обратным точкой Фибоначчи. Эта стратегия сначала вычисляет ключевые обратные точки Фибоначчи на основе исторической динамики цен в течение определенного периода, а затем в сочетании с показателем RSI определяет, является ли рынок перекупленным, и посылает торговый сигнал вблизи обратной точки.

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

Эта стратегия основана на следующих принципах:

  1. Используя данные о ценах за определенный период (например, 200 K-линий), вычислить среднее значение, стандартное расхождение и ключевые фибоначевые обороты за этот период (например, 0,764);

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

  3. Если индикатор RSI показывает сигнал о перекупке или перепродаже, то вблизи обратной позиции появляется сигнал о покупке или продаже;

  4. Устанавливаются уровни стоп-лосса и стоп-стопа, а при превышении установленной цены или вызывании стоп-лосса - ликвидируются позиции.

Вот основные процессы, по которым стратегия определяет время совершения сделки.

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

По сравнению с использованием RSI или Fibonacci в одиночку, комбинация имеет следующие преимущества:

  1. Двойные фильтры, которые уменьшают ложные сигналы и улучшают качество сигнала;

  2. Это классический метод технического анализа, используемый для проведения обратных сделок вблизи точки обратного отсчета.

  3. Установка стоп-стоп позволяет эффективно контролировать максимальные потери в одной сделке;

  4. Можно оптимизировать параметры, адаптировать параметры индикатора и настройки поворота, чтобы адаптироваться к различным периодам и видам.

Анализ стратегических рисков

В этой стратегии есть определенные риски, о которых следует помнить:

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

  2. Одноциклический RSI может привести к ложному сигналу смертельного отскока, и можно рассмотреть многоциклическую проверку;

  3. Стоп-пойнты установлены слишком мягко, что может привести к увеличению убытков;

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

Эти риски можно контролировать с помощью таких методов, как коррекция параметров, оптимизация комбинации показателей.

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

В этой стратегии можно сделать следующие улучшения:

  1. Увеличение проверки показателей объема сделок, чтобы избежать ложных прорывов в низких объемах;

  2. Взвешивание пояса Бринга, сигнализация при прорыве пояса;

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

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

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

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

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

//@version=4
strategy(title="Gab Fib  + RSI", overlay=true, default_qty_type=strategy.cash, default_qty_value=100000, initial_capital=1000, currency=currency.USD, commission_type=strategy.commission.cash_per_order, commission_value=4)

// Inputs
timeFilter = year >= 2000
    // Stop Loss 
stop_loss = input(title="SL in % of Instrum. i.e 1.5%=150pips", minval=0, step=0.1, defval=1.5) /100
    // RSI Inputs
len = input(title="[RSI] Length", minval=0, step=1, defval=14)
overSold = input(title="[RSI] Over Sold %", defval=30)
overBought = input(title="[RSI] Over Bought %", defval=70)
    // Fibonacci Levels
length = input(title="[Fibonacci] Length", defval=200, minval=1)
src = input(hlc3, title="[Fibonacci] Source")
mult = input(title="[Fibonacci] Multiplier", defval=3.0, minval=0.001, maxval=50)
level = input(title="[Fibonacci] Level", defval=764)


// Calculate Fibonacci
basis = vwma(src, length)
dev = mult * stdev(src, length)
fu764= basis + (0.001*level*dev)
fu1= basis + (1*dev)
fd764= basis - (0.001*level*dev)
fd1= basis - (1*dev)

// Calculate RSI
vrsi = rsi(close, len)

// Calculate the Targets
targetUp = fd764
targetDown = fu764
    // Actual Targets
bought = strategy.position_size[0] > strategy.position_size[1]
exit_long = valuewhen(bought, targetUp, 0)
sold = strategy.position_size[0] < strategy.position_size[1]
exit_short = valuewhen(sold, targetDown, 0)

// Calculate Stop Losses
sl_long = close * (1-stop_loss)
sl_short = close * (1+stop_loss)


// Conditions to Open Trades
openLong = low < fd1 and crossover(vrsi[1], overSold)
openShort = high > fu1 and crossunder(vrsi[1], overBought)

// Conditions to Close Trades
closeLong = high > exit_long or sl_long
closeShort = low < exit_short or sl_short


//Rounding to MinTick value
roundtargetUp = round_to_mintick(targetUp)
roundtargetDown = round_to_mintick(targetDown)
roundsllong = round_to_mintick(sl_long)
roundslshort = round_to_mintick(sl_short)

// Plots
plot(basis, color=color.blue, linewidth=2, title="[Fibonacci Level] Basis")
plot(fu764, color=color.white, linewidth=1, title="[Fibonacci Level] Short Target")
plot(fu1, color=color.red, linewidth=2, title="[Fibonacci Level] Top")
plot(fd764, color=color.white, linewidth=1, title="[Fibonacci Level] Long Target")
plot(fd1, color=color.green, linewidth=2, title="[Fibonacci Level] Bottom")


// Strategy Orders
if timeFilter
    // Entry Orders
    strategy.entry(id="buy", long=true, when=openLong and high < targetUp, limit=close, alert_message="buy,"+tostring(syminfo.ticker)+",tp="+tostring(roundtargetUp)+",sl="+tostring(roundsllong))
    strategy.entry(id="sell", long=false, when=openShort and low > targetDown, limit=close,  alert_message="sell,"+tostring(syminfo.ticker)+",tp="+tostring(roundtargetDown)+",sl="+tostring(roundslshort))

    // Exit Orders
    strategy.exit(id="closelong", when=closeLong and strategy.position_size > 0, limit=exit_long, stop=sl_long, alert_message="closelong,"+tostring(syminfo.ticker))
    strategy.exit(id="closeshort", when=closeShort and strategy.position_size < 0, limit=exit_short, stop=sl_short, alert_message="closeshort,"+tostring(syminfo.ticker))