Noro's Breakout Strategy v1.0

Tác giả:ChaoZhang, Ngày: 2023-09-21 15:09:43
Tags:

Tổng quan

Chiến lược này giao dịch dựa trên sự đột phá giá vượt quá mức cực gần đây. Nó tính toán mức cao nhất và thấp nhất trong một khoảng thời gian và tạo ra tín hiệu khi giá phá vỡ các mức này.

Làm thế nào nó hoạt động

  1. Tính toán đỉnh cao cao nhất và thấp nhất dnex trong N thời gian.

  2. Đi dài khi giá phá vỡ trên đỉnh.

  3. Đi ngắn khi giá phá vỡ dưới dnex.

  4. Có thể cấu hình chỉ cho dài, chỉ ngắn hoặc cả hai hướng.

  5. Tỷ lệ sử dụng vốn có thể cấu hình.

  6. Phạm vi thời gian giao dịch có thể cấu hình.

Ưu điểm

  • Nhận tín hiệu đột phá, tốt cho giao dịch xu hướng
  • Quy tắc đơn giản và trực quan, dễ thực hiện
  • Định hướng cấu hình thích nghi với các thị trường khác nhau
  • Có thể giới hạn phạm vi thời gian giao dịch
  • Kiểm soát việc sử dụng vốn

Rủi ro

  • Không thể lọc hiệu quả các sự đột phá giả
  • Thương mại hai chiều làm tăng chi phí
  • Việc sử dụng vốn cao làm tăng rủi ro

Hướng dẫn tối ưu hóa

  • Thêm xác thực để tránh các sự cố sai
  • Tối ưu hóa giá trị N cho hiệu suất tối ưu
  • Các bộ lọc bổ sung cho tín hiệu màn hình
  • Kiểm tra tỷ lệ sử dụng vốn khác nhau
  • Số lượng giao dịch giới hạn mỗi ngày

Kết luận

Chiến lược này theo xu hướng sử dụng tín hiệu đột phá giá. Tăng hiệu lực đột phá và điều chỉnh các tham số có thể cải thiện hiệu suất. Nhưng các đột phá sai và kiểm soát rủi ro cần phải được giải quyết. Nhìn chung, một giải pháp giao dịch xu hướng đơn giản và hiệu quả.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Brakeout Strategy v1.0", shorttitle = "Brakeout str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Extremums
upex = highest(high, len)
dnex = lowest(low, len)
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[len]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)), stop = upex + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)), stop = dnex - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Thêm nữa