Tendencia a la ruptura siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-12-08 17:16:34
Las etiquetas:

img

Resumen general

Esta estrategia rastrea la tendencia de precios de las criptomonedas estableciendo precios altos y bajos de ruptura.

Principio de la estrategia

Esta estrategia utiliza principalmente el método de promedio móvil ponderado para determinar si hay una tendencia obvia al alza o a la baja. Específicamente, registrará los precios más altos y más bajos durante un cierto período. Cuando el precio de negociación real excede el precio más alto registrado, se juzga que se ha producido una tendencia al alza, y será larga. Cuando el precio de negociación real es menor que el precio más bajo registrado, se juzga que se ha producido una tendencia a la baja, y será corta.

Los precios de apertura para largo y corto se establecen a través del parámetro de entrada ENTRY, y los precios de cierre se establecen a través del parámetro EXIT.

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

  1. Registro de los precios más altos y más bajos durante un período determinado (ajustable)
  2. Juzgar si el precio de negociación real es mayor que el precio más alto
    1. Si es superior, existe una oportunidad larga, abra una posición larga basada en el nivel de precio establecido por el parámetro ENTRY
    2. Si el precio de negociación real es inferior al precio más bajo, existe una oportunidad corta, abra una posición corta basada en el nivel de precio establecido por el parámetro EXIT
  3. Después de abrir una posición larga, cerrarla cuando el precio caiga por debajo del nivel establecido por el parámetro EXIT
  4. Después de abrir una posición corta, cerrarla cuando el precio suba por encima del nivel establecido por el parámetro ENTRY

A través de este bucle lógico, puede capturar las tendencias al alza y a la baja del precio y lograr el seguimiento de la tendencia.

Ventajas

La mayor ventaja de esta estrategia es que al ajustar los parámetros, puede capturar automáticamente las tendencias de precios sin la necesidad de juzgar manualmente la dirección de la tendencia.

Además, esta estrategia es muy adecuada para la negociación cuantitativa y puede lograr fácilmente la colocación de pedidos automatizados.

Finalmente, esta estrategia también puede maximizar los retornos ajustando los parámetros.

Los riesgos

El mayor riesgo de esta estrategia es que la configuración inadecuada de los parámetros puede conducir a una negociación excesivamente frecuente, aumentando las tarifas de negociación y las pérdidas por deslizamiento.

Además, el ajuste inadecuado de los parámetros también puede conducir a la falta de captura de las tendencias de precios a tiempo, perdiendo oportunidades comerciales.

Por último, esta estrategia es demasiado sensible al ruido del mercado a corto plazo, que puede generar señales comerciales erróneas.

Direcciones de optimización

Los siguientes aspectos pueden optimizarse aún más para esta estrategia:

  1. Esto permite detener la pérdida cuando las pérdidas exceden un cierto porcentaje para evitar pérdidas mayores.

  2. Añadir filtros de indicadores técnicos como promedio móvil, KDJ para juzgar la tendencia general para evitar demasiada negociación debido al ruido a corto plazo.

  3. Optimizar la lógica de configuración de parámetros. El mecanismo de cambio adaptativo se puede configurar para los parámetros ENTRY y EXIT en lugar de la configuración estática para que puedan ajustarse en función de las condiciones del mercado.

  4. Utilice el aprendizaje automático para entrenar parámetros óptimos. Obtenga los ajustes óptimos de ENTRY y EXIT para el entorno actual del mercado a través de un entrenamiento masivo de datos históricos.

Conclusión

La mayor ventaja de esta estrategia es que mediante la captura de las tendencias de precios se consigue la negociación automatizada, que puede reducir el impacto de las emociones humanas en el comercio, reducir los riesgos y mejorar la eficiencia.

Los principales riesgos de la estrategia son la configuración inadecuada de los parámetros y la sensibilidad excesiva al ruido del mercado.

En general, esta es una tendencia simple y efectiva después de la estrategia adecuada para el comercio cuantitativo y automatizado.


/*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())



Más.