CT TTM Estratégia de negociação quantitativa baseada em compressão

Autora:ChaoZhang, Data: 2023-11-15 16:06:37
Tags:

img

Resumo

Esta estratégia utiliza o indicador CT TTM Squeeze para identificar tendências de preços e aplica trailing stops para controlar riscos.

Estratégia lógica

A estratégia utiliza o indicador CT TTM Squeeze para determinar as tendências de preços.

  • e1 - ponto médio da faixa média
  • osc - oscilador calculado a partir da diferença entre o preço de fechamento e e1 durante um período regressado linearmente
  • diferença entre as bandas de Bollinger e os canais de Keltner
  • osc_color - designar cores do oscilador
  • mid_color - designar cores diferentes

Se osc cruzar acima de 0, é exibido em verde, indicando longo; se osc cruzar abaixo de 0, é exibido em vermelho, indicando curto.

Quando osc é positivo, vai longo; quando osc é negativo, vai curto.

A estratégia usa o oscilador osc para determinar a direção da tendência e dif para medir o momento longo/curto. Quando osc cruza acima de 0, ele sinaliza uma tendência de alta, assim indo longo. Quando osc cruza abaixo de 0, ele sinaliza uma tendência de queda, assim indo curto.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Usando CT TTM Squeeze para determinar tendências tem uma precisão relativamente alta. CT TTM Squeeze considera abrangentemente médias móveis, Bandas de Bollinger e canais de Keltner, que podem identificar efetivamente as tendências de preços.

  2. A aplicação do oscilador para determinar sinais longos/cortos evita sinais falsos em zonas não-trend.

  3. A estratégia define stop loss oportunamente após a entrada, o que permite bloquear os lucros e evitar perdas excessivas.

  4. A estratégia tem poucos parâmetros e é fácil de otimizar.

  5. As funções de gráfico exibem claramente os sinais. Diferentes cores são usadas para distinguir sinais longos/cortos e força, apresentando visualmente julgamentos de tendência.

Análise de riscos

A estratégia apresenta igualmente os seguintes riscos:

  1. O CT TTM Squeeze pode gerar sinais falsos em certas condições de mercado, levando a perdas de negociação.

  2. A divergência no oscilador pode resultar em sinais de negociação errados. Os sinais podem ser incorretos quando os preços foram invertidos, mas o oscilador não girou.

  3. As flutuações normais podem desencadear a parada de atraso e forçar a saída se o nível de parada for definido muito perto.

  4. A estratégia é adequada apenas para produtos com tendências fortes, não para mercados de intervalo, dado que trata principalmente de tendências, o desempenho é fraco em mercados de consolidação agitados.

  5. A otimização excessiva pode levar ao ajuste da curva.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Combine vários indicadores para precisão do sinal. Outros indicadores como MACD, KDJ podem ser adicionados para otimizar os sinais de entrada.

  2. Adicionar módulos de otimização de stop loss para paradas mais inteligentes.

  3. Otimizar a gestão do dinheiro através do teste de frações fixas, fórmula Kelly, etc. Isto pode melhorar a eficiência do uso do capital, garantindo o risco por comércio.

  4. A adaptação dos parâmetros com base nas características do produto pode melhorar a adequação da estratégia.

  5. Adicionar algoritmos de aprendizagem de máquina para aprendizagem adaptativa.

Conclusão

Esta estratégia usa CT TTM Squeeze para determinar a direção da tendência, oscilador cruzando 0 como sinais de entrada, e trailing paradas para gerenciar riscos. Suas vantagens estão em alta precisão, otimização fácil, mas existem riscos como falha do indicador, paradas muito apertadas. Melhorias futuras podem ser feitas através de combinações de múltiplos indicadores, otimização de parada, gerenciamento de dinheiro etc. para melhorar ainda mais o desempenho.


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

//@version=2
strategy("CT TTM Squeeze") 
length = input(title="Length",  defval=20, minval=0) 
bband(length, mult) =>
	sma(close, length) + mult * stdev(close, length)
keltner(length, mult) =>
	ema(close, length) + mult * ema(tr, length)
	
	
// Variables
e1 = (highest(high, length) + lowest(low, length)) / 2 + sma(close, length)
osc = linreg(close - e1 / 2, length, 0)
diff = bband(length, 2) - keltner(length, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? green : red

// Strategy

long = osc > 0
short = osc < 0

if long
    strategy.entry("Long", strategy.long)

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


plot(osc, color=osc_color, style=histogram, linewidth=2)
plot(0, color=mid_color, style=circles, linewidth=3)


Mais.