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

Tác giả:ChaoZhang, Ngày: 2024-01-31 15:35:41
Tags:

改进波浪跟踪策略

Tóm tắt: Đây là một chiến lược theo dõi xu hướng bằng cách áp dụng các chỉ số sóng. Nó lấy ra 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 giá tuyệt đối. Chiến lược này tạo ra tín hiệu giao dịch bằng cách giám sát đường sóng giao thoa với khu vực mua quá nhiều và bán quá nhiều.

Cá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 và lấy

  3. Tính toán ap và giá trị chênh lệch tuyệt đối của ESA trong vòng n1 EMA, lấy d

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

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

  6. Tính toán SMA 4 chu kỳ của wt1 và nhận được wt2

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

  8. Tín hiệu mua được tạo ra khi wt1 đi qua obLevel2; tín hiệu bán được tạo ra khi wt1 đi qua osLevel2

  9. Thêm EmaFilter đường thẳng và VolumeFilter khối lượng giao dịch như điều kiện lọc, tránh tín hiệu sai

  10. Thiết lập tỷ lệ dừng lỗ sau khi vào và rút khỏi nắm giữ

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

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

  2. Kết hợp đường thẳng và giao dịch với độ lọc kép, độ tin cậy cao

  3. Sử dụng tính toán nhiều parameter, tránh sự hạn chế của một chỉ số duy nhất

  4. Thiết lập lệnh dừng lỗ, có thể khóa một phần lợi nhuận và kiểm soát rủi ro hiệu quả

Rủi ro và khuyết điểm:

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

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

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

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

  5. Không có quy tắc rút tiền ngoài lệnh dừng/lợi nhuận

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

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

  2. Kết hợp các chỉ số biến động để tránh các 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 tín hiệu

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

  5. Tăng khả nă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 các đường sóng và thiết kế các chỉ số phụ trợ. Nó sử dụng các tính năng của đường sóng để xác định hiệu quả các 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 các tín hiệu sai, có thể thu được hầu hết các xu hướng đường dài trung gian. Đồng thời sử dụng stop-loss để kiểm soát rủi ro.


/*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)




Nhiều hơn nữa