Estrategia de ruptura siguiendo la tendencia


Fecha de creación: 2023-12-08 17:16:34 Última modificación: 2023-12-08 17:16:34
Copiar: 1 Número de Visitas: 573
1
Seguir
1621
Seguidores

Estrategia de ruptura siguiendo la tendencia

Descripción general

La estrategia permite el seguimiento de la tendencia de los precios de las criptomonedas al establecer los puntos altos y bajos en los que los precios se rompen. Hacer más cuando el precio rompe los puntos altos y hacer menos cuando el precio rompe los puntos bajos para capturar la tendencia.

Principio de estrategia

La estrategia se basa principalmente en el cálculo de la tendencia al alza o a la baja de los precios mediante la ley de la media móvil plana. En concreto, se toman en cuenta los precios más altos y más bajos de un período determinado, y se toman en cuenta las tendencias al alza cuando los precios de las operaciones reales superan los precios más altos de las estadísticas; y se toman en cuenta las tendencias a la baja cuando los precios de las operaciones reales son inferiores a los precios más bajos de las estadísticas.

El precio de apertura de la posición para hacer más vacío se establece mediante la barra de parámetros ENTRY, y el precio de posición baja se establece mediante la barra de parámetros EXIT. El período de retracción también se puede establecer a través de los parámetros. Así, se puede ajustar los parámetros para buscar la combinación de combos óptima.

En concreto, la lógica principal de la estrategia es la siguiente:

  1. Precios máximos y mínimos dentro de un período estadístico determinado (se puede configurar)
  2. Determinar si el precio real de la transacción es superior al precio máximo
    1. Si es superior a, se presenta una oportunidad de hacer más, abrir más posiciones de acuerdo con el nivel de precio establecido por el parámetro de la barra ENTRY
    2. Si el precio de la transacción real es inferior al precio mínimo, existe la oportunidad de hacer un descuento y abrir una posición libre de acuerdo con el nivel de precio establecido por el parámetro de la barra EXIT
  3. Después de abrir más posiciones, cerrar las posiciones cuando el precio es inferior al precio establecido por el parámetro de la barra EXIT
  4. Después de abrir una posición vacía, cerrar la posición cuando el precio es superior al precio establecido por el parámetro de la barra ENTRY

A través de este ciclo lógico, se puede capturar la tendencia de subida y bajada de los precios y realizar un seguimiento de tendencias.

Ventajas estratégicas

La mayor ventaja de esta estrategia es que se puede capturar automáticamente la tendencia de los precios a través del ajuste de parámetros, sin necesidad de juzgar manualmente la dirección de la tendencia. Siempre que los parámetros estén configurados correctamente, se puede seguir automáticamente la fluctuación de los precios de las criptomonedas.

Además, la estrategia es muy adecuada para el comercio de la cantidad, que puede ser fácil de automatizar los pedidos. No se requiere la intervención manual, reduce el riesgo de comercio emocional, que puede aumentar considerablemente la eficiencia de la negociación.

Finalmente, la estrategia también puede maximizar los beneficios mediante ajustes de parámetros. Al probar diferentes parámetros de ENTRY y EXIT, se puede encontrar el parámetro óptimo para maximizar los beneficios.

Riesgo estratégico

El mayor riesgo de esta estrategia es que la configuración inadecuada de los parámetros puede conducir a operaciones demasiado frecuentes, aumentando los gastos de transacción y la pérdida de puntos de deslizamiento. Si la configuración de ENTRY es demasiado baja y la configuración de EXIT es demasiado alta, es fácil generar señales de negociación falsas.

Además, si los parámetros se ajustan incorrectamente, puede resultar en no poder capturar la tendencia de los precios a tiempo y perder oportunidades de negociación. Esto requiere una gran cantidad de retroalimentación para encontrar los parámetros óptimos.

Finalmente, la estrategia es demasiado sensible al ruido del mercado a corto plazo y puede generar señales de negociación erróneas. Esto debe evitarse mediante la configuración adecuada de los parámetros de ciclo de tiempo de negociación.

Dirección de optimización de la estrategia

La estrategia puede seguir optimizándose en las siguientes direcciones:

  1. Aumentar la lógica de stop loss. De esta manera, se puede detener la salida de pérdidas cuando las pérdidas se expanden a una cierta proporción, evitando mayores pérdidas.

  2. Aumentar el filtro de indicadores técnicos como las medias móviles. Utilice indicadores como MA, KDJ para juzgar las grandes tendencias y evitar que el ruido a corto plazo traiga demasiadas transacciones.

  3. Optimización de la lógica de configuración de parámetros. Se puede configurar un mecanismo de cambio adaptativo de los parámetros ENTRY, EXIT, en lugar de una configuración estática, para que se puedan ajustar los parámetros según el entorno del mercado.

  4. Aprovechar los parámetros óptimos de entrenamiento de aprendizaje automático. Entrenar con una gran cantidad de datos históricos para obtener los mejores ajustes de ENTRY y EXIT para el entorno de mercado actual.

Resumir

La estrategia permite la automatización de la negociación mediante la captura de tendencias de precios, con el mayor beneficio de reducir la influencia de las emociones humanas en la negociación, reducir el riesgo y aumentar la eficiencia. Al mismo tiempo, se puede buscar el punto de beneficio óptimo mediante el ajuste de parámetros.

El principal riesgo de las estrategias es la configuración incorrecta de los parámetros y la excesiva sensibilidad al ruido del mercado. Esto requiere mejoras a través de métodos como la pérdida de pérdidas, el filtrado de indicadores y la optimización de la adaptación de los parámetros.

En general, la estrategia es una estrategia de seguimiento de tendencias simple y eficaz, adecuada para la cuantificación y el comercio automático. La estabilidad de la estrategia se puede mejorar aún más con la optimización continua.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © JstMtlQC

//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)


/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")

/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

/////////////// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false 

/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)

/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)

/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)

/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// SHORT 

entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)

/////////////// LONG 

exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// LONG 

if (entrylong)
    strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
    strategy.close("LongEntry", when=window())

/////////////// SHORT 

if (entryshort)
    strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
    strategy.close("short", when=window())