Estratégia de acompanhamento de tendências com base na confiança nas tendências


Data de criação: 2023-11-22 15:50:07 última modificação: 2023-11-22 15:50:07
cópia: 0 Cliques: 734
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base na confiança nas tendências

Visão geral

A principal ideia da estratégia é realizar uma estratégia de acompanhamento de tendências o mais precisa possível. Ela julga a probabilidade de continuidade da tendência linear atual por meio do cálculo de um certo número de fechamentos de preços no passado. A estratégia assume que, uma vez que a confiança ultrapassa um determinado nível, a tendência linear em curso é mais provável de continuar.

Princípio da estratégia

A estratégia calcula a correspondência linear de N preços de fechamento anteriores através do método de regressão linear comum, obtendo a inclinação k da correspondência linear e o desvio padrão de diferença σ ∈ σ em relação ao preço de fechamento, definindo então a desconfiança da tendência como k/σ ∈ σ.

Quando a confiança da tendência supera o valor do limiar de entrada de mais do que o valor do limiar de entrada de mais do que o valor do limiar de entrada de mais do que o valor do limiar de entrada de menos do que o valor do limiar de entrada de menos do que o valor do limiar de entrada de menos do que o valor do limiar de entrada de menos do que o valor do limiar de entrada de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de entrada de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de entrada de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do que o valor do limiar de menos do valor do limiar de menos do que o valor do limiar de menos do limiar de menos do valor

Assim, ele pode filtrar os sinais de mudanças de preços selvagens que não seguem uma clara tendência linear.

Análise de vantagens

A estratégia combina o acompanhamento de tendências e métodos de regressão linear da estatística, evitando seguir os movimentos de preços de curto prazo e seguindo apenas as tendências de longo prazo, resultando em uma menor frequência de negociação e uma maior taxa de vitória.

O espaço de ajuste dos parâmetros da estratégia é grande e pode ser aplicado a diferentes variedades e períodos de tempo, para obter uma boa generalização.

Análise de Riscos

A estratégia corre o risco de ser arbitragem. A estratégia pode gerar grandes perdas quando há uma reversão de tendência visível. Além disso, a configuração inadequada dos parâmetros pode levar a overtrading ou perda de boas oportunidades de negociação.

Pode-se configurar o stop loss para controlar o risco de perda. Ao mesmo tempo, deve-se avaliar cuidadosamente a escolha dos parâmetros para evitar a otimização excessiva.

Direção de otimização

A estratégia pode ser melhorada em:

  1. Aumentar a lógica de stop-loss para bloquear lucros e controlar riscos

  2. Adicionar parâmetros para se adaptar ao módulo de otimização, permitindo que os parâmetros sejam ajustados dinamicamente

  3. Aumentar os modelos de aprendizagem de máquina para determinar os pontos de reversão de tendências e aumentar ainda mais a chance de vitória das estratégias

  4. Experimentar adaptabilidade em diferentes variedades e períodos de tempo, aumentando a capacidade de generalização

Resumir

A estratégia é, em geral, uma estratégia quantitativa de controle de risco baseada em tendências de longo prazo. Combina o acompanhamento de tendências e métodos de regressão linear, que filtra os sinais de negociação de ruído. Com o ajuste de parâmetros, ela pode se adaptar bem a diferentes variedades e períodos e é uma estratégia eficaz que vale a pena estudar e melhorar.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © carefulCamel61097

// ################################################################################################

// "This is a trend following strategy that performed very well on the past 5 years"
// "Intended to be used on BTC-USDT, 4hr timeframe"

// "A factor 2 Leverage can be added by changing Order Size to 200% of equity"
// "Higher leverage is not recommended due to big drawdowns"

// "Also seems to work on 1D timeframe, although ideal parameters may be different"
// "Also seems to work on ETH-USDT and some other altcoins, although ideal parameters are different"

// ################################################################################################

//@version=5
strategy("Trend Following based on Trend Confidence", overlay=false )

// Inputs

source      = input(close)

since       = input(timestamp('2000-01-01'), title='Start trading interval')
till        = input(timestamp('2030-01-01'), title='End trading interval')

length      = input(30, title='Length')

longs_on    = input.bool(true, title='Longs')
shorts_on   = input.bool(true, title='Shorts')

// Parameters for best performance 2018 - 2022
// long_entry  = input.float(0.26, step=0.01, title='Long entry threshold')
// long_exit   = input.float(-0.10, step=0.01, title='Long exit threshold')
// short_entry = input.float(-0.24, step=0.01, title='Short entry threshold')
// short_exit  = input.float(-0.04, step=0.01, title='Short exit threshold')

long_entry  = input.float(0.25, step=0.01, title='Long entry threshold')
long_exit   = input.float(-0.10, step=0.01, title='Long exit threshold')
short_entry = input.float(-0.25, step=0.01, title='Short entry threshold')
short_exit  = input.float(-0.05, step=0.01, title='Short exit threshold')

stop_loss   = input.float(10, step=1, title='Stop loss (percentage)') / 100

// Trend Confidence

linreg = ta.linreg(source, length, 0)
linreg_p = ta.linreg(source, length, 0+1)

x = bar_index
slope = linreg - linreg_p
intercept = linreg - x*slope
deviationSum = 0.0
for i = 0 to length-1
    deviationSum := deviationSum + math.pow(source[i]-(slope*(x-i)+intercept), 2)
deviation = math.sqrt(deviationSum/(length))

slope_perc = slope / source[0]
deviation_perc = deviation / source[0]
trend_confidence = slope_perc / deviation_perc

// Strategy

in_interval = true

sl_long = strategy.position_avg_price * (1 - stop_loss)
sl_short = strategy.position_avg_price * (1 + stop_loss)

if in_interval and longs_on and ta.crossover(trend_confidence, long_entry)
    strategy.entry("TC Long Entry", strategy.long)
    strategy.exit("TC Long Exit", stop=sl_long)
if in_interval and longs_on and ta.crossunder(trend_confidence, long_exit)
    strategy.close("TC Long Entry")

if in_interval and shorts_on and ta.crossunder(trend_confidence, short_entry)
    strategy.entry("TC Short Entry", strategy.short)
    strategy.exit("TC Short Exit", stop=sl_short)
if in_interval and shorts_on and ta.crossover(trend_confidence, short_exit)
    strategy.close("TC Short Entry")

// Plots 

plot(trend_confidence, "Trend Confidence", color.rgb(255, 255, 255))

plot(long_entry, "", color.rgb(0, 255, 0), linewidth=1)
plot(long_exit, "", color.rgb(255, 0, 0), linewidth=1)
plot(short_entry, "", color=bar_index % 10 == 0 ? color.rgb(0, 255, 0) : #00000000, linewidth=1)
plot(short_exit, "", color=bar_index % 10 == 0 ? color.rgb(255, 0, 0) : #00000000, linewidth=1)