Chiến lược đột phá kênh giá ZZ-4


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

Tổng quan

Chiến lược này dựa trên kênh giá của chỉ số ZZ để giao dịch, sử dụng tín hiệu của giá vượt qua đỉnh của kênh lên hoặc giảm xuống đáy của kênh để thiết lập vị trí vị trí đầu hoặc đầu trống. Chiến lược này cố gắng nắm bắt sự bùng nổ của xu hướng bên ngoài phạm vi kênh giá.

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

  1. Tính toán giới hạn trên và dưới của cổng giá
  2. Khi giá tăng vượt ngưỡng giới hạn
  3. Cắt lỗ khi giá giảm vượt qua giới hạn thấp
  4. Thiết lập thời gian bắt đầu và dừng giao dịch
  5. Mỗi ngày thanh toán trước khi thị trường đóng cửa

Cụ thể, chiến lược này tính toán giới hạn trên và dưới của kênh giá thông qua chỉ số ZZ. Khi giá phá vỡ giới hạn trên từ bên dưới, hãy mua nhiều; Khi giá phá vỡ giới hạn dưới từ bên trên, hãy mua nhiều.

Phân tích lợi thế

  1. Sử dụng kênh giá để đánh giá điểm đột phá của xu hướng tiềm năng, có khả năng nhận diện xu hướng
  2. Các tín hiệu giao dịch đơn giản, trực quan và dễ phân biệt
  3. Các tham số chu kỳ kênh có thể tùy chỉnh để phù hợp với các giống và chu kỳ khác nhau
  4. Thiết lập phạm vi ngày và thanh toán hàng ngày giúp kiểm soát rủi ro
  5. Sử dụng lệnh dừng lỗ để hạn chế tổn thất đơn

Phân tích rủi ro

  1. Sự biến động trong phạm vi kênh giá có thể dẫn đến nhiều lần dừng lỗ
  2. Cần điều chỉnh tham số theo thời gian, nếu không phạm vi kênh có thể không chính xác
  3. Có khả năng đột phá là giả mạo, có nguy cơ bị lừa
  4. Lợi nhuận tiềm năng bị giới hạn trong phạm vi kênh giá
  5. Không tận dụng đầy đủ các cơ hội lợi nhuận của xu hướng

Có thể giảm rủi ro này bằng cách mở rộng phạm vi kênh, tối ưu hóa chiến lược dừng lỗ và đánh giá sức mạnh của xu hướng.

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

  1. Kiểm tra các tham số khác nhau để tìm ra sự kết hợp tốt nhất
  2. Giới hạn giá cả mở rộng để nắm bắt được tình hình lớn hơn
  3. Nhập các chỉ số đánh giá xu hướng để tránh phá vỡ giả
  4. Tối ưu hóa chiến lược dừng lỗ để tránh bị mắc kẹt
  5. Tăng tỷ lệ nắm giữ để tối đa hóa lợi nhuận đột phá
  6. Đánh giá lợi nhuận trong các khoảng thời gian khác nhau

Tóm tắt

Chiến lược này dựa trên điểm bùng nổ của xu hướng đánh giá kênh giá. Ưu điểm là tín hiệu giao dịch đơn giản, dừng lỗ rõ ràng, dễ vận hành; Nhược điểm là có cả hai mặt của xu hướng không được sử dụng đầy đủ và không được sử dụng đầy đủ.

Mã nguồn chiến lược
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", 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(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
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")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")