Estratégia de negociação de curto prazo baseada na diferença de preço de encerramento

Autora:ChaoZhang, Data: 28 de setembro de 2023
Tags:

Resumo

Esta estratégia julga o movimento futuro dos preços analisando a diferença entre os preços de fechamento de dois dias consecutivos, com o objetivo de implementar negociações de curto prazo.

Estratégia lógica

A lógica central desta estratégia consiste em comparar o preço de encerramento de hoje com o preço de encerramento de ontem.

  1. Calcule a diferença entre o preço de encerramento de hoje e o preço de encerramento de ontem.
  2. Se a diferença for maior do que o limiar estabelecido, então o preço de hoje aumentou em relação ao de ontem.
  3. Se a diferença for inferior ao limiar negativo estabelecido, então o preço de hoje caiu em relação ao de ontem, vá curto.
  4. Caso contrário, mantenha a posição de ontem.

A chave aqui é definir um limiar razoável. Se o limiar for muito grande, ele perderá flutuações de preços menores. Se o limiar for muito pequeno, ele desencadeará negociações irracionais excessivas devido a flutuações normais. A estratégia adota um design de limiar ajustável com um valor padrão de 0,004 e um passo de 0,001. Os limiares apropriados podem ser selecionados por meio de backtesting com base em dados históricos.

Em resumo, esta estratégia captura mudanças de preço entre dois dias de negociação consecutivos, julga possíveis tendências de preços futuras filtrando flutuações normais através de limiares e, assim, realiza negociações de curto prazo.

Vantagens da estratégia

  • Ideia simples e intuitiva, fácil de compreender e implementar
  • Ausência de indicadores técnicos complexos, baixo limiar de experiência
  • Usar o preço de fechamento, filtrar eficazmente o ruído, aumentar a estabilidade do sinal
  • O projeto de limiar ajustável permite encontrar o parâmetro ideal
  • Adequado para negociação a curto prazo, captura rapidamente as mudanças de preço
  • Pode funcionar em vários ambientes de mercado

Riscos da Estratégia

  • Probabilidade de diferença de preço no preço de fechamento, pode perder alterações de preço
  • Confiar num único indicador, pode perder outras informações importantes
  • A definição incorreta de um limiar gerará sinais de negociação falsos excessivos
  • Operações de curto prazo frequentes, os custos de transacção podem ser mais elevados
  • Necessidade de acompanhamento minucioso e ajuste oportuno dos parâmetros

Para combater estes riscos, considere:

  1. Combinar outros indicadores, como o volume de negociação, para melhorar a precisão do sinal
  2. Adicionar a lógica de stop loss para controlar a perda única
  3. Otimizar parâmetros para melhorar a qualidade do sinal
  4. Prolongar adequadamente o ciclo de negociação para reduzir a frequência de operação
  5. Aumentar a gestão de posições para melhorar a rentabilidade

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Backtesting de vários prazos- Utilize diferentes prazos (diários, de 4 horas, de 1 hora, etc.) para testar os parâmetros e selecionar o prazo e os parâmetros ideais.

  2. Indicadores de volatilidade combinados- Adicionar indicadores que tenham em conta a volatilidade dos preços, como o ATR, para melhor estabelecer limiares dinâmicos.

  3. Adicionar lógica de stop loss- Definir pontos razoáveis de stop loss para controlar perdas individuais.

  4. Otimizar a gestão de posições- Otimizar o tamanho das posições iniciais e regras adicionais para aumentar a rentabilidade, garantindo simultaneamente o stop loss.

  5. Considere os custos de negociação- Adicionar custos de negociação como comissões e deslizamento no backtesting para estar mais perto de negociação ao vivo.

  6. Introduzir o aprendizado de máquina- Aplicar algoritmos de aprendizagem de máquina para extrair mais recursos e construir sinais de negociação mais fortes.

Conclusão

Esta estratégia julga as tendências de preços futuras com base nas diferenças de preço de fechamento, usando uma abordagem simples e intuitiva para projetar estratégias de negociação de curto prazo. A estratégia é fácil de implementar e adequada para operações de curto prazo, mas pode ter alguns riscos de perda. Vários métodos de otimização podem melhorar a estabilidade e lucratividade da estratégia.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt) repainting results", shorttitle="CA_-_Daily_Close_Strat", overlay=false)

// ChartArt's Daily Close Comparison Strategy
//
// Version 1.0
// Idea by ChartArt on February 28, 2016.
//
// This strategy is equal to the very
// popular "ANN Strategy" coded by sirolf2009,
// but without the Artificial Neural Network (ANN).
//
// Main difference besides stripping out the ANN
// is that I use close prices instead of OHLC4 prices.
// And the default threshold is set to 0 instead of 0.0014
// with a step of 0.001 instead of 0.0001.
//
// This strategy goes long if the close of the current day
// is larger than the close price of the last day.
// If the inverse logic is true, the strategy
// goes short (last close larger current close).
//
// This simple strategy does not have any
// stop loss or take profit money management logic.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 

threshold = input(title="Price Difference Threshold repainting results", type=float, defval=0.004, step=0.001)

getDiff() =>
    yesterday=security(syminfo.tickerid, 'D', close[1])
    today=security(syminfo.tickerid, 'D', close)
    delta=today-yesterday
    percentage=delta/yesterday
    
closeDiff = getDiff()
 
buying = closeDiff > threshold ? true : closeDiff < -threshold ? false : buying[1]

hline(0, title="zero line")

bgcolor(buying ? green : red, transp=25)
plot(closeDiff, color=silver, style=area, transp=75)
plot(closeDiff, color=aqua, title="prediction")

longCondition = buying
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = buying != true
if (shortCondition)
    strategy.entry("Short", strategy.short)

Mais.