Chiến lược đột phá N Bars


Ngày tạo: 2024-04-12 16:57:15 sửa đổi lần cuối: 2024-04-12 16:57:15
sao chép: 0 Số nhấp chuột: 572
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá N Bars

Tổng quan

Chiến lược phá vỡ N Bars là một chiến lược giao dịch định lượng dựa trên giá phá vỡ. Ý tưởng chính của chiến lược này là mở nhiều vị trí khi giá đóng cửa phá vỡ mức giá cao nhất trong ngày giao dịch N trước và giữ vị trí khi giá đóng cửa giảm xuống mức giá thấp nhất trong ngày giao dịch N trước. Chiến lược này có hiệu quả theo dõi xu hướng bằng cách so sánh giá hiện tại với mức giá cao nhất trong ngày giao dịch N trước.

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

  1. Tính giá cao nhất (highest) và giá thấp nhất (lowest) trong N ngày giao dịch.
  2. Nếu giá đóng cửa hiện tại cao hơn highest, hãy mở thêm vị trí ((long) ).
  3. Nếu giá đóng cửa hiện tại thấp hơn lowest, thì bán thêm vị thế ((short) .
  4. Bạn có thể chọn sử dụng giá đóng cửa ((close) hoặc giá cao thấp ((high/low) làm nguồn tín hiệu ((source) }}.
  5. Sử dụng ta.highest và ta.lowest để tính giá cao nhất và giá thấp nhất tùy theo nguồn tín hiệu.
  6. Sử dụng ta.crossover và ta.crossunder để đánh giá giá phá vỡ.

Lợi thế 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ó khả năng bắt kịp các bước đột phá mạnh mẽ và theo dõi xu hướng.
  3. Các tham số điều chỉnh có thể được tối ưu hóa theo các giống và chu kỳ khác nhau.
  4. Có thể sử dụng rộng rãi, hoạt động tốt với hầu hết các loại và chu kỳ.
  5. Có thể lựa chọn nguồn tín hiệu linh hoạt để cải thiện khả năng thích ứng chiến lược.

Rủi ro chiến lược

  1. Hậu quả của các giao dịch này là các giao dịch thường xuyên có giá trị thấp, có thể gây ra rủi ro lớn cho các giao dịch.
  2. Lỗi chọn tham số có thể dẫn đến nguy cơ quá phù hợp.
  3. Có thể sẽ có một đợt lùi lớn hơn khi xu hướng thay đổi.
  4. Nguồn tín hiệu duy nhất có thể có nguy cơ bị lỗi.

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

  1. Thêm các điều kiện lọc xu hướng, như hướng xu hướng ma, adx, và giảm giao dịch trong tình trạng xung đột.
  2. Lựa chọn tham số tối ưu hóa, chẳng hạn như giá trị N, nguồn tín hiệu, để tăng sự ổn định và lợi nhuận của chiến lược.
  3. Tăng Stop Loss và di chuyển logic Stop Loss, kiểm soát rủi ro giao dịch đơn lẻ.
  4. Kết hợp nhiều nguồn tín hiệu để tăng độ tin cậy tín hiệu, chẳng hạn như xem xét giá đóng cửa và giá thấp cao cùng một lúc.
  5. Các tham số và logic được tối ưu hóa theo các giống và chu kỳ khác nhau.

Tóm tắt

Chiến lược N Bars là một chiến lược giao dịch định lượng đơn giản và thực tế, có hiệu quả theo dõi xu hướng tốt hơn bằng cách nắm bắt các hành động phá vỡ giá. Chiến lược này có logic rõ ràng, có không gian tối ưu hóa và khả năng áp dụng rộng rãi, là một chiến lược định lượng đáng để nghiên cứu và tối ưu hóa thêm. Bằng cách tối ưu hóa tham số hợp lý và cải tiến logic, bạn có thể nâng cao hơn nữa sự ổn định và khả năng sinh lợi của chiến lược này, thích ứng tốt hơn với các môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*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)