Estratégia quantitativa de negociação baseada na comparação diária de preços de fechamento

Autora:ChaoZhang, Data: 2023-11-21 14:34:11
Tags:

img

Resumo

Esta estratégia é chamada de Estratégia de Comparação de Preços de Fechamento Diário. É uma estratégia quantitativa de negociação que toma decisões de negociação com base nos preços de fechamento diários. A estratégia gera sinais de negociação calculadamente a diferença entre o preço de fechamento diário atual e o preço de fechamento diário anterior. Quando a diferença excede um limiar definido, as ordens de compra ou venda são executadas.

Estratégia lógica

A lógica central desta estratégia é comparar os preços de fechamento entre o candelabro/barra atual e o anterior.

  1. Calcular a diferença entre o preço de fechamento diário atual e o preço de fechamento diário anterior (hoje - ontem)
  2. Calcular a relação entre a diferença e o preço de fechamento de ontem (diferença / fechamento de ontem)
  3. Se o rácio for superior ao limiar positivo definido, é gerado um sinal de compra; se for inferior ao limiar negativo definido, é gerado um sinal de venda.
  4. Introduzir posições longas ou curtas de acordo com os sinais

A estratégia não estabelece condições de stop loss ou take profit, e baseia-se nos sinais desencadeados pelo limiar para entrada e saída.

Análise das vantagens

  • Lógica simples, fácil de entender, adequada para iniciantes em quant trading
  • Confia apenas nos preços de fechamento diários, evita negociações excessivamente frequentes
  • A frequência de negociação pode ser controlada ajustando o limiar

Análise de riscos

  • Previsão de prejuízo
  • Pode gerar sinais de negociação consecutivos que resultem em excesso de negociação
  • A utilização pode ser grande, não pode controlar bem as perdas globais

Orientações de otimização

  • Adicionar a lógica de stop loss para controlar a perda de uma única negociação
  • Número máximo de entradas para evitar a troca excessiva
  • Otimizar parâmetros para encontrar a frequência de negociação ideal

Conclusão

Esta estratégia gera sinais de negociação comparando preços de fechamento diários. A lógica é simples e adequada para iniciantes aprenderem. Mas contém certos riscos e precisa de mais otimização para negociação ao vivo.


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

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt) correct 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 correct results", type=float, defval=0, step=0.004)

getDiff() =>
    yesterday=request.security(syminfo.tickerid, 'D', close[1])
    today=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.