Estrategia de ruptura de N Bars


Fecha de creación: 2024-04-12 16:57:15 Última modificación: 2024-04-12 16:57:15
Copiar: 0 Número de Visitas: 572
1
Seguir
1617
Seguidores

Estrategia de ruptura de N Bars

Descripción general

La estrategia de ruptura de N Bars es una estrategia de negociación cuantitativa basada en la ruptura de precios. La idea principal de la estrategia es abrir una posición mayor cuando el precio de cierre supera el precio más alto de los últimos N días de negociación y cerrar una posición menor cuando el precio de cierre cae el precio más bajo de los últimos N días de negociación.

Principio de estrategia

  1. Calcula el precio más alto (highest) y el precio más bajo (lowest) de los últimos N días de negociación.
  2. Si el precio de cierre actual es superior a “highest”, se abre una posición más larga.
  3. Si el precio de cierre actual es menor que el mínimo, se hace una posición corta.
  4. Se puede elegir el precio de cierre (close) o el precio alto/bajo (high/low) como fuente de señal (source).
  5. Los precios más altos y más bajos se calculan con ta.highest y ta.lowest, según la fuente de la señal.
  6. Utiliza ta.crossover y ta.crossunder para determinar las rupturas de precios.

Ventajas estratégicas

  1. La lógica es simple y clara, fácil de implementar y optimizar.
  2. La tecnología de seguimiento de tendencias es una herramienta muy eficaz para capturar las tendencias más fuertes.
  3. El espacio de ajuste de parámetros es amplio y se puede optimizar según las diferentes variedades y ciclos.
  4. Es muy versátil y funciona bien con la mayoría de las variedades y ciclos.
  5. Se puede elegir la fuente de señal con flexibilidad para mejorar la adaptabilidad de la estrategia.

Riesgo estratégico

  1. La mala respuesta a las situaciones de crisis y a las pequeñas fluctuaciones, y la apertura frecuente de posiciones cerradas conllevan un alto costo de operación.
  2. La elección incorrecta de los parámetros puede causar un riesgo de sobreajuste.
  3. La tendencia a la baja puede ser mayor si se produce un cambio de tendencia.
  4. Una sola fuente de señal puede estar en riesgo de fallas.

Dirección de optimización de la estrategia

  1. Aumentar las condiciones de filtro de tendencia, como la dirección de la tendencia ma, adx, etc., y reducir las transacciones en condiciones de choque.
  2. Optimización de la selección de parámetros, tales como N-valores, fuentes de señales, etc., para mejorar la estabilidad de la estrategia y la rentabilidad.
  3. Aumentar el Stop Loss y mover la lógica de Stop Loss para controlar el riesgo de una sola transacción.
  4. La combinación de varias fuentes de señal mejora la fiabilidad de la señal, por ejemplo, al mismo tiempo que se considera el precio de cierre y la ruptura de precios altos y bajos.
  5. Optimiza los parámetros y la lógica según las diferentes variedades y ciclos.

Resumir

La estrategia de ruptura de N Bars es una estrategia de negociación cuantitativa simple y práctica, que logra un mejor seguimiento de la tendencia al capturar el movimiento de ruptura de precios. La estrategia tiene una lógica clara, un espacio de optimización amplio y una amplia aplicabilidad. Es una estrategia cuantitativa que merece ser estudiada y optimizada.

Código Fuente de la Estrategia
/*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)