Chiến lược theo dõi xu hướng sóng được cải thiện

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

img

Tổng quan: Đây là một chiến lược theo xu hướng sử dụng bộ dao động xu hướng sóng để xác định xu hướng. Nó tính toán các đường trung bình động theo cấp số nhân của giá trung bình và sự khác biệt giá tuyệt đối để vẽ đường xu hướng sóng.

Chiến lược logic:

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

  2. Tính toán EMA thời gian n của ap để có được esa

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

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

  5. Tính toán EMA n2-thời gian của ci để có được đường xu hướng sóng cuối cùng tci, tức là wt1

  6. Tính toán SMA 4 giai đoạn của wt1 để có được wt2

  7. Phân tích mua quá mức/bán quá mức đường thẳng obLevel1/2 và osLevel1/2

  8. Tạo tín hiệu mua khi wt1 vượt qua obLevel2; tạo tín hiệu bán khi wt1 vượt dưới osLevel2

  9. Thêm trung bình di chuyển emaFilter và dung lượng bộ lọc volumeFilter như bộ lọc để tránh tín hiệu sai

  10. Setting take profit/stop loss sau khi tham gia vào các vị trí exit

Ưu điểm:

  1. Đường xu hướng sóng xử lý tốt các chuyển đổi xu hướng / ngược xu hướng

  2. Độ tin cậy được cải thiện thông qua bộ lọc kép của trung bình động và khối lượng

  3. Nhiều tham số tránh hạn chế của chỉ số duy nhất

  4. Lưu ý các chi tiết về các chi tiết khác.

Rủi ro và giới hạn:

  1. Lựa chọn các thông số 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 cuối cùng về các thông số tối ưu

  3. Bỏ qua các điều kiện thị trường rộng lớn hơn

  4. Rủi ro của các loại cưa chích ở các thị trường giới hạn phạm vi/chất lỏng

  5. Thiếu các quy tắc thoát trừ lấy lợi nhuận / dừng lỗ

Cơ hội gia tăng:

  1. Các thông số thử nghiệm trên các khung thời gian/tài sản để tìm ra các giá trị tối ưu

  2. Bao gồm các chỉ số biến động để tránh các chế độ biến động thấp

  3. Thêm các chỉ số như RSI để cải thiện độ chính xác tín hiệu

  4. Xây dựng mô hình học máy để tìm các thông số phù hợp tối ưu

  5. Cải thiện các bước ra bằng cách dừng lại hoặc các bước ra dựa trên sự kiện biến động

Kết luận:

Đây là một chiến lược theo xu hướng kết hợp chỉ số xu hướng sóng với các bộ lọc bổ sung. Nó tận dụng khả năng của đường xu hướng sóng để xác định chuyển đổi xu hướng, sử dụng các bộ lọc trung bình động và khối lượng để tránh tín hiệu sai, và nhằm mục đích nắm bắt hầu hết các xu hướng trung hạn / dài hạn. Lợi nhuận / dừng lỗ được sử dụng để kiểm soát rủi ro. Có cơ hội đáng kể để cải thiện hiệu suất trên nhiều công cụ và khung thời gian hơn bằng cách tối ưu hóa các thông số, thêm nhiều chỉ số và các kỹ thuật như học máy.


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




Thêm nữa