Esta estratégia é chamada de
O indicador central desta estratégia é o Índice de Força Verdadeira (ITS).
ETI = 100 * (PC1/PC2)
onde PC1 e PC2 são as médias móveis exponenciais duplas da taxa de variação de preços e o valor absoluto da taxa de variação de preços, respectivamente. A média móvel exponencial dupla é calculada aplicando primeiro uma média móvel exponencial com um comprimento à taxa de variação de preços e, em seguida, aplicando outra média móvel exponencial mais curta à média móvel obtida. Esta suavização dupla pode eliminar melhor a aleatoriedade na taxa de variação de preços e melhorar a estabilidade do indicador TSI.
Após o cálculo do valor da ETI, a estratégia também calcula uma linha de sinal para o valor da ETI. A linha de sinal é definida como uma média móvel exponencial do valor da ETI durante um determinado período. Na negociação real, a estratégia julga as tendências do mercado e gera sinais de negociação observando a relação entre o valor da ETI e sua linha de sinal. Quando o valor da ETI cruza acima da linha de sinal, é um sinal de compra. Quando o valor da ETI cruza abaixo da linha de sinal, é um sinal de venda.
Outra característica desta estratégia é que o tamanho do comércio é ajustado dinamicamente. O código de estratégia define um capital inicial e uma taxa de exposição ao risco como parâmetros de entrada. Estes dois parâmetros se combinam com o preço atual do estoque para calcular dinamicamente o número de contratos negociados ou exposição ao risco. Isso pode controlar melhor o risco geral de toda a estratégia.
A estratégia de negociação dinâmica de média móvel exponencial dupla tem várias vantagens:
Utiliza o indicador da ETI que aplica uma suavização exponencial dupla, tornando-o menos sensível ao ruído do mercado e capaz de gerar sinais mais precisos.
Baseia-se no princípio comprovado de cruzamento de um indicador e sua linha de sinal para gerar sinais de negociação.
A estratégia ajusta dinamicamente o tamanho da posição com base no orçamento de risco.
Funciona em prazos diários e semanais, adequado tanto para negociação swing quanto para negociação posicional.
É fácil de implementar em bots e outros sistemas de negociação devido à lógica de entrada/saída simples.
Não há muitos parâmetros para ajustar, tornando o sistema fácil de otimizar.
Estas vantagens combinadas tornam-na uma estratégia de negociação robusta e versátil para os comerciantes de ações.
Embora a estratégia de negociação de média móvel exponencial dupla dinâmica tenha muitas vantagens, também tem alguns riscos inerentes como a maioria das estratégias de ações:
Uma vez que a ETI e a linha de sinalização são baseadas em dados históricos de preços, existe sempre o risco de sinais incorretos, especialmente em condições de mercado voláteis.
Podem ocorrer perturbações se o mercado oscilar em torno da linha zero do indicador da ETI, o que pode resultar em perdas.
Grandes movimentos de gap podem resultar no fechamento da estratégia com prejuízo, uma vez que não foi capaz de sair a tempo.
Se o mercado prosseguir numa tendência forte, a ETI pode inverter prematuramente a tendência, resultando em perdas de lucros.
Devido ao efeito de alavancagem, são possíveis perdas superiores ao limite fixado pelos parâmetros de risco.
Estes riscos podem, no entanto, ser mitigados por aspectos como dimensionamento de posição, stop loss e outras técnicas de gestão de risco.
Algumas ideias para otimizar esta estratégia incluem:
Testar diferentes combinações de parâmetros de suavização dupla para encontrar a combinação que gera os sinais de negociação mais precisos.
Adicionar filtros com base na volatilidade, no volume de negociação ou em outros indicadores para reduzir os sinais de negociação desnecessários.
Incorporar uma lógica de stop loss, por exemplo, parar quando o valor da TSI cruza a linha zero, reduzindo as perdas desnecessárias.
Avaliação do desempenho de diferentes instrumentos de negociação, como índices, commodities, etc., no âmbito desta estratégia.
Filtragem seletiva dos instrumentos de negociação, por exemplo, avaliar as métricas de liquidez e volatilidade dos instrumentos e selecionar os que apresentem parâmetros mais elevados.
Usando métodos de aprendizagem de máquina, como a análise walk-forward, para selecionar combinações ideais de parâmetros.
Empregar vários conjuntos de parâmetros baseados em diferentes regimes de mercado e alternar dinamicamente entre eles.
Ao testar e otimizar os vários aspectos acima referidos, existe o potencial de melhorar ainda mais a estabilidade e a rentabilidade desta estratégia.
Em resumo, esta estratégia aproveita as propriedades de suavização exponencial dupla do indicador TSI para projetar uma estratégia de negociação de ações relativamente estável e confiável. Ao ajustar dinamicamente os tamanhos das posições, o nível geral de risco pode ser efetivamente controlado.
Naturalmente, como a maioria das estratégias quantitativas de negociação, esta estratégia também tem algumas limitações, refletidas principalmente em ser propensa aos efeitos de flutuações drásticas do mercado.
/*backtest start: 2024-01-06 00:00:00 end: 2024-02-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © shankardey7310 //@version=5 strategy("TSI STOCKS", shorttitle="TSI", overlay=true) initialCapital = input(10000, title="Initial Capital") riskPercent = input(1, title="Risk Percentage") / 100 longLength = input(12, title="Long Length") shortLength = input(9, title="Short Length") signalLength = input(12, title="Signal Length") price = close pc = ta.change(price) double_smooth(src, long, short) => first_smooth = ta.ema(src, long) ta.ema(first_smooth, short) double_smoothed_pc = double_smooth(pc, longLength, shortLength) double_smoothed_abs_pc = double_smooth(math.abs(pc), longLength, shortLength) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) tsi_signal = ta.ema(tsi_value, signalLength) riskAmount = (initialCapital * riskPercent) / close if (tsi_value > tsi_signal and tsi_value[1] <= tsi_signal[1]) strategy.entry("Long", strategy.long) if (tsi_value < tsi_signal and tsi_value[1] >= tsi_signal[1]) strategy.close("Long") plot(tsi_value, title="True Strength Index", color=#2962FF) plot(tsi_signal, title="Signal", color=#E91E63) hline(0, title="Zero", color=#787B86)