Cải thiện các chiến lược theo dõi sóng


Ngày tạo: 2024-01-31 15:35:41 sửa đổi lần cuối: 2024-01-31 15:35:41
sao chép: 0 Số nhấp chuột: 669
1
tập trung vào
1617
Người theo dõi

Cải thiện các chiến lược theo dõi sóng

Tóm tắt: Đây là một chiến lược theo dõi xu hướng sử dụng chỉ số sóng. Nó có được một đường sóng bằng cách tính toán đường trung bình di chuyển chỉ số của giá trung bình và đường trung bình di chuyển của chênh lệch giá tuyệt đối.

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

  1. Tính toán giá trung bình ap = ((giá cao nhất + giá thấp nhất + giá đóng cửa) / 3

  2. Tính toán EMA của ap trong chu kỳ n1 để có được esa

  3. Tính toán EMA chu kỳ n1 của sự khác biệt tuyệt đối giữa ap và esa, để có được d

  4. Tính toán đường sóng: ci = ((ap-esa) / ((0.015*d)

  5. Tính EMA của chu kỳ n2 ci, và nhận được dòng sóng cuối cùng tci, tức là wt1

  6. Tính toán SMA 4 chu kỳ của wT1 để có được wT2

  7. Hình vẽ đường ngang của vùng mua và bán quá mức obLevel 12 và osLevel 12

  8. Tín hiệu mua được tạo ra khi wt1 đi qua dây obLevel 2; Tín hiệu bán được tạo ra khi wt1 đi qua osLevel 2

  9. Thêm đường trung bình emaFilter và khối lượng giao dịch volumeFilter làm điều kiện lọc để tránh tín hiệu sai

  10. Cài đặt Stop Loss Ratio sau khi nhập, thoát khỏi vị trí

Phân tích lợi thế:

  1. Dòng sóng xử lý chuyển đổi đa không gian tốt hơn, có thể nắm bắt xu hướng hiệu quả

  2. Kết hợp với đường trung bình và lọc kép khối lượng giao dịch, độ tin cậy cao

  3. Sử dụng tính toán đa nhóm tham số, tránh sự hạn chế của chỉ số đơn

  4. Cài đặt Stop Loss, có thể khóa một phần lợi nhuận, kiểm soát rủi ro hiệu quả

Rủi ro và nhược điểm:

  1. Chọn tham số trong một số trường hợp có thể dẫn đến hiệu suất kém hoặc quá phù hợp

  2. Không có hướng dẫn rõ ràng về lựa chọn tham số tối ưu, cần thử và sai

  3. Không bao gồm các điều kiện thị trường rộng hơn trong tín hiệu

  4. Rủi ro của hiệu ứng pháo hoa nếu sử dụng trong phạm vi hạn chế hoặc thị trường biến động

  5. Không có quy tắc rút ra ngoài lợi nhuận/giảm lỗ

Định hướng tối ưu hóa:

  1. Kiểm tra các tập hợp tham số trên nhiều khung thời gian và tài sản để tìm ra giá trị tối ưu

  2. Kết hợp với chỉ số biến động để tránh tín hiệu trong thời gian biến động thấp

  3. Thêm các chỉ số bổ sung như RSI để tăng độ chính xác của tín hiệu

  4. Xây dựng mô hình học máy để tìm các tham số tối ưu cho một tài sản cụ thể

  5. Tăng cường rút lui bằng cách thêm theo dõi dừng lỗ hoặc rút lui dựa trên sự kiện mở rộng biến động đột ngột

Tóm lại:

Đây là một chiến lược kết hợp đường sóng và thiết kế chỉ số hỗ trợ. Nó sử dụng đường sóng để xác định hiệu quả chuyển đổi xu hướng, được hỗ trợ bởi đường trung bình và lọc khối lượng giao dịch để tránh tín hiệu sai, có thể lấy hầu hết xu hướng đường dài.

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

//@version=5
strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false)

// Paramètres
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-65, title="Over Sold Level 1")
osLevel2 = input(-60, title="Over Sold Level 2")
takeProfitPercentage = input(1, title="Take Profit (%)")
stopLossPercentage = input(0.50, title="Stop Loss (%)")

// Calculs
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

// Tracé des lignes
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)

// Tracé de la différence entre wt1 et wt2 en bleu
hline(0, "Zero Line", color=color.gray)

// Conditions d'entrée long et court
longCondition = ta.crossover(wt1, obLevel2)
shortCondition = ta.crossunder(wt1, osLevel2)

// Tracé des signaux d'achat et de vente
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Conditions d'entrée et de sortie
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Niveaux de prise de profit pour les positions longues et courtes
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100)

// Vérification si les niveaux de prise de profit sont atteints
longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel
shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel

// Tracé des formes de prise de profit
plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long")
plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short")

// Niveaux de stop loss pour les positions longues et courtes
longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100)
shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100)

// Vérification si les niveaux de stop loss sont atteints
longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel
shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel

// Tracé des formes de stop loss
plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long")
plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short")

// Fermeture des positions en cas de prise de profit ou de stop loss
strategy.close("Long", when=longTakeProfitReached or longStopLossReached)
strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)