
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.
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.
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.
El método de deterioro dinámico protege al máximo los fondos
Las condiciones de ingreso son estrictas, lo que reduce las transacciones innecesarias y evita costos excesivos de puntos de deslizamiento.
La combinación de varios marcos de tiempo equilibra la velocidad y la estabilidad de la ganancia
Las condiciones de ingreso son muy estrictas y pueden perderse algunas oportunidades.
La configuración incorrecta de la amplitud de parada puede ser demasiado radical o conservadora
Un marco de tiempo mal seleccionado que puede no coincidir con tendencias más a largo plazo o más a corto plazo
El evento repentino provoca una rápida reversión y no se puede detener
Optimización de la elección de los marcos de tiempo para equilibrar la velocidad y la estabilidad de la ganancia
Prueba de diferentes configuraciones de parámetros para optimizar el stop loss
El aumento de algoritmos de aprendizaje automático para ayudar a determinar el punto de inflexión de la tendencia
Aumentar la atención en los eventos importantes y evitar los daños de los eventos inesperados
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.
/*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)