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.
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)