Basado en una estrategia de seguimiento de tendencias en múltiples marcos temporales


Fecha de creación: 2024-02-19 11:13:22 Última modificación: 2024-02-19 11:13:22
Copiar: 1 Número de Visitas: 545
1
Seguir
1617
Seguidores

Basado en una estrategia de seguimiento de tendencias en múltiples marcos temporales

Descripción general

La estrategia es una estrategia de seguimiento de tendencias que utiliza el consentimiento de indicadores de varios marcos de tiempo. Se abre una posición a la hora de subir o bajar al mismo tiempo en la línea de sol, la línea de 10, la línea de 15 y la línea de 30 días, y se detiene con un método de parada dinámica.

Principio de estrategia

La estrategia utiliza cuatro marcos de tiempo: el día, el 10, el 15 y el 30 para determinar la dirección de la tendencia. Se considera un pronóstico positivo cuando el precio de cierre de los cuatro marcos de tiempo es superior al precio de apertura y un pronóstico negativo cuando el precio de cierre de los cuatro marcos de tiempo es inferior al precio de apertura.

Cuando se juzgue que es positivo, haga una entrada adicional; Cuando se juzgue que es negativo, haga una entrada de descubierto. Después de la entrada, use el canal KC para detener el daño dinámico.

En concreto, la estrategia determina la dirección de la tendencia comparando los precios de apertura y cierre en diferentes marcos de tiempo. Si el precio de apertura es inferior al precio de cierre, el marco de tiempo es positivo, en verde. Si el precio de apertura es superior al precio de cierre, el marco de tiempo es negativo, en rojo.

Cuando los cuatro marcos de tiempo son bajistas, la estrategia abre más posiciones; cuando los cuatro marcos de tiempo son bajistas, la estrategia abre más posiciones para cerrar. Las condiciones de posición baja se detienen o la tendencia se invierte.

Ventajas estratégicas

  1. El uso de varios marcos de tiempo para juzgar la tendencia puede filtrar eficazmente las brechas falsas y determinar la dirección de la tendencia.

  2. El método de deterioro dinámico protege al máximo los fondos

  3. Las condiciones de ingreso son estrictas, lo que reduce las transacciones innecesarias y evita costos excesivos de puntos de deslizamiento.

  4. La combinación de varios marcos de tiempo equilibra la velocidad y la estabilidad de la ganancia

Riesgo estratégico

  1. Las condiciones de ingreso son muy estrictas y pueden perderse algunas oportunidades.

  2. La configuración incorrecta de la amplitud de parada puede ser demasiado radical o conservadora

  3. Un marco de tiempo mal seleccionado que puede no coincidir con tendencias más a largo plazo o más a corto plazo

  4. El evento repentino provoca una rápida reversión y no se puede detener

Dirección de optimización

  1. Optimización de la elección de los marcos de tiempo para equilibrar la velocidad y la estabilidad de la ganancia

  2. Prueba de diferentes configuraciones de parámetros para optimizar el stop loss

  3. El aumento de algoritmos de aprendizaje automático para ayudar a determinar el punto de inflexión de la tendencia

  4. Aumentar la atención en los eventos importantes y evitar los daños de los eventos inesperados

Resumir

La estrategia se integra en el marco de varios tiempos para determinar la dirección de la tendencia, las condiciones de entrada estrictas en combinación con el deterioro dinámico, con el objetivo de obtener ganancias estables. Existen posibles oportunidades perdidas y problemas de control de riesgos inadecuados.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)