Эта стратегия сочетает в себе два показателя: VSTOP и RSI, что позволяет совершать множественное короткое действие, когда RSI перекупает и перепродает, и одновременно использовать VSTOP для определения направления тренда, чтобы вовремя остановить убытки при обратном тренде.
Рассчитайте значение RSI и установите линию перекупа и линию перепродажи. Когда RSI больше, чем линия перекупа, делайте больше; когда RSI меньше, чем линия перепродажи, делайте пустое.
Вычислить 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 при обратном тренде
При перепродаже 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")