Invierta en la estrategia de seguimiento de tendencias doradas


Fecha de creación: 2023-10-31 15:09:22 Última modificación: 2023-10-31 15:09:22
Copiar: 0 Número de Visitas: 658
1
Seguir
1617
Seguidores

Invierta en la estrategia de seguimiento de tendencias doradas

Descripción general

La estrategia utiliza un modelo de línea media para determinar la dirección de la tendencia del mercado, y la estrategia de establecer una posición adicional periódicamente en la tendencia de la oscuridad para seguir la tendencia al alza de los cruces de oro del mercado.

Principio de estrategia

La estrategia se basa principalmente en los siguientes principios técnicos:

  1. Utiliza la línea media de la EMA para determinar la dirección de la tendencia del mercado. Cuando la línea rápida de la EMA atraviesa la línea lenta de la EMA, juzga la tendencia positiva y prepárate para la entrada en varias direcciones.

  2. Combinado con el indicador MACD para determinar el momento de entrada. Cuando el indicador MACD es negativo, indica que el precio de compra comienza a debilitarse y entra en varias direcciones.

  3. Limitar la entrada a una vez al mes, para evitar la persecución. El número de entradas puede fijarse.

  4. Se puede configurar una fecha de inicio y una fecha de finalización para limitar el período de retroalimentación. Cuando finaliza la retroalimentación, la estrategia aplanará todas las posiciones.

Concretamente, la estrategia calcula primero la línea de EMA rápida y la línea de EMA lenta, y detecta la relación entre ambos para juzgar la tendencia del mercado. Al mismo tiempo, calcula el indicador MACD para juzgar el punto de entrada específico.

Ventajas estratégicas

Se trata de una estrategia de seguimiento de tendencias más sencilla y directa, con las siguientes ventajas:

  1. El uso de la línea media de la EMA para determinar la dirección de las grandes tendencias es sencillo y práctico. La línea media de la EMA tiene un efecto suavizador sobre los cambios en los precios, y puede filtrar eficazmente el ruido de los mercados convulsionados.

  2. El indicador MACD puede determinar con mayor precisión el momento en que la estructura de compra y venta se debilita, por lo que el riesgo de entrada es menor.

  3. Limitarse a una operación de búsqueda al mes, para evitar la búsqueda de altas y bajas en el mercado de toros.

  4. Permite la personalización de la entrada mensual y la flexibilidad para ajustar la posición según su propia estrategia.

  5. Se puede hacer una prueba de retrospectiva para evaluar la eficacia de la estrategia a través de las fechas de inicio y finalización.

  6. Cuando la retrospectiva finaliza, se toma la iniciativa de cerrar la posición, para evitar la vergüenza de mantener la posición cuando la simulación se retira del mercado.

Riesgos y contramedidas

La estrategia también tiene algunos riesgos potenciales, incluyendo:

  1. Los métodos que se basan en la mediana para juzgar la tendencia pueden perder oportunidades en el ajuste a corto plazo o no ser lo suficientemente ágiles para reaccionar cuando la tendencia se invierte. Se puede acortar adecuadamente el ciclo de la mediana o agregar otros indicadores de juicio para optimizar.

  2. Hacer un seguimiento una vez al mes puede hacer que se pierda el mejor momento de entrada. Se puede considerar la posibilidad de relajar la frecuencia de entrada o volver a entrar cuando se rompa un nuevo récord.

  3. Existen ciertos riesgos de ajuste de retroalimentación. Se debe aumentar el espacio de ajuste de parámetros y hacer pruebas de solidez a través de mercados y períodos de tiempo.

  4. Existe el riesgo de seguimiento de la caída y sobrecompra. Se debe controlar adecuadamente el monto de entrada mensual y evitar posiciones excesivas.

Dirección de optimización

Esta estrategia de seguimiento de la caza de ganado puede ampliarse y optimizarse en los siguientes aspectos:

  1. Aumento de la lógica de stop loss EXIT, que activa el stop loss cuando el mercado tiene una cabeza de oso evidente.

  2. Una vez que se establezca el MACD, se añade una compra adicional para obtener una mayor exposición a la tendencia.

  3. La introducción de un criterio de fuerza múltiple que compara los máximos de aumento del mes con los máximos de aumento del mes anterior para evaluar si la tendencia sigue siendo fuerte.

  4. Aumentar la lógica de control de posición. El ingreso mensual puede ser controlado por porcentaje, no por valor fijo.

  5. Evaluar el impacto de las diferentes combinaciones de líneas medias y parámetros MACD en la eficacia de la estrategia. Buscar la combinación de parámetros óptima.

  6. Añadir un trailing stop para seguir el trailing loss. Comenzar a seguir el trailing stop a cierta amplitud después de que el precio alcance un nuevo máximo para que las ganancias sigan funcionando.

Resumir

La estrategia en su conjunto es una simple estrategia de seguimiento de tendencias, con una idea central clara y fácil de implementar, adecuada para probar la eficacia de la combinación de seguimiento de tendencias lineal y inversión fija. Se puede aprender como una de las estrategias de entrada a la negociación cuantitativa.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

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

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)