La estrategia combina dos indicadores, VSTOP y RSI, para realizar operaciones de corto plazo cuando el RSI está sobrecomprando y sobrevendido, y al mismo tiempo usa VSTOP para determinar la dirección de la tendencia y para detener los pérdidas en el momento en que la tendencia se invierte.
Calcula el valor del indicador RSI y establece las líneas de sobreventa y sobreventa. Cuando el RSI es mayor que la línea de sobreventa, haga más; cuando el RSI es menor que la línea de sobreventa, haga menos.
Calcula el VSTOP, que es la línea de parada establecida en función del rango de fluctuación del precio. Los pasos específicos para calcularlo son los siguientes:
Calcular el indicador ATR y establecer el coeficiente de ATR
Registro de precios máximos y mínimos
De acuerdo con si está en una tendencia ascendente is_uptrend, se calcula la línea de parada de pérdida actual = is_uptrend ? max - mult * ATR: min + mult * ATR
Actualización de la línea de detención: vstop1 = is_uptrend ? max ((vstop_prev, stop): min ((vstop_prev, stop)
Cuando se produce una reversión de la tendencia, vuelva a establecer la línea de parada vstop
Cuando el RSI está sobrevendido, si el precio se detiene en VSTOP, se cancela; cuando el RSI está sobrecomprado, se hace más.
La combinación de un indicador de tendencia y un indicador de sobrecompra y sobreventa permite capturar oportunidades de reversión en una situación de tendencia.
El uso de VSTOP para establecer el stop loss puede controlar el riesgo de manera efectiva.
La configuración de los parámetros RSI es flexible y se puede optimizar para diferentes variedades.
VSTOP rastrea el deterioro de forma sistemática y sin necesidad de intervención humana.
Si los parámetros ATR se establecen demasiado grandes o demasiado pequeños, la línea de parada pierde sentido. Se pueden probar diferentes parámetros ATR, o se pueden configurar con el promedio de ATR.
En la estabilización, el RSI puede desencadenar señales de negociación con frecuencia, lo que aumenta la frecuencia de negociación y el costo del punto de deslizamiento. Se pueden ajustar los parámetros del RSI de manera adecuada o agregar condiciones de filtración para reducir las señales no válidas.
El fracaso de la inversión es el principal riesgo de esta estrategia, y los comerciantes necesitan prestar atención a la dirección de la tendencia a un nivel más amplio, evitando operaciones de contrarreloj. La dirección de la tendencia se puede juzgar mediante la combinación con la línea media a largo plazo.
Se puede considerar la eliminación de señales no válidas en combinación con otros indicadores, como el indicador de energía cuantitativa, el canal de Tongji, etc.
Los parámetros se pueden optimizar para encontrar la combinación óptima de parámetros en función de los resultados de las pruebas de retroalimentación.
Se puede estudiar cómo se puede ajustar dinámicamente el coeficiente de ATR para adaptarse a diferentes entornos de mercado.
Se pueden explorar estrategias para cerrar durante períodos específicos de tiempo para evitar períodos de alto riesgo.
La estrategia integra el juicio de tendencia y el juicio de sobreventa y sobreventa, y es capaz de capturar oportunidades de reversión en situaciones de tendencia. La gestión sistemática de la parada VSTOP ayuda a controlar el riesgo. La optimización de los parámetros y la combinación de otros indicadores pueden aumentar aún más la eficacia de la estrategia.
/*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")