
Esta estrategia combina las ventajas de las medias móviles de Hull y las medias móviles de T3 para diseñar una estrategia de intercambio entre ciudades. Esta estrategia se puede usar tanto para operaciones en líneas cortas como para el seguimiento de tendencias en líneas medias y largas.
La estrategia se basa principalmente en el cálculo de las medias móviles de Hull y las medias móviles de T3.
El promedio móvil de Hull (Hull Moving Average, HMA) es un método de cálculo iterativo de promedios móviles ponderados que filtra eficazmente el ruido del mercado y muestra una curva de suavizado de la tendencia de los precios. Es más sensible a los cambios de precios que las medias móviles simples y las medias móviles indexadas, y también es eficaz para inhibir las falsas rupturas.
El promedio móvil T3 puede ser más cercano al precio a través de ciertos ajustes de hiperparámetros, al tiempo que se reduce el efecto de retraso. Es capaz de responder más rápidamente a los cambios de precio a través de la computación suave de múltiples índices.
Esta estrategia calcula el promedio de ambos como el indicador principal de la operación. La hora de entrada se determina según la dirección de este promedio: si el promedio del ciclo actual es superior al del ciclo anterior, se indica una señal de entrada múltiple; si el promedio del ciclo actual es inferior al del ciclo anterior, se indica una señal de entrada en blanco.
Para la regla de salida, se ejecuta la salida si el precio supera el punto de parada o alcanza el punto de parada; también se ejecuta la salida si la dirección de la línea media cambia.
La estrategia combina las ventajas de las medias móviles Hull y T3 para generar un indicador integrado, ya que permite una respuesta rápida a los cambios de precio y una reducción del ruido. En segundo lugar, la estrategia se aplica tanto a las operaciones de línea corta como a las de línea media y larga, y se puede ajustar con flexibilidad las operaciones de ciclo adecuadas mediante el ajuste de los parámetros de ciclo calculado.
La estrategia se basa principalmente en el indicador de la línea de paridad, que puede generar falsas señales en una tendencia oscilante varias veces. Además, la línea de paridad tiene un cierto retraso y puede perder el momento de entrada óptimo en la variación de los precios. La configuración de los puntos de parada de pérdidas debe ser prudente y evitar ser demasiado relajados o demasiado apremiantes. Finalmente, los parámetros de optimización para diferentes monedas y ciclos de negociación deben ser probados y no se pueden repetir directamente.
Se puede considerar la inclusión de otros indicadores auxiliares, como indicadores de fuerza y debilidad, indicadores de volatilidad, etc., para verificar la señal de línea de equilibrio y filtrar las falsas señales. Se pueden probar diferentes combinaciones de línea de equilibrio y algoritmos de ponderación para optimizar la eficacia de la generación de señales de línea de equilibrio. Se pueden agregar riesgos de gestión dinámica de stop loss y trailing stop para adaptarse. Se puede realizar una optimización de retroalimentación para diferentes monedas y ciclos de negociación para encontrar la combinación óptima de parámetros.
Esta estrategia integra las ventajas de la media móvil de Hull y la media móvil de T3 para formar un indicador integral para determinar la dirección de la tendencia. A través de la optimización de los parámetros, la estrategia se puede aplicar de manera flexible a diferentes ciclos de negociación. La estrategia tiene ciertas ventajas, pero también existe un problema de seguimiento retrasado, que genera falsas señales.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99
//@version=4
strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////GENERAL INPUTS//////////////////////////////////////
length_Ma= input(defval=50, title="Length MAs", minval=1)
//==========HMA
getHULLMA(src, len) =>
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
hullma
//==========T3
getT3(src, len, vFactor) =>
ema1 = ema(src, len)
ema2 = ema(ema1,len)
ema3 = ema(ema2,len)
ema4 = ema(ema3,len)
ema5 = ema(ema4,len)
ema6 = ema(ema5,len)
c1 = -1 * pow(vFactor,3)
c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
T3
hullma = getHULLMA(close,length_Ma)
t3 = getT3(close,length_Ma,0.7)
avg = (hullma+t3) /2
////////////////////////////PLOTTING////////////////////////////////////////////
colorado = avg > avg[1]? color.green : color.red
plot(avg , title="avg", color=colorado, linewidth = 4)
long=avg>avg[1]
short=avg<avg[1]
tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)
tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)
if(time_cond)
strategy.entry("long",1,when=long)
strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
strategy.entry("short",0,when=short)
strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")