Рациональный торговый робот, управляемый стратегией RSI

Автор:Чао Чжан, Дата: 2024-02-19 14:43:34
Тэги:

img

Обзор

Эта торговая стратегия включает в себя три надежных технических индикатора - индекс относительной силы (RSI), полосы Боллинджера и уровни поддержки / сопротивления, чтобы обеспечить автоматическое принятие торговых решений.

Логика стратегии

Основная логика этого трейдингового робота основана на RSI, полосах Боллинджера и анализе поддержки/сопротивления.

Во-первых, RSI измеряет силу текущей тенденции. RSI выше 70 предполагает перекупленный рынок, а RSI ниже 30 предполагает перепроданный рынок.

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

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

Консолидируя эти показатели, логика входа определяется как: длинный ход, когда цена достигает нижней полосы (зоны перепроданности), совпадающей с поддержкой; короткий ход, когда цена выходит выше верхней полосы (зоны перекупки), когда высокий превышает сопротивление.

Ключевые преимущества

  1. Надежность сигнала благодаря сочетанию нескольких индикаторов

  2. Полностью автоматизированное выполнение без ручного вмешательства

  3. Уведомления в режиме реального времени для мгновенных обновлений в движении

  4. Интуитивные аннотации графиков для визуализации уровней торговли

  5. Настраиваемые параметры для оптимизации по всем инструментам и временным рамкам

Контроль рисков

  1. Необыкновенная волатильность может повлечь за собой стоп-лосс.

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

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

Возможности для расширения

  1. Включить логику стоп-лосса для дальнейшего ограничения риска снижения.

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

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

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

Заключение

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


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI, Bollinger Bands, and Support/Resistance Trading Bot", overlay=true)

// Define RSI parameters
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="Overbought Level")
rsiOversold = input(30, title="Oversold Level")

// Define Bollinger Bands parameters
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")

// Calculate RSI
rsiValue = rsi(close, rsiLength)

// Calculate Bollinger Bands
basis = sma(close, bbLength)
upperBand = basis + bbMultiplier * stdev(close, bbLength)
lowerBand = basis - bbMultiplier * stdev(close, bbLength)

// Calculate Support and Resistance based on Bollinger Bands
support = basis - bbMultiplier * stdev(close, bbLength)
resistance = basis + bbMultiplier * stdev(close, bbLength)

// Strategy logic
rsiCondition = rsiValue > rsiOverbought or rsiValue < rsiOversold
touchingUpperBand = close >= upperBand
touchingLowerBand = close <= lowerBand

// Entry conditions
longCondition = touchingLowerBand and low <= support
shortCondition = touchingUpperBand and high >= resistance

// Exit conditions
longExitCondition = crossover(close, basis)
shortExitCondition = crossunder(close, basis)

// Automatic close if moving in opposite direction
if (strategy.position_size > 0 and shortCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and longCondition)
    strategy.close("Short")

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot entry and exit arrows
plotarrow(series=longCondition ? 1 : na, colorup=color.new(color.green, 0), offset=-1, minheight=5)
plotarrow(series=shortCondition ? 1 : na, colordown=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=longExitCondition ? -1 : na, colorup=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=shortExitCondition ? -1 : na, colordown=color.new(color.green, 0), offset=-1, minheight=5)

// Plot Bollinger Bands on chart
plot(upperBand, title="Upper Band", color=color.red)
plot(lowerBand, title="Lower Band", color=color.green)

// Highlight areas where price touches Bollinger Bands
bgcolor(touchingUpperBand ? color.new(color.red, 90) : na)
bgcolor(touchingLowerBand ? color.new(color.green, 90) : na)

// Plot Support and Resistance
plot(support, title="Support", color=color.blue)
plot(resistance, title="Resistance", color=color.purple)

// Plot RSI on chart
hline(rsiOverbought, "Overbought Level", color=color.red)
hline(rsiOversold, "Oversold Level", color=color.green)
plot(rsiValue, title="RSI", color=color.blue)


Больше