Esta estratégia é um sistema de negociação baseado no indicador de Volatility Stop (VStop) e na média móvel exponencial (EMA). Incorporando os princípios de negociação de Stan Weinstein, ele otimiza o gerenciamento de capital através de stop losses ajustados dinamicamente enquanto usa a EMA para confirmar a direção da tendência. Esta combinação fornece aos investidores e aos comerciantes de swing uma estrutura que pode capturar tendências e gerenciar riscos de forma eficaz.
A lógica central baseia-se em dois indicadores técnicos principais: 1. Stop de Volatilidade (VStop): Um indicador dinâmico de stop-loss baseado no ATR (Average True Range) que se adapta à volatilidade do mercado.
Lógica de geração de sinais comerciais: - Condições de entrada: Preço acima de VStop (em tendência de alta) e preço de fechamento acima da EMA - Condições de saída: Quando o preço de fechamento cair abaixo da EMA - Controle de riscos: posições de stop-loss em tempo real fornecidas por VStop ajustado dinamicamente
Esta estratégia constrói uma estrutura de negociação de tendência completa, combinando paradas de volatilidade e sistemas de média móvel. Suas principais vantagens estão na adaptabilidade e nas capacidades de gerenciamento de risco, mas deve-se prestar atenção ao impacto do ambiente de mercado no desempenho da estratégia. Através da otimização e melhoria contínuas, a estratégia tem o potencial de manter um desempenho estável em diferentes ambientes de mercado. Os comerciantes são aconselhados a testar completamente as configurações de parâmetros e ajustar a estratégia de acordo com sua tolerância ao risco antes da negociação ao vivo.
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("VStop + EMA Strategy", overlay=true) // VStop Parameters length = input.int(20, "VStop Length", minval=2) multiplier = input.float(2.0, "VStop Multiplier", minval=0.25, step=0.25) // EMA Parameters emaLength = input.int(30, "EMA Length", minval=1) // VStop Calculation volStop(src, atrlen, atrfactor) => if not na(src) var max = src var min = src var uptrend = true var float stop = na atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr) max := math.max(max, src) min := math.min(min, src) stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != uptrend[1] and not barstate.isfirst max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] // Calculate VStop [vStop, isUptrend] = volStop(close, length, multiplier) // Plot VStop plot(vStop, "Volatility Stop", style=plot.style_cross, color=isUptrend ? color.teal : color.red) // Calculate 30 EMA emaValue = ta.ema(close, emaLength) plot(emaValue, "EMA", color=color.blue) // Entry and Exit Conditions longCondition = isUptrend and close > emaValue exitCondition = close <= emaValue // Strategy Execution if longCondition and not strategy.opentrades strategy.entry("Long", strategy.long) if exitCondition and strategy.opentrades strategy.close("Long") // Display Strategy Info bgcolor(isUptrend ? color.new(color.teal, 90) : color.new(color.red, 90), title="Trend Background")