Estrategia de seguimiento de tendencias basada en la confianza en la tendencia


Fecha de creación: 2023-11-22 15:50:07 Última modificación: 2023-11-22 15:50:07
Copiar: 0 Número de Visitas: 734
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en la confianza en la tendencia

Descripción general

La idea principal de la estrategia es lograr una estrategia de seguimiento de tendencias lo más precisa posible. Se trata de una estrategia que determina la probabilidad de que la tendencia lineal actual continúe calculando el nivel de confianza de un cierto número de precios de cierre en el pasado. La estrategia asume que una vez que la confianza supera un cierto nivel, la tendencia lineal en curso tiene más probabilidades de continuar.

Principio de estrategia

La estrategia calcula la concordancia lineal de los últimos N precios de cierre mediante el método de regresión lineal ordinaria, obteniendo la inclinación k de la concordancia lineal y la diferencia estándar de la diferencia con el precio de cierre σ. Luego define la incertidumbre de tendencia como k/σ.

Cuando la confianza de la tendencia supera el umbral de entrada de la plusvalía, se hace más; cuando cae a la plusvalía de la plusvalía de la plusvalía de la plusvalía, se hace más baja. Del mismo modo, cuando la confianza de la tendencia es inferior al umbral de entrada de la plusvalía, se hace más baja; cuando supera el umbral de la plusvalía de la plusvalía de la plusvalía, se hace más baja.

De este modo, se puede filtrar las señales de movimientos de precios salvajes que no siguen una tendencia claramente lineal.

Análisis de las ventajas

Esta estrategia combina el seguimiento de tendencias y los métodos de regresión lineal en estadística, evitando seguir las fluctuaciones de precios a corto plazo y siguiendo solo las tendencias a largo plazo, lo que genera una menor frecuencia de negociación y una mayor tasa de ganancias.

La estrategia tiene un gran espacio para ajustar los parámetros, lo que permite una buena generalización al adaptar los parámetros a diferentes variedades y períodos de tiempo.

Análisis de riesgos

La estrategia corre el riesgo de ser arbitraje. La estrategia puede generar grandes pérdidas cuando hay una reversión de tendencia evidente. Además, la configuración incorrecta de los parámetros puede causar sobreventajas o perder buenas oportunidades de negociación.

Se puede establecer un stop loss para controlar el riesgo de pérdidas. Al mismo tiempo, se debe evaluar cuidadosamente la elección de los parámetros para evitar la optimización excesiva.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar la lógica de stop loss para bloquear las ganancias y controlar el riesgo

  2. Aumentar los parámetros para adaptarse a los módulos de optimización, lo que permite que los parámetros se ajusten dinámicamente

  3. Aumentar los modelos de aprendizaje automático para determinar los puntos de inflexión de tendencias y mejorar aún más las probabilidades de éxito de las estrategias

  4. Experimentar con diferentes variedades, adaptarse a diferentes períodos de tiempo y mejorar la generalización

Resumir

La estrategia en general es una estrategia cuantitativa de control de riesgos basada en tendencias a largo plazo. Combina el seguimiento de tendencias y el método de regresión lineal, que puede filtrar las señales de negociación de ruido. A través de la regulación de los parámetros, se puede adaptar muy bien a diferentes variedades y períodos, es una estrategia eficaz que vale la pena estudiar y mejorar.

Código Fuente de la Estrategia
/*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)