Chiến lược các mức đột phá gấp đôi xuyên khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-11-15 17:27:36
Tags:

img

Tổng quan

Đây là một chiến lược sử dụng các mức chính trên các khung thời gian khác nhau để tạo ra các tín hiệu giao dịch đột phá đôi. Nó có thể nhập vào các vị trí dài hoặc ngắn khi giá xu hướng vượt qua các mức hỗ trợ hoặc kháng cự chính để nắm bắt các xu hướng trung và dài hạn.

Chiến lược logic

Chiến lược phân tích hành động giá đồng thời trên hai khung thời gian khác nhau (tf và tf2), với tf là khung thời gian dài hơn phản ánh xu hướng trung và dài hạn, và tf2 là khung thời gian ngắn hơn phản ánh các động thái ngắn hạn.

  1. Khi giá vượt qua mức (mức) trên khung thời gian tf, ghi up1=true
  2. Khi giá phá vỡ dưới mức trên khung thời gian tf, ghi dn1=true
  3. Khi giá phá vỡ trên mức (level2) trên khung thời gian tf2, ghi up2=true
  4. Khi giá phá vỡ dưới mức trên khung thời gian tf2, ghi dn2=true

Các tín hiệu giao dịch được hình thành khi up1 và up2 là đúng với nhau, chỉ ra dài và ngắn hạn là cả hai tăng, đi dài; khi dn1 và dn2 là cả hai đúng, chỉ ra dài và ngắn hạn cả hai giảm, đi ngắn.

Chiến lược này cũng kết hợp một số bộ lọc như đầu scalping ngược và nến màu để tránh các tín hiệu sai từ các đột phá không theo xu hướng.

Nhìn chung, chiến lược tận dụng tối đa lợi thế của phân tích nhiều khung thời gian, đảm bảo xu hướng trung và dài hạn đáp ứng kỳ vọng trong khi tránh can thiệp từ tiếng ồn thị trường ngắn hạn, tạo ra các tín hiệu giao dịch chất lượng cao.

Phân tích lợi thế

  1. Nhận các xu hướng trung và dài hạn bằng cách phá vỡ các mức chính

    Bằng cách theo dõi sự đột phá các mức chính trong hai khung thời gian, nó có thể nắm bắt các tín hiệu nhập cảnh rõ ràng tại các giai đoạn bắt đầu xu hướng.

  2. Xác nhận hai lần làm giảm đáng kể các tín hiệu sai

    Yêu cầu đột phá đồng thời trên hai khung thời gian khác nhau làm giảm đáng kể các tín hiệu sai từ biến động ngẫu nhiên, cải thiện chất lượng tín hiệu.

  3. Các bộ lọc như vỏ đầu đảo ngược và đèn chùm màu

    Thêm scalping ngược và bộ lọc nến màu có thể loại bỏ một số tín hiệu thoát chất lượng thấp và ngăn ngừa tổn thất lớn.

  4. Cài đặt tham số đơn giản

    Chiến lược chỉ cần hai tham số khung thời gian để hoạt động, cung cấp điều chỉnh linh hoạt cho các sản phẩm khác nhau.

  5. Dễ hiểu và tối ưu hóa

    Cấu trúc rõ ràng làm cho nó dễ hiểu logic, và các tham số có thể được điều chỉnh dựa trên điều kiện thị trường để tối ưu hóa.

Phân tích rủi ro

  1. Lần nhập cảnh bị trì hoãn do đột nhập đôi

    So với đột phá đơn, đột phá kép có thể gây ra một số sự chậm trễ vào, bỏ lỡ lợi nhuận xu hướng mạnh mẽ ban đầu.

  2. Lựa chọn cấp độ chính

    Chọn các mức chính phù hợp cho các sản phẩm và chu kỳ thị trường khác nhau là rất quan trọng, nếu không nó có thể tạo ra các tín hiệu sai.

  3. Thất bại thoát

    Ngay cả khi có hai lần thoát, vẫn có khả năng thất bại và rút lui nhanh chóng, gây ra tổn thất.

  4. Lợi nhuận từ sự đảo ngược xu hướng

    Các mục nhập xu hướng muộn có thể phải đối mặt với sự đảo ngược đột ngột, không thể thoát ra kịp thời thông qua dừng lỗ và phải chịu tổn thất lớn.

  5. Tối ưu hóa tham số khó khăn

    Mặc dù đơn giản, việc tìm thấy tập hợp tham số tối ưu vẫn đòi hỏi phải thử nghiệm rộng rãi, với độ khó tối ưu cao.

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

  1. Thêm các chiến lược dừng lỗ

    Có thể thiết lập trailing stop hoặc time stop để dừng lỗ trước khi mất mát trở nên quá lớn.

  2. Tối ưu hóa bộ lọc

    Có thể kiểm tra các thông số kích thước đầu ngược khác nhau hoặc các phương pháp lọc khác.

  3. Mức chìa khóa động

    Làm cho các mức chính thay đổi năng động với sự thay đổi của thị trường thay vì các mức tĩnh.

  4. Tối ưu hóa tham số đa sản phẩm

    Sử dụng máy học để tối ưu hóa các bộ tham số tốt nhất cho các sản phẩm khác nhau.

  5. Thêm xác nhận âm lượng

    Tích hợp xác nhận âm lượng để tránh tín hiệu đột phá sai mà không có âm lượng.

Tóm lại

Nhìn chung, đây là một chiến lược theo xu hướng đơn giản và thực tế. Bằng cách phân tích hai khung thời gian, nó đi vào sự phù hợp hướng trung hạn đến dài hạn để lọc tiếng ồn hiệu quả. Các tín hiệu rõ ràng và dễ hiểu, với các thiết lập tham số trực quan. Nhưng nó cũng có các vấn đề như nhập nhầm thời gian, khó chọn các mức chính. Tóm lại, chiến lược này hoạt động tốt hơn như một công cụ xác nhận xu hướng để kết hợp với các yếu tố khác, nhưng vẫn có nhiều chỗ để tối ưu hóa như một hệ thống giao dịch độc lập.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels Strategy v1.0", shorttitle = "Levels 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, %")
tf = input('W',  title = "timeframe 1")
tf2 = input('D',  title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
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")

//Signals
level = request.security(syminfo.tickerid, tf, src[1])
level2 = request.security(syminfo.tickerid, tf2, src[1])
plot(level, linewidth = 3, color = silver)
plot(level2, linewidth = 3, color = gray)
up1 = close > level and ap == false ? true : low > level ? true : false
dn1 = close < level and ap == false ? true : high < level ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false

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

if up1 and up2 and (close < open or cf == false)
    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)))
    
if dn1 and dn2 and (close > open or cf == false)
    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)))

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

Thêm nữa