Chiến lược đột phá phạm vi động


Ngày tạo: 2023-11-21 15:03:19 sửa đổi lần cuối: 2023-12-01 15:00:31
sao chép: 0 Số nhấp chuột: 691
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá phạm vi động

Tổng quan

Chiến lược này được thiết kế dựa trên các chỉ số Brin Belt để tạo ra một chiến lược giao dịch đột phá động. Nó kết hợp các điều kiện lọc thực thể K-line và lọc màu để tìm cơ hội đột phá entry gần đường ray Brin Belt. Exit dựa trên lọc thực thể.

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

Tính toán chỉ số

Đầu tiên, tính theo điểm thấp, đường cơ sở và đường ray dưới của vùng Brin:

src = low 
basis = sma(src, length)
dev = mult * stdev(src, length) 
lower = basis - dev

Trong đó src là điểm thấp, length là chu kỳ tính toán, basis là đường trung bình, dev là độ lệch tiêu chuẩn, lower là đường ray dưới.

Thường mult được đặt là 2, đại diện cho đường ray dưới là một chênh lệch tiêu chuẩn.

Điều kiện lọc

Chiến lược này bao gồm hai điều kiện lọc:

Bộ lọc thực thể K Sử dụng kích thước thực thể nbody và giá trị trung bình abody, chỉ khi nbody lớn hơn một nửa abody mới tạo ra tín hiệu giao dịch.

Bộ lọc màu Khi kết thúc k-line ((close > open), không làm nhiều lần. Đây là cách để tránh hbox head bị phá vỡ.

Tín hiệu giao dịch

Tín hiệu đa tần được tạo ra khi đáp ứng các điều kiện sau:

low < lower  // 价格突破下轨
close < open or usecol == false // 色彩过滤
nbody > abody / 2 or usebod == false // 实体过滤

Khi kích thước của thực thể lớn hơn một lần nữa so với một nửa giá trị trung bình, tạo ra vị thế bằng phẳng:

close > open and nbody > abody / 2

Quản lý vị trí

Chiến lược tự động tính toán số lượng giao dịch để tăng chỉ số:

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

Kiểm soát rủi ro

Điều kiện năm, tháng, ngày tham gia, giới hạn giao dịch chỉ trong phạm vi ngày được chỉ định:

when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

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

Khu vực giao dịch động

Brin theo đường ray là một vùng hỗ trợ năng động, có thể nắm bắt cơ hội phục hồi sau xu hướng thị trường.

Cơ chế lọc kép

Kết hợp với thực thể K-line và phán đoán màu sắc, có hiệu quả trong việc lọc các đột phá giả.

Tự động quản lý vị trí

Các vị trí tăng theo chỉ số đến 100%, tự động quản lý rủi ro.

Chỉ định thời gian giao dịch

Thiết lập phạm vi ngày để giảm rủi ro của biến động thị trường tại một thời điểm nhất định.

Rủi ro chiến lược

Thời gian trống quá lâu

Khi thị trường là thị trường bò kéo dài, đường ray trung và đường ray trên của Brin nhanh chóng di chuyển, dễ bị trống quá lâu.

Giải pháp

Bạn có thể kết hợp các chỉ số xu hướng để đánh giá, tạm dừng chiến lược khi đường trung và dài được đánh giá là thị trường bò, tránh vị trí trống quá dài.

Sự đột phá thất bại

Sau khi phá vỡ đường ray, có thể có sự điều chỉnh lại và thử lại đường ray.

Giải pháp

Thêm đường dừng lỗ, dừng một tỷ lệ nhất định bên dưới hỗ trợ. hoặc thêm logic phán đoán thất bại thử lại, dừng nhanh.

Tối ưu hóa chiến lược

Thêm logic dừng lỗ

Đặt điểm dừng dưới mức hỗ trợ hợp lý, dựa trên dữ liệu đo đạc.

Tối ưu hóa tham số điều kiện lọc

Điều chỉnh chu kỳ abody của bộ lọc thực thể, sử dụng bộ lọc COLOR, v.v.; tìm các tham số tối ưu nhất.

Xác định xu hướng

Tăng khả năng đánh giá xu hướng đường dài và đường trung bình, dừng chiến lược khi đánh giá thị trường bò. Giảm thời gian trống.

Tóm tắt

Chiến lược này kết hợp với sự hỗ trợ của Brin, thiết kế các logic chiến lược của bộ lọc thực thể, bộ lọc màu sắc và giao dịch đột phá để tìm cơ hội bounce có xác suất cao. Trong ứng dụng thực tế, các tham số có thể được tối ưu hóa liên tục dựa trên kết quả phản hồi và thêm các mô-đun đánh giá dừng lỗ và xu hướng để kiểm soát rủi ro, để có được hiệu suất tốt hơn.

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

//Noro
//2018

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

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
showar = input(false, defval = false, title = "Show Arrows")
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")

//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false

//Signals
up1 = low < lower and (close < open or usecol == false) and body
exit = close > open and nbody > abody / 2

//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)

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

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, 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) or exit
    strategy.close_all()