
La estrategia utiliza el indicador VWMA para determinar la dirección de la tendencia y el indicador ATR para establecer la línea de parada para lograr el seguimiento de la tendencia. La estrategia se aplica a un entorno de mercado con una tendencia evidente.
Utilice el indicador VWMA para determinar la dirección de la tendencia. Cuando el precio esté por encima de la VWMA, juzgalo como una tendencia al alza, haga más; cuando el precio esté por debajo de la VWMA, juzgalo como una tendencia a la baja, haga hueco.
Para filtrar las brechas falsas, se incluye la determinación del oscilador RSI. Sólo se emite una señal múltiple cuando el RSI está por encima de 30.
El indicador ATR es utilizado para calcular la línea de pérdida. La longitud de la ATR está configurada para ser la misma que la VWMA, y el múltiplo está configurado para ser 3.5 . La línea de pérdida se actualiza en tiempo real según el precio .
La configuración del multiplicador ATR afecta la contracción de la línea de stop loss. Cuanto mayor sea el multiplicador, menor será la frecuencia de actualización de la línea de stop loss y mejor será el seguimiento de la tendencia.
El tamaño de la posición se calcula en función del porcentaje de pérdidas y ganancias de la cuenta dentro de la estrategia.
Cuando el precio cae por debajo de la línea de stop loss, el stop loss sale y hace una posición más.
El uso de indicadores VWMA para determinar la dirección de la tendencia permite capturar continuamente las oportunidades de tendencia.
Se ha añadido el filtro RSI para filtrar algunas señales falsas de ruptura.
La línea de parada ATR permite el seguimiento de la tendencia y evita ser invertida.
El cálculo de las posiciones en función del porcentaje de derecho de ganancia y pérdida de la cuenta es favorable para el control del riesgo.
En los puntos de cambio de tendencia, existe el riesgo de pérdidas. Se debe reducir la posición adecuadamente para reducir las pérdidas individuales.
Los parámetros de ATR no están configurados correctamente, lo que puede causar que la línea de parada sea demasiado sensible o lenta. Se debe probar para determinar los parámetros adecuados.
Si la tendencia se invierte demasiado rápido, la actualización de la línea de parada puede no llegar a tiempo y ampliar la pérdida.
En mercados con baja volatilidad, las posiciones deben reducirse y la frecuencia de contracción de la línea de stop loss debe aumentarse.
Se pueden probar diferentes combinaciones de parámetros VWMA para seleccionar los que producen la mejor señal.
Se puede probar la configuración de otros parámetros del oscilador RSI, como la línea de sobrecompra y sobreventa.
Se pueden probar los parámetros de multiplicidad de ATR para encontrar el mejor punto para hacer un tradeoff entre la retirada y el seguimiento.
Se puede combinar con otros indicadores para filtrar la señal, como MACD, KD, etc., para mejorar la calidad de la señal.
Se puede optimizar la gestión de posiciones y el porcentaje de stop loss en función de la volatilidad del mercado.
La estrategia es global y está orientada a la tendencia, por lo que es adecuada para capturar tendencias de precios evidentes. La estrategia tiene ventajas en cuanto a juicio de tendencias, filtración de señales y seguimiento de pérdidas, pero también existe un riesgo de reversión de tendencias.
/*backtest
start: 2023-10-07 00:00:00
end: 2023-10-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © mohanee
//@version=4
//strategy("", overlay=true)
strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed,
float xATRTrailingStop=na
int pos=na
vwmalength = input(33, title="VWMA Length", minval=1, maxval=365)
//vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365)
nATRPeriod = input(33, title="ATR length", minval=1, maxval=365)
nATRMultip = input(3.5, title="ATR Multiplier")
rsiofVwmaLength=input(14, title="RSI of VWMA Length")
riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)
vwmaVal=vwma(close, vwmalength)
//vwmaVal2=vwma(close, vwmalength2)
//maVal=sma(close, vwmalength)
plot(vwmaVal, color=color.orange, linewidth=2, title="VWMA")
//plot(vwmaVal2, color=color.blue, title="VWMA Short Term")
//plot(maVal, color=color.blue, title="MA")
//rsi of vwma Longterm
rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength)
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos:= iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
//plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop")
//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100)
//check if cash is sufficient to buy qty1 , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1
//Long Entry
//strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop> vwmaVal)
strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and close>open and close>vwmaVal and pos == 1 ) ///pos == 1 means ATRStop line is green
//vwmaVal2>vwmaVal and
plot(strategy.position_size>=1 ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop")
bgcolor(strategy.position_size>=1 ? color.blue : na )
//Exit
strategy.close(id="VWMA LE", when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop) )
//strategy.close(id="VWMA LE", when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )