Chiến lược theo dõi xu hướng song phương dựa trên đột phá phạm vi


Ngày tạo: 2024-02-01 14:22:26 sửa đổi lần cuối: 2024-02-01 14:22:26
sao chép: 2 Số nhấp chuột: 528
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng song phương dựa trên đột phá phạm vi

Tổng quan

Chiến lược này tạo ra tín hiệu giao dịch bằng cách tính toán giá dừng cuối cùng và giá giảm cuối cùng, kết hợp với giá hiện tại để xác định liệu giá có đi vào một vùng nhất định hay không. Khi giá vượt quá một tỷ lệ nhất định của giá dừng trước và khi giá thấp hơn một tỷ lệ nhất định của giá giảm trước.

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

Chiến lược này tính toán trước giá dừng cuối cùng lastbull và giá dừng cuối cùng lastbear. Sau đó tính toán tỷ lệ thay đổi giá hiện tại gần so với lastbull là ddl, và tỷ lệ thay đổi so với lastbear là dds.

Tín hiệu up được tạo ra khi ddl thấp hơn tín hiệu đa điểm được cấu hình signallong, và tín hiệu dn khi dds cao hơn tín hiệu đa điểm được cấu hình signalshort.

Khi nhận được nhiều tín hiệu, nếu cần nhiều tham số needlong, hãy mở nhiều vị trí. Nếu nhận được tín hiệu shorting, nếu cần tham số shorting, hãy mở vị trí.

Điều kiện là giá tăng sau khi mở nhiều vị trí là giá giảm sau khi mở nhiều vị trí, giá giảm sau khi mở trống là vị trí trống.

Phân tích lợi thế

Chiến lược này kết hợp xu hướng và phân đoạn phán đoán, có thể nắm bắt xu hướng và có thể sử dụng phá vỡ phân đoạn để tạo ra tín hiệu giao dịch, làm cho nhiều giao dịch chuyển nhượng. So với chiến lược theo dõi xu hướng đơn giản, nó có thể nhanh chóng nắm bắt hướng xu hướng mới sau khi phá vỡ phân đoạn.

Các tham số có thể được cấu hình rộng rãi, có thể điều chỉnh linh hoạt các tham số làm nhiều việc trống, thích ứng với các giống khác nhau. Các khoảng thời gian mở kho có thể được cấu hình để tránh các thời điểm quan trọng.

Phân tích rủi ro

Chiến lược không có cơ chế dừng lỗ, không thể kiểm soát hiệu quả tổn thất đơn lẻ. Khi phạm vi giao dịch biến động lớn, tính toán vị trí dễ bị ảnh hưởng bởi giá cả.

Bạn có thể thiết lập dừng lỗ để hạn chế tổn thất đơn lẻ. Bạn có thể thiết lập vị trí theo các thuật toán vị trí khác nhau để vị trí ổn định hơn.

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

  1. Tăng mức dừng di chuyển để kiểm soát rủi ro mất mát đơn lẻ
  2. Cải thiện phương pháp tính toán vị thế, ví dụ như tính toán bằng ATR, để kích thước vị thế ổn định hơn
  3. Thêm các bộ lọc mở vị trí, chẳng hạn như mở vị trí chỉ khi vượt qua giao lộ vàng
  4. Kết hợp nhiều loại giao dịch, thiết lập liên kết, giảm rủi ro hệ thống

Tóm tắt

Chiến lược này tích hợp các định hướng xu hướng và phá vỡ các khu vực để tạo ra tín hiệu giao dịch, có thể nắm bắt các hướng xu hướng mới và có thể sử dụng các tính năng dao động khu vực. Các tham số được đặt linh hoạt, có thể điều chỉnh không gian lớn, phù hợp với các giống khác nhau.

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

//Noro
//2019

//@version=4
strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, title = "Long")
needshort = input(true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
signalshort = input(3.0, title = "Short, %")
signallong = input(-3.0, title = "Long, %")
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")

//Levels
bull = close > close[1] ? 1 : 0
bear = close < close[1] ? 1 : 0
lastbull = 0.0
lastbull := bull ? close : lastbull[1]
lastbear = 0.0
lastbear := bear ? close : lastbear[1]

//Signals
ddl = ((close / lastbull) - 1) * 100
up = ddl < signallong
dds = ((close / lastbear) - 1) * 100
dn = dds > signalshort

//Lines
plot(dds, style = plot.style_area, color = color.red, transp = 0)
plot(ddl, style = plot.style_area, color = color.lime, transp = 0)
plot(0, color = color.black, linewidth = 2, transp = 0)

//Background
col = (up and needlong) or (dn and needshort) ? color.yellow : na
bgcolor(col, transp = 20)

//Orders
lot = 0.0
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if up
    strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if dn
    strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if strategy.position_size > 0 and close > open
    strategy.entry("Close", strategy.short, 0)
if strategy.position_size < 0 and close < open
    strategy.entry("Close", strategy.long, 0)