Estratégia de negociação quantitativa baseada no indicador de vórtice melhorado

Autora:ChaoZhang, Data: 2023-11-14 14:40:54
Tags:

img

Resumo

Esta estratégia é uma versão atualizada da estratégia do indicador de vórtice. Baseada no indicador de vórtice original, incorpora vários novos recursos, incluindo o gatilho de negociações com base no limiar, suavização de linhas de vórtice com EMA, adição de stop loss e take profit, implementação de estratégias long-only, short-only ou long/short, etc. É adequado para investidores que desejam aplicar o indicador de vórtice aprimorado na negociação quantitativa.

Princípios

O principal indicador desta estratégia é o indicador de vórtice melhorado. O indicador de vórtice tradicional forma linhas de vórtice positivas e negativas, calculando a soma absoluta das flutuações de preços. Quando a linha positiva cruza acima da linha negativa, ele envia um sinal de compra. Quando a linha negativa cruza abaixo da linha positiva, ele envia um sinal de venda.

Esta estratégia faz as seguintes melhorias ao tradicional indicador de vórtice:

  1. Em vez de depender apenas de cruzamentos de linhas, ele introduz o conceito de limiar. As negociações são acionadas apenas quando o spread entre as linhas positivas e negativas excede um limiar pré-definido. Isso ajuda a filtrar cruzamentos pequenos e insignificantes.

  2. As linhas de vórtice são suavizadas com EMA para reduzir os tremores da curva.

  3. As funções de stop loss e take profit são adicionadas.

  4. Os traders podem escolher entre estratégias de longo prazo, curto prazo ou longo/curto prazo para atender a diferentes necessidades.

Com estas melhorias, a estratégia pode detectar tendências de forma mais fiável e apresenta bons resultados em backtests.

Análise das vantagens

  1. O melhorado indicador de vórtice filtra os sinais inválidos e evita falhas de interrupção.

  2. Usar um limiar para sinais em vez de cruzes simples pode detectar pontos de reversão de tendência de forma mais confiável.

  3. As características stop loss/take profit permitem a predefinição de rácios de lucro/perda para controlar os riscos para cada transação, alinhando-se com os princípios de negociação racional.

  4. A escolha entre apenas longo, curto ou longo/curto proporciona flexibilidade para se adaptar a diferentes fases do mercado e atender às necessidades de diferentes operadores.

  5. A estratégia tem parâmetros bem concebidos e bons resultados de backtest, que lhe conferem valor prático.

Análise de riscos

  1. A estratégia funciona principalmente para mercados de tendência.

  2. As linhas de vórtice são inerentemente sensíveis às flutuações de preços.

  3. Se o limiar for definido muito alto, ele pode falhar as negociações. Se for definido muito baixo, ele pode gerar sinais falsos. Extenso teste é necessário para encontrar os níveis ideais.

  4. Os traders precisam estar atentos a este risco.

Orientações de otimização

  1. Considere a combinação com outros indicadores para confirmação do sinal e julgamentos mais abrangentes.

  2. Teste a sensibilidade dos parâmetros em diferentes estoques e otimize as configurações.

  3. Pesquise técnicas de stop loss adaptativas para ajustar paradas ao longo da tendência principal.

  4. Introduzir aprendizado de máquina, etc. para otimizar automaticamente parâmetros.

  5. Explorar métodos de indexação baseados nesta estratégia para aumentar a capacidade.

Conclusão

Esta estratégia faz múltiplas melhorias sobre o tradicional indicador de vórtice e forma um sistema de negociação quantitativo relativamente maduro e confiável. Combinando a filtragem de tendências e o controle de riscos, evita riscos de excesso de faturação de negócios espalhados e utiliza as capacidades de captura de tendências do próprio indicador. Com mais otimização de parâmetros e técnicas de combinação, a estratégia pode ser mais estável e responsiva.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Mais.