Chiến lược N Bars Breakout là một chiến lược giao dịch định lượng dựa trên sự đột phá giá. Ý tưởng chính của chiến lược này là mở một vị trí dài khi giá đóng phá vỡ trên mức cao nhất của N bar trước đó, và đóng vị trí dài khi giá đóng phá vỡ dưới mức thấp nhất của N bar trước đó. Bằng cách so sánh giá hiện tại với giá cao nhất và thấp nhất của N bar trước đó, chiến lược này nhằm mục đích nắm bắt các chuyển động đột phá mạnh mẽ và đạt được hiệu ứng theo xu hướng.
Chiến lược N Bars Breakout là một chiến lược giao dịch định lượng đơn giản và thực tế đạt được hiệu ứng theo xu hướng tốt bằng cách nắm bắt sự đột phá giá. Chiến lược có logic rõ ràng, không gian tối ưu hóa lớn và khả năng áp dụng rộng rãi, làm cho nó trở thành một chiến lược định lượng đáng nghiên cứu và tối ưu hóa hơn nữa. Thông qua tối ưu hóa tham số hợp lý và cải tiến logic, sự ổn định và lợi nhuận của chiến lược này có thể được tăng thêm để thích nghi tốt hơn với môi trường thị trường khác nhau.
/*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)