Chiến lược chu kỳ Els dựa trên làm mịn tín hiệu


Ngày tạo: 2024-02-19 10:42:34 sửa đổi lần cuối: 2024-02-19 10:42:34
sao chép: 2 Số nhấp chuột: 334
1
tập trung vào
1166
Người theo dõi

Chiến lược chu kỳ Els dựa trên làm mịn tín hiệu

Tổng quan

Chiến lược này thiết kế một chiến lược giao dịch vòng tròn của Els để làm mịn các tín hiệu giao dịch bằng cách tính toán các tín hiệu giá được xử lý trơn tru, kết hợp với lý thuyết chỉ số vòng tròn của Ehlers. Chiến lược này có thể lọc hiệu quả tiếng ồn thị trường và tạo ra tín hiệu giao dịch đáng tin cậy hơn.

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

  1. Các tín hiệu giá nguyên thủysrc được xử lý bằng phẳng thứ hai, để có được tín hiệu mịn.

  2. Tính toán chỉ số chu kỳ dựa trên tín hiệu mịn. Cách tính là: cycle := (1 - .5 alpha) (1 - .5 alpha) (smooth - 2 smooth[1] + smooth[2]) + 2 (1 - alpha) cycle[1] - (1 - alpha) (1 - alpha) * cycle[2]

Trong đó α là tham số mịn.

  1. Chỉ số chu kỳ được làm mịn chỉ số một giai đoạn, và kết quả là tín hiệu giao dịch cuối cùng. signal := alpha2 cycle + (1 - alpha2) nz(signal[1])

Trong đó α2 là tham số phẳng một cấp.

  1. Khi tín hiệu trên đi qua tín hiệu[1] làm nhiều hơn; khi signal đi qua signal[1] thời gian rảnh

Phân tích lợi thế chiến lược

  1. Bằng cách làm mịn các tín hiệu giá ở cấp hai, các tín hiệu giao dịch có thể được làm đáng tin cậy hơn bằng cách lọc hiệu quả tiếng ồn tần số cao.

  2. Ứng dụng lý thuyết chỉ số vòng tròn của Els, bạn có thể xác định chính xác hơn điểm chuyển đổi của xu hướng thị trường.

  3. Chỉ số một giai đoạn sẽ lọc một phần tiếng ồn trong các chỉ số tuần hoàn, tạo ra tín hiệu giao dịch đáng tin cậy hơn.

  4. Toàn bộ quy trình chiến lược là hợp lý, khoa học, có rất nhiều không gian để tối ưu hóa các tham số và màn hình thực tế hoạt động tốt.

Phân tích rủi ro

  1. Giống như các chiến lược chỉ số kỹ thuật khác, chiến lược này cũng nhạy cảm với rủi ro hệ thống của thị trường. Trong trường hợp xảy ra một sự cố thiên bạch đen lớn, có thể gây ra tổn thất lớn.

  2. Do quá trình tính toán phức tạp, thiết lập tham số không chính xác có thể gây ra sự chậm trễ trong tính toán, do đó ảnh hưởng đến hiệu quả của ổ cứng. Cần kiểm tra cẩn thận để đảm bảo rằng thiết lập tham số hợp lý về khoa học.

  3. Việc xử lý trơn tru cũng có thể dẫn đến sự chậm trễ của tín hiệu giao dịch, có thể không thể nắm bắt được các điểm biến đổi của thị trường kịp thời, do đó bỏ lỡ cơ hội. Cần cân bằng các thiết lập tham số trơn tru.

Hướng tối ưu hóa chiến lược

  1. Có thể thử nghiệm các loại thuật toán mài mòn khác nhau, chẳng hạn như mài mòn chỉ số bậc một, mài mòn đường trung bình, để tìm ra giải pháp mài mòn tối ưu.

  2. Có thể giới thiệu cơ chế điều chỉnh tham số thích ứng, điều chỉnh các tham số động theo tình hình thị trường, tăng cường tính mạnh mẽ của chiến lược.

  3. Có thể thiết kế các chiến lược dừng lỗ và dừng lại để giảm nguy cơ mất mát đơn lẻ, đồng thời khóa lợi nhuận.

  4. Mô hình học máy có thể kết hợp các mô hình khác, thực hiện các mô hình kết hợp, sử dụng các mô hình khác để lọc tín hiệu giao dịch.

Tóm tắt

Chiến lược này đã thiết kế một chiến lược giao dịch vòng tròn của Els bằng cách làm mịn tín hiệu giá và tính toán các chỉ số vòng tròn của Els. Chiến lược này có thể lọc nhiễu hiệu quả và tạo ra tín hiệu giao dịch đáng tin cậy hơn. Ngoài ra, có nhiều tham số và hiệu quả tốt.

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

//@version=3
strategy("Ehlers Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)