Chiến lược được đặt tên là
Cụ thể, chỉ số Động lực được sử dụng để đánh giá sự gia tốc hoặc chậm lại của chuyển động giá và thay đổi xu hướng. SuperTrend được sử dụng để đánh giá giá liệu giá có vượt qua các kênh tăng hoặc giảm và thay đổi xu hướng hay không. Sự kết hợp của cả hai có thể nắm bắt chính xác hơn các điểm đảo ngược xu hướng.
Phần chỉ số động lực
Tính toán giá trị động lượng trong N ngày của giá và tính toán động lượng trong 1 ngày của giá trị động lượng. Khi động lượng trong N ngày > 0 và động lượng trong 1 ngày > 0, đó là tín hiệu dài; khi động lượng trong N ngày < 0 và động lượng trong 1 ngày < 0, đó là tín hiệu ngắn.
Phần chỉ số SuperTrend
Tính toán giá trị ATR của giá, và vẽ đường kênh lên và đường kênh xuống dựa trên ATR. Khi giá vượt qua kênh lên từ dưới, đó là một tín hiệu dài, và khi giá vượt qua kênh xuống từ trên, đó là một tín hiệu ngắn.
Logic nhập
Lấy hoạt động AND của tín hiệu dài từ chỉ số động lượng và tín hiệu dài từ SuperTrend để tạo ra tín hiệu đầu vào dài cuối cùng khi cả hai xảy ra cùng một lúc; Lấy hoạt động AND của tín hiệu ngắn từ chỉ số động lượng và tín hiệu ngắn từ SuperTrend để tạo ra tín hiệu đầu vào ngắn cuối cùng khi cả hai xảy ra cùng một lúc.
Sử dụng các chỉ số động lực để xác định tăng tốc hoặc chậm lại của các biến động giá để nắm bắt các điểm đảo ngược xu hướng.
Sử dụng chỉ số SuperTrend để xác định các kênh đột phá giá để nắm bắt các điểm đột phá.
Việc xác minh lẫn nhau của hai loại chỉ số có thể làm giảm các tín hiệu sai và cải thiện độ chính xác của các mục.
Sự kết hợp của logic Exit của hai chỉ số cho phép theo dõi xu hướng để tránh thoát sớm.
Cài đặt tham số không chính xác của chỉ số động lượng N ngày có thể bỏ lỡ các điểm đảo ngược xu hướng.
Cài đặt tham số không chính xác của SuperTrend có thể dẫn đến vẽ kênh không chính xác và tín hiệu sai.
Việc xác minh lẫn nhau của hai chỉ số có thể bỏ lỡ một số cơ hội.
Sự kết hợp các tham số nên được điều chỉnh để tìm cặp tham số tối ưu để tối đa hóa tiềm năng của chiến lược.
Các giải pháp tương ứng:
Sử dụng phân tích đi trước để tìm các thông số tối ưu.
Thêm mô-đun tối ưu hóa tham số cho tối ưu hóa tham số thời gian thực.
Điều chỉnh logic kết hợp của hai chỉ số và xem xét toàn diện.
Thêm mô-đun tối ưu hóa tham số thích nghi để điều chỉnh thời gian thực theo điều kiện thị trường
Thêm mô hình học máy để hỗ trợ đánh giá độ chính xác của tín hiệu chỉ số
Mở rộng thêm các chỉ số để tạo thành một bộ chỉ số và sử dụng cơ chế bỏ phiếu để tạo ra các tín hiệu nhập cảnh
Sử dụng các mô hình học sâu thay vì các chỉ số truyền thống để đánh giá dựa trên dữ liệu về thời gian vào và ra
Chiến lược này kết hợp các điểm mạnh của các chỉ số Momentum và SuperTrend thông qua xác minh hai lần để cải thiện độ chính xác của các mục nhập và sử dụng các chỉ số để đánh giá thời gian thoát. So với việc sử dụng chỉ số duy nhất, nó có thể giảm tín hiệu sai và đạt được tỷ lệ thắng cao hơn. Thông qua tối ưu hóa tham số, học máy và các công nghệ mở rộng khác, vẫn còn chỗ để cải thiện hơn nữa hiệu quả chiến lược và nó xứng đáng với nghiên cứu và ứng dụng chuyên sâu.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum + SuperTrend Strategy", overlay=true) // Momentum Strategy length = input(12) price = close momentum(seria, length) => mom = seria - seria[length] mom mom0 = momentum(price, length) mom1 = momentum(mom0, 1) momLongCondition = mom0 > 0 and mom1 > 0 momShortCondition = mom0 < 0 and mom1 < 0 // SuperTrend Strategy Periods = input(10) Multiplier = input(3.0) changeATR = input(true) src = input(hl2) atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend buySignal = trend == 1 and trend[1] == -1 sellSignal = trend == -1 and trend[1] == 1 // Combined Entry Conditions longCondition = momLongCondition and buySignal shortCondition = momShortCondition and sellSignal // Strategy Entries if (longCondition) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (shortCondition) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") // Plot SuperTrend on the chart upPlot = plot(trend == 1 ? up : na, title="SuperTrend Up", color=color.green, linewidth=2) dnPlot = plot(trend == -1 ? dn : na, title="SuperTrend Down", color=color.red, linewidth=2) // Highlight the SuperTrend region fill(upPlot, dnPlot, color = trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Highlight") // Plot SuperTrend Buy/Sell signals on the chart plotshape(series=buySignal, title="SuperTrend Buy Signal", color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="SuperTrend Sell Signal", color=color.red, style=shape.triangledown, size=size.small) // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © naveen1119