Esta estrategia utiliza VWMA para determinar la dirección de la tendencia y establece un stop loss con ATR para seguir la tendencia.
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.
Agregue un filtro de oscilador RSI para evitar señales de ruptura falsas.
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.
El multiplicador ATR controla la estrechez de la línea de stop loss.
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.
Salir de la posición larga cuando el precio se rompe por debajo de la línea de stop loss.
El uso de VWMA para determinar la tendencia captura las oportunidades de tendencia de manera persistente.
El filtro RSI evita algunas falsas señales de fuga.
ATR trailing stop sigue la tendencia y evita ser detenido por las inversiones.
El tamaño de las posiciones basado en el capital de la cuenta y el stop loss favorece la gestión del riesgo.
Pérdida potencial en los puntos de inflexión de la tendencia.
La configuración incorrecta de los parámetros ATR conduce a una línea de pérdida de frenado demasiado apretada o floja.
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.
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.
Prueba diferentes combinaciones de parámetros VWMA para encontrar los parámetros óptimos de la señal.
Prueba otras configuraciones del RSI como líneas sobrecompradas/sobrevendidas.
Prueba el multiplicador ATR para encontrar el equilibrio óptimo entre la capacidad de reducción y la capacidad de seguimiento.
Añadir otros filtros como MACD, KD para mejorar la calidad de la señal.
Optimizar el tamaño de las posiciones y el porcentaje de stop loss basado en la volatilidad del mercado.
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 )