VWMA y ATR Seguir la tendencia de la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-07 16:39:47
Las etiquetas:

img

Resumen general

Esta estrategia utiliza VWMA para determinar la dirección de la tendencia y establece un stop loss con ATR para seguir la tendencia.

Estrategia lógica

  1. Utilice VWMA para determinar la dirección de la tendencia. Ir largo cuando el precio está por encima de VWMA, ir corto cuando el precio está por debajo de VWMA.

  2. Agregue un filtro de oscilador RSI para evitar señales de ruptura falsas.

  3. Utilice ATR para calcular la línea de stop loss. La longitud de ATR está configurada para ser la misma que VWMA, el multiplicador es 3.5.

  4. El multiplicador ATR controla la estrechez de la línea de stop loss.

  5. El tamaño de la posición se calcula en función del capital de la cuenta y del porcentaje de pérdidas de detención.

  6. Salir de la posición larga cuando el precio se rompe por debajo de la línea de stop loss.

Ventajas

  1. El uso de VWMA para determinar la tendencia captura las oportunidades de tendencia de manera persistente.

  2. El filtro RSI evita algunas falsas señales de fuga.

  3. ATR trailing stop sigue la tendencia y evita ser detenido por las inversiones.

  4. El tamaño de las posiciones basado en el capital de la cuenta y el stop loss favorece la gestión del riesgo.

Los riesgos

  1. Pérdida potencial en los puntos de inflexión de la tendencia.

  2. La configuración incorrecta de los parámetros ATR conduce a una línea de pérdida de frenado demasiado apretada o floja.

  3. La inversión de tendencia rápida puede hacer que la actualización de la parada de pérdidas se retrase, aumentando las pérdidas.

  4. En entornos de baja volatilidad, reducir el tamaño de la posición y aumentar la frecuencia de actualización de las pérdidas de parada.

Mejoramiento

  1. Prueba diferentes combinaciones de parámetros VWMA para encontrar los parámetros óptimos de la señal.

  2. Prueba otras configuraciones del RSI como líneas sobrecompradas/sobrevendidas.

  3. Prueba el multiplicador ATR para encontrar el equilibrio óptimo entre la capacidad de reducción y la capacidad de seguimiento.

  4. Añadir otros filtros como MACD, KD para mejorar la calidad de la señal.

  5. Optimizar el tamaño de las posiciones y el porcentaje de stop loss basado en la volatilidad del mercado.

Resumen de las actividades

La estrategia tiene un sesgo general de seguimiento de tendencias y captura bien las tendencias obvias de precios. Tiene ventajas en la determinación de tendencias, filtro de señales, seguimiento de stop loss, etc. También tiene riesgos en la inversió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 )

Más.