
Chiến lược này là một chiến lược theo dõi xu hướng giao dịch dựa trên chỉ số Smeared Variable Channel Index (Smeared VCI) củavitelot. Chiến lược này kết hợp phán đoán xu hướng của đường trung bình di chuyển và phán đoán mua quá mức của chỉ số kênh biến đổi để nắm bắt hướng xu hướng chính của giá.
Chiến lược này sử dụng chỉ số Smeared VCI củavitelot để đánh giá xu hướng. Chỉ số Smeared VCI được xử lý trơn tru dựa trên chỉ số VCI. Nó bao gồm ba tham số: EMA nhanh, EMA chậm và chu kỳ trơn tru.
Trong chiến lược, bạn đặt ra hai điều kiện:
Smeared VCI trên đi qua Trigger line để làm nhiều tín hiệu; dưới đi qua để làm trống
Chỉ giao dịch trong cửa sổ thời gian tra cứu
Khi cả hai điều kiện được đáp ứng cùng một lúc, thực hiện hoạt động tăng hoặc giảm giá. Hạ giá khi điều kiện dừng lỗ hoặc tín hiệu đảo ngược xuất hiện.
Chiến lược này có những ưu điểm sau:
Sử dụng các chỉ số theo dõi xu hướng để theo dõi xu hướng hiệu quả
Thêm xử lý trơn để giảm tín hiệu giả
Sử dụng đo thời gian cửa sổ để kiểm tra các hoạt động trong một khoảng thời gian nhất định
Thiết lập điểm dừng để kiểm soát rủi ro
Sử dụng tham số chỉ số để đánh giá nhiều không gian, quy tắc đơn giản và rõ ràng
Chiến lược này cũng có một số rủi ro:
Có thể đánh giá xu hướng sai và gây thiệt hại
Thiết lập tham số chỉ số không phù hợp có thể dẫn đến lợi nhuận kém
Cài đặt điểm dừng quá nhỏ có thể gây ra lỗ hổng nhỏ
Các cửa sổ thời gian phản hồi không hợp lý có thể dẫn đến sự lệch lạc trong kết quả thử nghiệm
Chuyển đổi đa không gian quá thường xuyên có thể gây ra áp lực chi phí giao dịch
Chiến lược này có thể được tối ưu hóa bằng cách:
Kiểm tra các tổ hợp tham số khác nhau để tìm ra tham số tốt nhất
Sử dụng các chỉ số khác để đánh giá hỗ trợ để tăng độ chính xác
Tối ưu hóa thuật toán dừng lỗ, thực hiện theo dõi động dừng lỗ
Tối ưu hóa điều kiện mở vị trí, tránh giao dịch thường xuyên
Kiểm tra thời gian dài hơn để xác minh tính ổn định của chiến lược
Kết hợp với các yếu tố khác như khối lượng giao dịch, để tăng độ chính xác của quyết định
Chiến lược này có khả năng theo dõi xu hướng, nhưng cũng có một số rủi ro. Bằng cách tối ưu hóa tham số, tối ưu hóa lỗ hổng và thêm các điều kiện phụ trợ, chiến lược có thể được cải thiện hơn nữa để 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)