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

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

Автор:Чао Чжан, Дата: 2024-06-28 15:02:37
Тэги:РСИМ.А.ББSMAЕМАСММАWMAVWMA

img

Обзор

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

В основе этой стратегии лежит использование дивергенции RSI для выявления потенциальных условий перекупления и перепродажи. Она обнаруживает дивергенции путем сравнения максимумов и минимумов RSI и цены и объединяет уровни RSI для определения пунктов входа. Кроме того, стратегия включает в себя различные типы скользящих средних, таких как простая скользящая средняя (SMA), экспоненциальная скользящая средняя (EMA), сглаженная скользящая средняя (SMMA) и другие, для обеспечения дополнительных сигналов подтверждения тренда.

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

  1. Расчет RSI: использует настраиваемый период RSI (по умолчанию 60) для расчета значений RSI.

  2. Движущаяся средняя RSI: применяет скользящую среднюю к RSI, поддерживая несколько типов MA, включая SMA, EMA, SMMA, WMA и VWMA.

  3. Выявление дивергенции:

    • Бычье расхождение: формируется, когда цена достигает более низкого минимума, но RSI этого не делает.
    • Медвежья дивергенция: формируется, когда цена достигает более высокого максимума, но RSI этого не делает.
  4. Условия въезда:

    • Длинный вход: выявлено бычье расхождение и RSI ниже 40.
    • Короткий вход: обнаружено медвежье расхождение и RSI выше 60.
  5. Управление торговлей:

    • Стоп-лосс: устанавливается на фиксированном количестве пунктов (по умолчанию 11 пунктов).
    • Приобретение прибыли: устанавливается на фиксированном количестве пунктов (по умолчанию 33 пункта).
  6. Визуализация:

    • Графики линий RSI и скользящей средней RSI.
    • Показывает горизонтальные линии на уровнях 30, 50 и 70 RSI.
    • Опциональное отображение полос Боллинджера.
    • Маркируйте место расхождения на карте.

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

  1. Многоиндикаторный анализ: объединяет RSI, скользящие средние и полосы Боллинджера для получения всеобъемлющего представления о рынке.

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

  3. Идентификация расхождений: определяет потенциальные возможности реверсии путем выявления расхождений между РСИ и ценой.

  4. Управление рисками: встроенные механизмы остановки потерь и получения прибыли помогают контролировать риск.

  5. Визуальное представление: интуитивно отображает торговые сигналы и расхождения на графике.

  6. Приспособляемость: может применяться к различным торговым инструментам и срокам.

  7. Потенциал автоматизации: легкая интеграция в автоматизированные торговые системы.

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

  1. Риск ложного сигнала: может привести к чрезмерным ложным сигналам дивергенции на различных рынках.

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

  3. Переоценка: на сильно волатильных рынках стратегия может вызвать слишком много торговых сигналов.

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

  5. Тенденционные показатели рынка: стратегии дивергенции часто могут торговаться против тренда на сильно развивающихся рынках.

  6. Фиксированный риск стоп-лосса: использование фиксированного количества пунктов в качестве стоп-лосса может быть не подходит для всех рыночных условий.

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

  1. Введение фильтра тренда: Добавить долгосрочный скользящий средний показатель или индикатор ADX, чтобы избежать контра-тенденции в сильных тенденциях.

  2. Динамический стоп-лосс: внедрить ATR или динамический стоп-лосс на основе процента волатильности для адаптации к различным волатильностям рынка.

  3. Многочасовой анализ: включить сигналы из более высоких временных рамок, чтобы подтвердить направление торговли.

  4. Интеграция анализа объема: включить показатели объема для повышения надежности сигнала.

  5. Оптимизируйте время входа: подумайте о использовании моделей ценового действия или формирования свечей для точных входов.

  6. Оптимизация машинного обучения: Использование алгоритмов машинного обучения для оптимизации выбора параметров и генерации сигнала.

  7. Дополнительные условия фильтрации: добавление дополнительных технических показателей или фундаментальных факторов для фильтрации торговых сигналов.

Заключение

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

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

Ключевым является корректировка параметров в соответствии с конкретными инструментами торговли и рыночными условиями, а также проверка сигналов в сочетании с другими аналитическими методами.


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

//@version=5
strategy("Advanced Gold Scalping Strategy with RSI Divergence", overlay=false)

// Input parameters
rsiLengthInput = input.int(60, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(ohlc4, "Source", group="RSI Settings")
maTypeInput = input.string("SMMA (RMA)", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(3, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input(true, title="Show Divergence", group="RSI Settings")
stopLoss = input.float(11, title="Stop Loss (pips)", group="Trade Settings")
takeProfit = input.float(33, title="Take Profit (pips)", group="Trade Settings")

// RSI and MA calculation
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

// Divergence detection
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5

plFound = na(ta.pivotlow(rsi, lookbackLeft, lookbackRight)) ? false : true
phFound = na(ta.pivothigh(rsi, lookbackLeft, lookbackRight)) ? false : true

_inRange(cond) =>
    bars = ta.barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

// Bullish divergence
rsiHL = rsi[lookbackRight] > ta.valuewhen(plFound, rsi[lookbackRight], 1) and _inRange(plFound[1])
priceLL = low[lookbackRight] < ta.valuewhen(plFound, low[lookbackRight], 1)
bullishDivergence = priceLL and rsiHL and plFound

// Bearish divergence
rsiLH = rsi[lookbackRight] < ta.valuewhen(phFound, rsi[lookbackRight], 1) and _inRange(phFound[1])
priceHH = high[lookbackRight] > ta.valuewhen(phFound, high[lookbackRight], 1)
bearishDivergence = priceHH and rsiLH and phFound

// Entry conditions
longCondition = bullishDivergence and rsi < 40
shortCondition = bearishDivergence and rsi > 60

// Convert pips to price for Gold (assuming 1 pip = 0.1 for XAUUSD)
stopLossPrice = stopLoss * 0.1
takeProfitPrice = takeProfit * 0.1

// Execute trades
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL", "Long", stop=strategy.position_avg_price - stopLossPrice, limit=strategy.position_avg_price + takeProfitPrice)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL", "Short", stop=strategy.position_avg_price + stopLossPrice, limit=strategy.position_avg_price - takeProfitPrice)

// Plotting
plot(rsi, "RSI", color=#7E57C2)
// plot(rsiMA, "RSI-based MA", color=color.yellow)
hline(60, "RSI Upper Band", color=#787B86)
// hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
hline(40, "RSI Lower Band", color=#787B86)
fill(hline(60), hline(40), color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

// Divergence visualization
plotshape(showDivergence and bullishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bullish Divergence", text="Bull", style=shape.labelup, location=location.absolute, color=color.green, textcolor=color.white)
plotshape(showDivergence and bearishDivergence ? rsi[lookbackRight] : na, offset=-lookbackRight, title="Bearish Divergence", text="Bear", style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white)


Связанные

Больше