N Bars Breakout chiến lược

Tác giả:ChaoZhang, Ngày: 2024-04-12 16:57:15
Tags:

img

Tổng quan

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.

Nguyên tắc chiến lược

  1. Tính toán mức cao nhất (cao nhất) và mức thấp nhất (thấp nhất) của N thanh trước.
  2. Nếu giá đóng cửa hiện tại cao hơn mức cao nhất, mở vị trí dài (long).
  3. Nếu giá đóng cửa hiện tại thấp hơn mức thấp nhất, đóng vị trí dài (nước ngắn).
  4. Bạn có thể chọn sử dụng giá đóng cửa (khép lại) hoặc giá cao / thấp (cao / thấp) làm nguồn tín hiệu.
  5. Tùy thuộc vào nguồn tín hiệu, sử dụng ta.highest và ta.lowest để tính giá cao nhất và thấp nhất.
  6. Sử dụng ta.crossover và ta.crossunder để xác định sự đột phá giá.

Ưu điểm chiến lược

  1. Logic đơn giản và rõ ràng, dễ thực hiện và tối ưu hóa.
  2. Có thể nắm bắt hiệu quả các động thái đột phá mạnh mẽ, với khả năng theo dõi xu hướng mạnh mẽ.
  3. Không gian lớn cho tối ưu hóa tham số, có thể được tối ưu hóa cho các công cụ và khung thời gian khác nhau.
  4. Ứng dụng rộng, hoạt động tốt cho hầu hết các dụng cụ và khung thời gian.
  5. Sự lựa chọn linh hoạt của nguồn tín hiệu, cải thiện khả năng thích nghi chiến lược.

Rủi ro chiến lược

  1. Hiệu suất kém trong các thị trường biến động và biến động nhỏ, với việc mở và đóng các vị trí thường xuyên dẫn đến chi phí giao dịch cao.
  2. Chọn tham số không đúng có thể dẫn đến nguy cơ quá phù hợp.
  3. Có thể trải qua những đợt rút tiền lớn trong thời gian đảo ngược xu hướng.
  4. Một nguồn tín hiệu duy nhất có thể đối mặt với nguy cơ biến dạng tín hiệu.

Hướng dẫn tối ưu hóa chiến lược

  1. Thêm các điều kiện lọc xu hướng, chẳng hạn như hướng xu hướng MA, ADX, v.v., để giảm giao dịch trong thị trường hỗn loạn.
  2. Tối ưu hóa lựa chọn tham số, chẳng hạn như giá trị N, nguồn tín hiệu, vv, để cải thiện tính ổn định và lợi nhuận của chiến lược.
  3. Thêm logic stop-loss và trailing stop-loss để kiểm soát rủi ro giao dịch duy nhất.
  4. Kết hợp nhiều nguồn tín hiệu để cải thiện độ tin cậy tín hiệu, chẳng hạn như xem xét cả giá đóng cửa và giá cao / thấp.
  5. Tối ưu hóa các tham số và logic riêng biệt cho các công cụ và khung thời gian khác nhau.

Tóm lại

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)

Thêm nữa