Estratégia de negociação quantitativa de fator duplo


Data de criação: 2023-12-07 15:11:37 última modificação: 2023-12-07 15:11:37
cópia: 0 Cliques: 609
1
focar em
1619
Seguidores

Estratégia de negociação quantitativa de fator duplo

Visão geral

Esta estratégia combina os dois fatores 123 reversão e oscilação de massa, permitindo a negociação de quantidade impulsionada por dois fatores. A estratégia capta oportunidades de reversão de curto prazo, mas também pode identificar tendências de longo prazo, permitindo o excesso de retorno de baixo risco.

Princípio da estratégia

A primeira parte é a estratégia de inversão 123. A estratégia usa a característica de inversão do preço de fechamento em 2 dias para determinar pontos de venda e venda. Quando o preço de fechamento sobe 2 dias consecutivos e a linha K lenta é inferior a 50, considera-se uma correção injusta e gera um ponto de compra; Quando o preço de fechamento cai 2 dias consecutivos e a linha K rápida é superior a 50, considera-se um rebote e gera um ponto de venda.

A segunda parte é uma estratégia de indicador de oscilação de números positivos. O indicador calcula o número positivo mais próximo do preço atual dentro de um intervalo de preços especificado e produz o diferencial com o preço atual. Um valor positivo indica que o preço atual está próximo do limite superior do número positivo e um valor negativo indica que o preço atual está próximo do limite inferior do número positivo.

O princípio da combinação de sinais de negociação de duas estratégias secundárias é: em caso de sinal de equilíbrio, o sinal de negociação real é gerado, em caso de sinal de equilíbrio, a posição não é aberta.

Análise de vantagens

A estratégia combina um duplo fator, considerando tanto o efeito de reversão de curto prazo quanto as características de tendência de longo prazo, avaliando o mercado de várias perspectivas e aumentando a capacidade de resistência ao risco da estratégia.

Em comparação com a estratégia de momentum único, esta estratégia pode usar o fator de reversão para parar ou reverter a posição no momento em que um evento inesperado cause um salto de curto prazo no preço, controlando efetivamente o risco intraday.

Em comparação com uma única estratégia de reversão, esta estratégia introduz um indicador de oscilação de números primos para determinar a direção da tendência, evitando que as trocas de reversão frequentes causem overtrading.

Análise de Riscos

O maior risco da estratégia é a existência de um conflito de sinais entre os dois fatores. Quando a inversão de 123 mostra sinais de sobrecompra e sobrevenda, gerando um sinal de reversão, enquanto o indicador de oscilação de números positivos mostra que ainda está em tendência, uma negociação de reversão direta pode causar perdas.

Para controlar esse risco, a estratégia adiciona uma lógica de julgamento adicional, que só produz um sinal de negociação real quando os dois sinais de fatores estão em sincronia. No entanto, isso também pode perder algumas oportunidades de negociação.

Direção de otimização

  1. Optimizar os parâmetros do indicador estocástico para encontrar a combinação de parâmetros de inversão mais adequada para o parâmetro específico

  2. Optimizar os parâmetros de percentual de diferença de capacidade dos indicadores de vibração qualitativa, reduzindo a transação de ruído

  3. Aumentar as estratégias de suspensão de prejuízos para evitar a expansão dos prejuízos unilaterais

  4. Adição de módulos de gestão de posições para ajustar as posições em diferentes cenários de mercado

  5. Adição de um modelo de aprendizagem de máquina para avaliar a confiabilidade do sinal de dois fatores, reduzindo a probabilidade de conflito de sinais

Resumir

Esta estratégia combina com sucesso os fatores de reversão de curto prazo com os fatores de tendência de longo prazo, permitindo negociações quantitativas de baixo risco. Usar eficazmente o fator duplo de filtragem de ruído de negociação e definir um risco de controle de lógica de julgamento adicional é uma estratégia de batalha real de ganhos estáveis. A seguir, a otimização de parâmetros e a expansão de funcionalidades continuarão para adaptar a estratégia às características do mercado real.

Código-fonte da estratégia
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/04/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Determining market trends has become a science even though a high number or people 
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors 
// have worked together in developing quite several indicators to help them better understand 
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the 
// nearest prime number, be it at the top or the bottom of the series, and outlines the 
// difference between that prime number and the respective series.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

PrimeNumberOscillator(price, percent) =>
    res = 0.0
    res1 = 0.0
    res2 = 0.0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res1 - price < price - res2,  res1 - price, res2 - price)
    res := iff(res == 0, res[1], res)
    res
    
PNO(percent) =>
    pos = 0.0
    xPNO = PrimeNumberOscillator(close, percent)
    pos:= iff(xPNO > 0, 1,
           iff(xPNO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Prime Number Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Oscillator ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNO = PNO(percent)
pos = iff(posReversal123 == 1 and posPNO == 1 , 1,
	   iff(posReversal123 == -1 and posPNO == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )