Стратегия торговли по комбинации SMA и RSI

Автор:Чао Чжан, Дата: 2023-10-08 11:40:49
Тэги:

Обзор

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

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

  1. Используйте SMA (200 периодов) для определения общего направления тренда.

  2. Используйте РСИ (14 периодов) для выявления условий перекупки/перепродажи.

  3. После открытия короткой позиции, установите последнюю стоп-лосс по самой низкой цене закрытия.

  4. Существует три типа стоп-лосса: стоп-цена, стоп-РСИ и стоп-прибыль.

Сильные стороны

  1. Объединение индикаторов тенденции и показателей перекупки/перепродажи улучшает точность сроков записи.

  2. Следующий стоп-лосс может защитить прибыль в соответствии с изменением цены в режиме реального времени, избегая жесткого стоп-лосса.

  3. Двусторонний триггер RSI помогает зафиксировать прибыль и предотвратить чрезмерные убытки.

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

Риски

  1. Параметры SMA и RSI могут не подходить для всех продуктов и временных рамок, требуя оптимизации.

  2. Торговые издержки, такие как скольжение и комиссии, игнорируются, что влияет на фактическую PnL.

  3. Другие факторы, такие как объем и структура рынка, не учитываются, что приводит к ненадежным сигналам.

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

  5. Метод стоп-лосса является относительно жестким, неспособным адаптироваться к огромным изменениям на рынке.

Улучшение

  1. Проверьте и оптимизируйте параметры периода SMA и RSI, чтобы найти лучшую комбинацию.

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

  3. Комбинации тестов с другими индикаторами, такими как MACD, Bollinger Bands и т.д.

  4. Добавьте алгоритмы машинного обучения, улучшая точность сигнала путем обучения историческим данным.

  5. Оптимизировать стоп-лосс, чтобы быть более гибким и адаптироваться к изменениям на рынке.

  6. Добавьте управление рисками для контроля суммы потерь от одной сделки.

Заключение

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


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © abdllhatn

//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)

// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")

// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)

var float trailingStop = na
var float lastLow = na

// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    trailingStop := na
    lastLow := na

if (strategy.position_size < 0)
    if (na(lastLow) or close < lastLow)
        lastLow := close
        trailingStop := close

if not na(trailingStop) and close > trailingStop
    strategy.close("Sell")

if (rsi_value >= rsi_stop)
    strategy.close("Sell")

if (rsi_value <= rsi_take_profit)
    strategy.close("Sell")

// Plot
plot(sma_value, color=color.red, linewidth=2)




Больше