
Esta estratégia é uma versão aprimorada da estratégia do indicador de turnos, baseada no indicador de turnos original, com a adição de várias novas funções, incluindo o disparo de sinais de compra e venda com base no valor de queda, o uso de linhas de turnos suaves EMA, a adição de um stop loss, a realização de apenas fazer mais, apenas fazer menos ou negociação bidirecional, etc. Esta estratégia é adequada para investidores que desejam usar o indicador de turnos aprimorado para negociar quantificadamente.
O indicador central da estratégia é o indicador de turnos da versão melhorada. Os indicadores de turnos tradicionais formam uma linha de turnos positivo-negativo através da soma dos valores absolutos das flutuações de preços. Quando a linha de turnos positivo atravessa a linha de turnos negativo, é um sinal de compra; Quando a linha de turnos negativo atravessa a linha de turnos positiva, é um sinal de venda.
A estratégia é uma atualização dos indicadores tradicionais de rotação:
O mercado de ações não é mais julgado apenas com base no cruzamento de linhas de engrenagem, mas com a introdução do conceito de depreciação. O mercado de ações é acionado somente quando a diferença entre linhas de engrenagem positivas e negativas excede o depreciado. Isso pode filtrar alguns sinais de cruzamento de pequena magnitude que não são válidos.
A linha de engrenagem é suavizada por EMA para reduzir a oscilação da curva.
A adição de um parâmetro de parada de perda permite a predefinição da taxa de ganhos e perdas e um controle mais preciso do risco.
Pode-se optar por fazer apenas mais, apenas menos ou de duas maneiras, para atender a diferentes necessidades.
Com base nessas melhorias, a estratégia pode capturar tendências de forma mais confiável, e tem um bom desempenho em feedback.
Os indicadores de engrenagem melhorados eliminam os sinais inválidos, evitando efetivamente a falsa ruptura. O tratamento de suavização do EMA também ajuda a eliminar o ruído.
O uso de um sinal de venda ou compra, em vez de um simples cruzamento, pode ser usado para determinar o ponto de reversão da tendência de forma mais confiável.
Adição de um Stop Loss Stop function, que permite a predefinição de uma relação de ganhos e perdas para controlar o risco de uma única transação, de acordo com o princípio de negociação racional.
A opção de apenas fazer mais, apenas fazer menos ou em ambos os lados, pode ser flexível para adaptar-se a diferentes fases do mercado, para atender às necessidades de diferentes comerciantes.
Os parâmetros da estratégia foram concebidos de forma razoável, apresentam um bom desempenho de retrospectiva e têm valor de aplicação prática.
A estratégia é aplicada principalmente em situações de tendência, que podem afetar o desempenho no mercado de liquidação.
A linha de engrenagem é muito sensível às flutuações das ações, e a configuração inadequada dos parâmetros pode levar a transações muito frequentes.
Um limite muito alto pode fazer com que você perca o ponto de compra ou venda, um limite muito baixo pode aumentar o número de falsos sinais, e você precisa testar cuidadosamente para encontrar o melhor parâmetro.
A partir de agora, os investidores devem estar atentos ao risco de quebrar o seu stop loss em situações de mercado anormais.
Pode-se considerar a combinação com outros indicadores para introduzir mais fatores de julgamento ao determinar o sinal.
É possível testar a sensibilidade de diferentes ações aos parâmetros e otimizar a configuração dos parâmetros.
Pode-se estudar técnicas de parada de perda adaptativas, ajustando o ponto de parada com o preço em grandes tendências.
Pode-se introduzir técnicas como aprendizado de máquina, treinamento de modelos para otimizar automaticamente os parâmetros.
A exploração de métodos de indexação baseados na estratégia pode ampliar a capacidade da estratégia.
Esta estratégia tem várias melhorias na base do tradicional indicador de turnos, formando um programa de negociação quantitativa mais confiável e maduro. Combina os benefícios do discernimento de tendências e controle de risco, evitando o risco de superação de negociações esporádicas e aproveitando a capacidade de captura de tendências do próprio indicador.
/*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)