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:
Tính toán giá trung bình ap = (cao + thấp + đóng) / 3
Tính toán EMA thời gian n của ap để có được esa
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
Tính toán đường xu hướng sóng: ci = (ap - esa) / ((0.015*d)
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
Tính toán SMA 4 giai đoạn của wt1 để có được wt2
Phân tích mua quá mức/bán quá mức đường thẳng obLevel1/2 và osLevel1/2
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
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
Setting take profit/stop loss sau khi tham gia vào các vị trí exit
Ưu điểm:
Đường xu hướng sóng xử lý tốt các chuyển đổi xu hướng / ngược xu hướng
Độ 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
Nhiều tham số tránh hạn chế của chỉ số duy nhất
Lưu ý các chi tiết về các chi tiết khác.
Rủi ro và giới hạn:
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
Không có hướng dẫn cuối cùng về các thông số tối ưu
Bỏ qua các điều kiện thị trường rộng lớn hơn
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
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:
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
Bao gồm các chỉ số biến động để tránh các chế độ biến động thấp
Thêm các chỉ số như RSI để cải thiện độ chính xác tín hiệu
Xây dựng mô hình học máy để tìm các thông số phù hợp tối ưu
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)