В процессе загрузки ресурсов... загрузка...

Стратегия отмены тренда по РСИ

Автор:Чао Чжан, Дата: 2024-04-28 13:33:19
Тэги:РСИATR

img

Обзор

Стратегия реверсии тренда RSI - это количественная торговая стратегия, основанная на индексе относительной силы (RSI) и среднем истинном диапазоне (ATR). Она динамически регулирует уровни получения прибыли и остановки убытков (TP / SL), чтобы адаптироваться к быстрым колебаниям рынка и захватывать возможности для изменения тренда. Стратегия сосредоточена вокруг RSI, в сочетании с ATR для измерения волатильности, и строит две адаптивные динамические полосы в качестве основы для открытия и закрытия позиций. Эта стратегия может использоваться независимо или в качестве модуля получения прибыли и остановки убытков для других стратегий.

Принцип стратегии

Ядро стратегии обратного тренда RSI заключается в построении динамических диапазонов TP/SL. Во-первых, он использует пользовательские функции highest_custom и lowest_custom для поиска самых высоких и самых низких цен с момента последнего кроссовера, формируя основу диапазонов. Затем он вычисляет RSI и ATR с длиной, указанной пользователем, и выполняет следующие расчеты:

  1. Нижняя полоса = Самая высокая цена × [1 - (ATR/Цена + 1/(RSI Нижняя полоса × мультипликатор))]
  2. Верхняя полоса = Самая низкая цена × [1 + (ATR/Цена + 1/(RSI Верхняя полоса × множитель))]

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

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

  1. Высокая адаптивность: диапазоны TP/SL могут автоматически корректироваться на основе волатильности цен, быстро реагируя на изменения рынка.
  2. Регулируемые параметры: путем регулирования таких параметров, как длина и множитель, чувствительность стратегии может быть гибко контролирована.
  3. Ясная логика: структура кода разумна и легко понять и развить дальше.
  4. Широкая применимость: может использоваться самостоятельно как стратегия или добавлять функциональность TP/SL к другим стратегиям.
  5. Вычислительная эффективность: Используя пользовательские функции, такие как highest_custom, он избегает массовых повторяющихся вычислений, вызванных использованием типов рядов.

Стратегические риски

  1. Неправильный выбор параметров может привести к дополнительным рискам. Например, небольшая длина может привести к частой торговле, а большой мультипликатор может привести к чрезмерно свободным стоп-лосс.
  2. Результаты могут быть плохими в особых рыночных условиях, таких как частые консолидации и ложные прорывы на волатильном рынке, что может привести к большему количеству проигрышных сделок.
  3. Сама стратегия не имеет функции оценки тренда и должна использоваться в сочетании с другими сигналами.

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

  1. Подумайте о добавлении индикаторов тренда, таких как скользящие средние, для торговли только в точках переворота в направлении основной тенденции.
  2. Оптимизируйте параметры, чтобы найти наилучшую комбинацию длины, множителя и т.д.
  3. Комбинировать с другими техническими показателями или показателями настроения на рынке для улучшения точности точек входа и выхода.
  4. Добавьте управление позициями для строгого контроля риска каждой сделки.

Резюме

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


/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)

Связанные

Больше