Estratégia cruzada em espiral com confirmação da média móvel

Autora:ChaoZhang, Data: 2024-02-02 14:50:08
Tags:

img

Resumo

Esta estratégia combina o indicador de vórtice e as linhas de média móvel para identificar a direção e a força das tendências de preços, a fim de gerar sinais longos e curtos potenciais. Quando a linha de vórtice positivo (VI +) cruza acima da linha de vórtice negativo (VI-), cada cruzamento é destacado no gráfico. Se o preço de fechamento estiver acima da linha de média móvel, um sinal longo é gerado.

Estratégia lógica

  1. Indicador Vortex: Consiste de duas linhas - Vortex Positivo (VI+) e Vortex Negativo (VI-).

  2. Média Móvel (MA): usa um método de média móvel escolhido (SMA, EMA, SMMA, WMA ou VWMA) para suavizar os dados de preço.

  3. Determine sinais longos e curtos: quando VI+ cruza acima de VI-, cada cruzamento é destacado. Se o fechamento estiver acima da linha de suavização, um sinal longo é gerado. Quando VI- cruza acima de VI+, se o fechamento estiver abaixo da linha de suavização, um sinal curto é gerado.

Vantagens

  1. Combina a identificação de tendências e a suavização para capturar tendências em mercados em tendência, evitando falsos sinais em mercados agitados.

  2. O indicador de vórtice identifica eficazmente a direção e a força da tendência.

  3. Uma lógica estratégica simples e clara, fácil de compreender e implementar.

  4. Parâmetros personalizáveis, adaptados a diferentes ambientes de mercado.

Riscos

  1. Pode gerar falsos sinais e acelerações em mercados de gama ou sem tendência.

  2. As configurações de parâmetros inadequadas podem afetar o desempenho da estratégia.

  3. Incapaz de proteger contra oscilações extremas dos preços decorrentes de grandes acontecimentos imprevistos.

Melhorias

  1. Incorporar outros indicadores como o volume para determinar a confiabilidade da tendência.

  2. Otimizar os parâmetros para equilibrar o seguimento da tendência e a filtragem do ruído das médias móveis.

  3. Adicionar stop loss às perdas de controlo.

  4. Utilize o aprendizado de máquina para otimização automatizada de parâmetros.

  5. Incorporar módulos de gestão de riscos para ajustar o dimensionamento das posições.

Conclusão

Esta estratégia combina efetivamente o indicador de vórtice e as médias móveis para capturar tendências. Ele identifica a direção da tendência, enquanto tem alguma capacidade de filtragem de ruído para reduzir sinais falsos. A lógica é simples e flexível de usar, funcionando bem em mercados de tendências.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Mais.