Торговая стратегия на основе VSTOP и RSI


Дата создания: 2023-10-09 15:48:46 Последнее изменение: 2023-10-09 15:48:46
Копировать: 0 Количество просмотров: 706
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия сочетает в себе два показателя: VSTOP и RSI, что позволяет совершать множественное короткое действие, когда RSI перекупает и перепродает, и одновременно использовать VSTOP для определения направления тренда, чтобы вовремя остановить убытки при обратном тренде.

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

  1. Рассчитайте значение RSI и установите линию перекупа и линию перепродажи. Когда RSI больше, чем линия перекупа, делайте больше; когда RSI меньше, чем линия перепродажи, делайте пустое.

  2. Вычислить VSTOP, это линия остановки, которая устанавливается в зависимости от диапазона колебаний цены. Конкретные шаги по расчету следуют:

    • Вычислить показатель ATR и установить коэффициент ATR

    • Запись максимума и минимума

    • На основании того, находится ли в восходящем тренде is_uptrend, вычисляется текущая стоп-линия = is_uptrend ? max - mult * ATR: min + mult * ATR

    • Обновление стоп-линии: vstop1 = is_uptrend ? max ((vstop_prev, stop): min ((vstop_prev, stop)

    • Перезагрузка Stop-Line vstop при обратном тренде

  3. При перепродаже RSI, если цены пересекают VSTOP, то делают пробел; при перекупе RSI, делают больше.

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

  • В сочетании с индикатором тренда и индикатором перекупа и перепродажи можно уловить возможность обратного пути в тренде.

  • Используйте VSTOP для установки стоп-лосса, чтобы эффективно контролировать риск.

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

  • VSTOP систематически отслеживает остановки без вмешательства человека.

Риски и решения

  • Если ATR параметры установлены слишком большими или слишком маленькими, то стоп-линия теряет смысл. Можно тестировать различные ATR параметры, а также устанавливать их в сочетании со средним значением ATR.

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

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

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

  • Можно рассмотреть возможность удаления недействительных сигналов в сочетании с другими показателями, такими как показатель количественной энергии, канал Дончи и т. д.

  • На основе результатов обратной проверки параметры могут быть оптимизированы, чтобы найти оптимальную комбинацию параметров.

  • Можно изучить, как динамично корректировать коэффициент ATR, чтобы адаптироваться в различных рыночных условиях.

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

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

Эта стратегия объединяет тенденционное суждение и суждение о перекупе и перепродаже, позволяя захватывать возможности для обратного обмена в условиях тренда. Систематическое управление остановкой VSTOP помогает контролировать риск. Эффективность стратегии может быть дополнительно усилена оптимизацией параметров и комбинацией других показателей.

Исходный код стратегии
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Vstop and RSI", overlay=true)

//RSI Section
length = input(2, "RSI Period") 
overSold = input(30, "Oversold Level") 
overBought = input(70, "Overbought Level") 
price = close 
vrsi = rsi (price, length) 

//VSTOP Section
vlength = input(2, "Vstop Length") 
mult = input(2, "Vstop Mult") 
atr_ = atr(vlength) 

max1=0.0 
min1=0.0 
is_uptrend_prev = false 
stop=0.0 
vstop_prev=0.0 
vstop1=0.0 
is_uptrend=false 
is_trend_changed=false 
max_ = 0.0 
min_ = 0.0 
vstop=0.0 

max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)


is_uptrend_prev := nz(is_uptrend[1], true)

stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

if vrsi > overBought
    strategy.entry("Buy", strategy.long, comment="Buy")
     
if vrsi < overSold and vstop > price
    strategy.entry("Sell", strategy.short, comment="Sell")