Estratégia quantitativa de monitoramento de tendências entre ciclos


Data de criação: 2023-12-15 15:59:37 última modificação: 2023-12-15 15:59:37
cópia: 0 Cliques: 600
1
focar em
1621
Seguidores

Estratégia quantitativa de monitoramento de tendências entre ciclos

Visão geral

Esta estratégia utiliza o indicador PSAR para determinar a tendência de preços, o indicador ADX para determinar a tendência de força, o indicador RSI para determinar a zona de sobrevenda e o indicador CMF para determinar o fluxo de capital, para construir uma estratégia de negociação quantitativa de rastreamento de tendências em períodos transversais. Esta estratégia posiciona-se rapidamente quando os preços são avaliados para formar uma nova direção de tendência, e segue continuamente as tendências subsequentes, ao mesmo tempo em que estabelece condições de filtragem para reduzir o risco de posse, garantindo a captação dos principais ganhos da tendência.

Princípio da estratégia

As principais regras de avaliação desta política são as seguintes:

  1. Usar o indicador PSAR para determinar se o preço está em uma tendência ascendente, com a ruptura do PSAR sendo vista como o fim da tendência ascendente e a mudança para a queda;

  2. O RSI exige que o indicador esteja acima da linha média de 50, para filtrar falsas rupturas que formam áreas de oversold;

  3. O ADX exige um valor superior ao seu EMA médio, indicando um sinal de continuidade nos resultados da análise de tendências;

  4. O CMF exige um valor maior do que 0 e é considerado um fluxo de capital;

Um sinal de compra é gerado quando as quatro condições acima são satisfeitas; um sinal de venda é gerado quando o RSI é menor que 50, o ADX é menor que a sua própria linha média EMA e o CMF é menor que 0 quando o PSAR é atingido.

A estratégia leva em consideração a direção da tendência de preços, a intensidade da tendência, o estado de sobrecompra e sobrevenda e o fluxo de capital em várias dimensões para definir as regras de negociação, estabelecendo um julgamento lógico rigoroso para determinar a geração de sinais de negociação, filtrando efetivamente as brechas falsas e garantindo a captura de uma direção de tendência com alta probabilidade de sustentabilidade.

Análise de vantagens

As principais vantagens desta estratégia são:

  1. A combinação de várias regras de negociação de configuração de indicadores pode ser eficaz na prevenção de brechas falsas e garantir a qualidade dos sinais de negociação;

  2. Identificar rapidamente as tendências emergentes e acompanhá-las para aproveitar os benefícios do processo de tendências;

  3. A configuração de processos de rastreamento de condições de filtragem permite controlar os riscos de forma eficaz e garantir a eficácia do rastreamento;

  4. A combinação de um indicador de intensidade de tendência com um critério de correção de tendência pode evitar uma crise de correção.

Análise de Riscos

Os principais riscos desta estratégia são:

  1. Uma única estratégia é propensa a acumular riscos e requer um ajuste apropriado da posição para controlar o risco global;

  2. O processo de acompanhamento requer uma atenção especial às mudanças nas condições de filtragem para evitar o corte de perda após a cancelamento das condições.

  3. Esta estratégia é baseada em linhas médias e longas, e o conteúdo de curto prazo é vulnerável a efeitos de flutuação, gerando um risco de parada.

As medidas de gerenciamento de risco correspondentes incluem: otimização das regras de gerenciamento de posições, configuração de linhas de alerta de risco, distância adequada da linha de parada de perda, etc.

Direção de otimização

A estratégia tem o seguinte espaço para otimização:

  1. Optimizar a configuração de parâmetros, atualmente, a configuração de parâmetros é mais subjetiva e pode ser introduzida para otimização automática de métodos de aprendizado de máquina;

  2. A adição de um módulo de gerenciamento de posições que permite ajustar posições de forma dinâmica de acordo com a situação de risco;

  3. Aumentar a otimização de mecanismos de parada, como parada de rastreamento, parada de tempo, parada de ruptura, etc.

Resumir

Esta estratégia integra várias regras de avaliação de indicadores, permite a localização rápida e o acompanhamento contínuo de tendências emergentes, e verifica a eficácia da análise multidimensional de transações quantitativas combinadas com tendências e fundos. A estratégia pode ser usada como uma estratégia de base para o acompanhamento de tendências inter-periódicas em termos de índices, ou pode ser construída como uma estratégia de quantificação linear de médio e médio prazo, depois de otimizar os parâmetros e os módulos.

Código-fonte da estratégia
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )

start = input(1.02)
increment = input(1.02)
maximum = input(1.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

//rsi strat
length = input( 50 )
middle_RSI=input(49)
price = close
vrsi = rsi(price, length)

//cmf
lengthCMF = input(20, minval=1)
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthCMF) / sum(volume, lengthCMF)

//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
ema_length=input(10)
ema_sig= ema(sig,ema_length)


long = not uptrend  and vrsi > middle_RSI and sig > ema_sig   and mf>0 
short= uptrend   and vrsi < middle_RSI and sig<ema_sig and mf<0

strategy.entry("long",1,when=long)
strategy.close('long',when=short)