Estratégia de negociação de ciclo de dois fatores

Autora:ChaoZhang, Data: 2023-12-05 17:56:27
Tags:

img

Resumo

A estratégia de negociação de ciclo de dois fatores é uma estratégia de negociação quantitativa.

A vantagem desta estratégia é que ela pode encontrar oportunidades de negociação combinando diferentes fatores e a confirmação dupla pode melhorar a confiabilidade do sinal e reduzir a probabilidade de negociações erradas. Ao mesmo tempo, a estratégia aproveita ao máximo o ciclo de negociação, ou seja, posições de stop loss e reverse de abertura oportunas, que podem controlar efetivamente os riscos.

Princípios de estratégia

A estratégia consiste em duas partes:

  1. 123 Estratégia de reversão Esta estratégia vem do livro How I Tripled My Money in the Futures Market de Ulf Jensen. Sua lógica de negociação é: quando o preço de fechamento é superior ao preço de fechamento anterior por dois dias consecutivos, e a linha lenta K de 9 dias é inferior a 50, vá longo; quando o preço de fechamento é inferior ao preço de fechamento anterior por dois dias consecutivos, e a linha rápida K de 9 dias é superior a 50, vá curto.

  2. Estratégia de apoio/resistência
    Esta estratégia gera sinais julgando se os preços atravessam os principais níveis de suporte ou resistência. Quando o preço atravessa o preço mais alto do dia de negociação anterior, indica um sinal de alta; quando o preço quebra abaixo do preço mais baixo do dia de negociação anterior, indica um sinal de baixa.

Ao combinar os sinais das duas estratégias acima, posições abertas quando ambos os sinais são consistentes, posições de outra forma claras.

Análise das vantagens

Esta estratégia de negociação de ciclo de dois fatores tem as seguintes vantagens:

  1. O projeto multifator garante uma alta confiabilidade do sinal. A estratégia de reversão 123 e a estratégia de suporte/resistência verificam-se mutuamente e podem reduzir os sinais errôneos.

  2. O mecanismo de ciclo permite à estratégia adaptar-se às alterações do mercado e controlar eficazmente as perdas unilaterais.

  3. O uso do indicador Stochastics de 9 dias pode filtrar o ruído do mercado e fazer sinais mais claros.

  4. É menos arriscado do que as estratégias de um único fator e tem reduções menores.

Análise de riscos

Esta estratégia comporta também alguns riscos:

  1. É difícil capturar as tendências bem nos mercados laterais, e freqüentes perdas de parada e aberturas reversas aumentarão os custos de transação.

  2. As configurações de parâmetros do Estocástico afetarão a qualidade do sinal. Parâmetros inadequados podem levar ao deslocamento do sinal e degradação da qualidade. Parâmetros precisam ser repetidamente testados e otimizados.

  3. Embora o projeto de dois fatores melhore a qualidade do sinal, ele também aumenta o impacto do "ruído" do mercado na estratégia.

Orientações de otimização

Podemos optimizar ainda mais esta estratégia a partir dos seguintes aspectos:

  1. Estocásticos de ensaio de diferentes comprimentos de ciclo para encontrar a combinação ideal de parâmetros para eliminar o ruído do mercado

  2. Adicionar um filtro de tendência para filtrar mercados laterais e apenas posições abertas em tendências claras

  3. Otimizar o algoritmo de configuração da linha de stop loss para reduzir os custos de transação, garantindo ao mesmo tempo um stop loss eficaz

  4. Teste diferentes combinações de fatores para encontrar combinações de fatores com sinais comerciais mais claros e estratégias mais estáveis

Resumo

Através do design de dois fatores, esta estratégia obteve uma maior qualidade de sinal e retornos ajustados ao risco. Ao mesmo tempo, o uso de negociação de ciclo controla efetivamente as perdas no mercado unilateral. A estratégia alcançou um bom equilíbrio entre risco e retorno. Ainda é necessária mais pesquisa aprofundada sobre otimização de parâmetros, configurações de controle de risco, etc. para alcançar um melhor desempenho da estratégia.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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 )

Mais.