Chiến lược này là một chiến lược theo xu hướng dựa trên chỉ số kênh biến đổi Smeared (Smeared VCI) bằng vitelot. Nó kết hợp đánh giá xu hướng của các đường trung bình động và đánh giá mua quá mức / bán quá mức của VCI để nắm bắt hướng xu hướng chính của giá. Khi giá chạy vào trạng thái mua quá mức hoặc bán quá mức, các hoạt động đảo ngược được lấy lợi nhuận.
Chiến lược này sử dụng chỉ số VCI Smeared của vitelot
Có hai điều kiện được đặt ra trong chiến lược:
VCI bẩn vượt qua trên đường Trigger là tín hiệu dài, và vượt qua bên dưới là tín hiệu ngắn.
Chỉ giao dịch trong khung thời gian backtest.
Khi cả hai điều kiện được đáp ứng, vị trí dài hoặc ngắn sẽ được thực hiện.
Những lợi thế của chiến lược này là:
Sử dụng chỉ số theo xu hướng, nó có thể theo dõi xu hướng hiệu quả.
Quá trình làm mịn giảm tín hiệu sai.
Kiểm tra ngược trong một cửa sổ thời gian tập trung vào một khoảng thời gian cụ thể.
Stop loss set kiểm soát rủi ro.
Sử dụng các tham số chỉ số cho quyết định dài / ngắn làm cho các quy tắc đơn giản và rõ ràng.
Có một số rủi ro trong chiến lược này:
Sự phán đoán về xu hướng có thể sai, dẫn đến tổn thất.
Việc thiết lập các tham số chỉ số không chính xác có thể dẫn đến lợi nhuận kém.
Cài đặt stop loss quá nhỏ có thể dẫn đến việc dừng nhanh chóng.
Cửa sổ thời gian backtest không phù hợp có thể dẫn đến kết quả thử nghiệm sai lệch.
Chuyển quá thường xuyên dài / ngắn có thể gây ra áp lực ủy quyền.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu.
Sử dụng các chỉ số khác để xác nhận để cải thiện độ chính xác.
Tối ưu hóa thuật toán dừng lỗ để đạt được dừng lỗ theo dõi năng động.
Tối ưu hóa điều kiện nhập cảnh để tránh giao dịch quá mức.
Kiểm tra các cửa sổ thời gian dài hơn để xác minh tính ổn định.
Bao gồm các yếu tố khác như khối lượng để cải thiện độ chính xác quyết định.
Tóm lại, đây là một chiến lược theo xu hướng tương đối đơn giản. Nó sử dụng chỉ số Smeared VCI để xác định hướng xu hướng và các vị trí mở khi các tín hiệu giao dịch được tạo ra. Rủi ro được kiểm soát bằng cách dừng lỗ. Chiến lược có khả năng theo xu hướng nhưng cũng có một số rủi ro. Những cải tiến hơn nữa có thể được thực hiện thông qua tối ưu hóa tham số, tối ưu hóa lỗ dừng và thêm các điều kiện xác nhận để làm cho nó trở thành một hệ thống giao dịch ổn định và đáng tin cậy.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Smeared VCI Backtest", overlay=false, shorttitle="SVCI Backtest", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5) // Smeared Variability Channel Index // a variation of the VCI indicator of the same author. // The orange line over the lime line is bullish; // The lime line over the orange one is bearish. // // vitelot/yanez/Vts // Feb 2019 // src = close ep1 = input(5, minval=1, title="Fast EMA period") ep2 = input(13, minval=2, title="Slow EMA period") sm = input(34, minval=1, title="Smearing period") tp = input(13, minval=1, title="Trigger line period") fixedSL = input(title="SL Activation", defval=300) trailSL = input(title="SL Trigger", defval=1) fixedTP = input(title="TP Activation", defval=150) trailTP = input(title="TP Trigger", defval=1) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 19, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2030, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window startTimeOk() => time >= start and time <= finish ? true : false // create function "within window of time" if statement true atrP = 96 e1 = ema(src,ep1) e2 = ema(src,ep2) vci = (e1-e2)/atr(atrP) svci = sma(vci,sm) t = sma(svci,tp) plot(svci, color=lime, linewidth=3, transp=0, title="Smeared VCI") plot(t, color=orange, linewidth=3, transp=0, title="Trigger line") hline(0, title="Reference line") long = crossover(svci,t) short = crossover(t,svci) // === STRATEGY - LONG POSITION EXECUTION === strategy.entry("Long", strategy.long, when= long and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= short) // === STRATEGY - SHORT POSITION EXECUTION === strategy.entry("Short", strategy.short, when= short and startTimeOk()) strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) strategy.exit("Exit", when= long)