N Bars estrategia de ruptura

El autor:¿ Qué pasa?, Fecha: 2024-04-12 16:57:15
Las etiquetas:

img

Resumen general

La estrategia de N Bars Breakout es una estrategia de negociación cuantitativa basada en breakouts de precios. La idea principal de esta estrategia es abrir una posición larga cuando el precio de cierre se rompe por encima del máximo más alto de las N barras pasadas, y cerrar la posición larga cuando el precio de cierre se rompe por debajo del mínimo más bajo de las N barras pasadas. Al comparar el precio actual con los precios más altos y más bajos de las N barras pasadas, esta estrategia tiene como objetivo capturar movimientos de breakout fuertes y lograr el efecto de seguir la tendencia.

Principio de la estrategia

  1. Calcular el más alto (más alto) y el más bajo (más bajo) de los últimos N bares.
  2. Si el precio de cierre actual es superior al más alto, abrir una posición larga (long).
  3. Si el precio de cierre actual es inferior al más bajo, cierre la posición larga (corta).
  4. Puede optar por utilizar el precio de cierre (cierre) o el precio alto/bajo (alto/bajo) como fuente de señal.
  5. Dependiendo de la fuente de señal, utilizar los precios más altos y más bajos para calcular los precios más altos y más bajos.
  6. Utilice ta.crossover y ta.crossunder para determinar las rupturas de precios.

Ventajas estratégicas

  1. Lógica simple y clara, fácil de implementar y optimizar.
  2. Puede capturar con eficacia movimientos de ruptura fuertes, con una fuerte capacidad de seguimiento de tendencias.
  3. Gran espacio para la optimización de parámetros, puede ser optimizado para diferentes instrumentos y plazos.
  4. Amplia aplicabilidad, funciona bien para la mayoría de los instrumentos y plazos.
  5. Una elección flexible de la fuente de señal, mejorando la adaptabilidad de la estrategia.

Riesgos estratégicos

  1. Tiene un mal desempeño en mercados agitados y con pequeñas fluctuaciones, con una apertura y cierre frecuentes de posiciones que conllevan altos costes de transacción.
  2. La selección incorrecta de los parámetros puede dar lugar a un riesgo de sobreajuste.
  3. Puede experimentar grandes bajadas durante las inversiones de tendencia.
  4. La fuente de señal única puede presentar el riesgo de distorsión de la señal.

Direcciones para la optimización de la estrategia

  1. Añadir condiciones de filtrado de tendencia, como la dirección de tendencia de MA, ADX, etc., para reducir las operaciones en mercados agitados.
  2. Optimizar la selección de parámetros, como el valor de N, la fuente de señal, etc., para mejorar la estabilidad y la rentabilidad de la estrategia.
  3. Añadir una lógica de stop-loss y de stop-loss para controlar el riesgo de una operación única.
  4. Combinar múltiples fuentes de señal para mejorar la fiabilidad de la señal, por ejemplo, teniendo en cuenta tanto el precio de cierre como las rupturas de precios altos/bajos.
  5. Optimizar los parámetros y la lógica por separado para diferentes instrumentos y plazos.

Resumen de las actividades

La estrategia N Bars Breakout es una estrategia de negociación cuantitativa simple y práctica que logra buenos efectos de seguimiento de tendencias al capturar las rupturas de precios. La estrategia tiene una lógica clara, un gran espacio de optimización y una amplia aplicabilidad, lo que la convierte en una estrategia cuantitativa que merece más investigación y optimización. A través de una optimización razonable de parámetros y una mejora de la lógica, la estabilidad y rentabilidad de esta estrategia pueden mejorarse para adaptarse mejor a diferentes entornos de mercado.


/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(5, "N Bars", minval=1)
src_input = input.string("Close", "Source", ["Close", "High/Low"])

bull_src = switch src_input
	"Close" => close
	"High/Low" => high
	=>
		runtime.error("Invalid source input")
		na

bear_src = switch src_input
	"Close" => close
	"High/Low" => low
	=>
		runtime.error("Invalid source input")
		na

highest = ta.highest(bull_src[1], n)
lowest = ta.lowest(bear_src[1], n)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

bool long = ta.crossover(bull_src, highest)
bool short = ta.crossunder(bear_src, lowest)

//Plots
lowest_plot  = plot(lowest,  color=color.red, title="Lowest")
highest_plot  = plot(highest,  color=color.green, title="Highest")
bull_src_plot = plot(bull_src, color=color.blue, title="Bull")
bear_src_plot = plot(bear_src, color=color.orange, title="Bear")

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)

Más.