Chiến lược đột phá Noro V1.0


Ngày tạo: 2023-09-21 15:09:43 sửa đổi lần cuối: 2023-09-21 15:09:43
sao chép: 0 Số nhấp chuột: 649
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này hoạt động dựa trên sự phá vỡ của giá. Nó tính toán giá cao nhất và giá thấp nhất trong một chu kỳ nhất định và tạo ra tín hiệu giao dịch khi giá phá vỡ các giới hạn này.

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

  1. Tính toán giá cao nhấtupex và giá thấp nhấtdnex trong chu kỳ N gần đây nhất.

  2. Khi giá vượt quá uex, hãy làm nhiều hơn.

  3. Khi giá thấp hơn dnex, hãy thả.

  4. Các giao dịch có thể được cấu hình là giao dịch chỉ với số dư, chỉ với số dư hoặc giao dịch hai chiều.

  5. Tỷ lệ sử dụng vốn có thể phân bổ.

  6. Có thể cấu hình khoảng thời gian giao dịch.

Lợi thế chiến lược

  • Ghi lại các tín hiệu đột phá, phù hợp với giao dịch xu hướng
  • Quy tắc đơn giản, trực quan và dễ thực hiện
  • Có thể cấu hình nhiều hướng giao dịch, thích ứng với các thị trường khác nhau
  • Có thể giới hạn thời gian giao dịch
  • Tỷ lệ sử dụng vốn có thể kiểm soát được

Rủi ro chiến lược

  • Thiệt hại do không có bộ lọc hiệu quả
  • Giao dịch hai chiều tăng phí xử lý và chi phí điểm trượt
  • Rủi ro gia tăng tỷ lệ sử dụng vốn lớn

Hướng tối ưu hóa

  • Tăng xác minh tính hiệu quả của đột phá, tránh đột phá giả
  • Kích thước của tham số tối ưu hóa
  • Kết hợp các chỉ số khác để lọc tín hiệu
  • Kiểm tra mức sử dụng vốn khác nhau
  • Hạn chế số lần giao dịch mỗi ngày

Tóm tắt

Chiến lược này thực hiện theo xu hướng bằng cách nắm bắt các tín hiệu phá vỡ giá. Tối ưu hóa cơ chế xác minh phá vỡ và thiết lập tham số có thể tăng hiệu quả. Tuy nhiên, cần chú ý đến phòng ngừa phá vỡ giả và kiểm soát rủi ro.

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