Xu hướng sau chiến lược giao dịch chỉ số năng lượng

Tác giả:ChaoZhang, Ngày: 2023-11-15 17:36:46
Tags:

img

Tổng quan

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 logic

Chiến lược này sử dụng chỉ số VCI Smeared của vitelot để xác định hướng xu hướng. Chỉ số VCI Smeared là một chỉ số VCI trơn tru (Chỉ số kênh biến đổi). Nó bao gồm ba thông số: EMA nhanh, EMA chậm và thời gian trơn tru. Khi EMA nhanh trên EMA chậm, nó tăng, nếu không nó giảm. Quá trình trơn tru lọc ra một số tiếng ồn.

Có hai điều kiện được đặt ra trong chiến lược:

  1. 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.

  2. 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.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Sử dụng chỉ số theo xu hướng, nó có thể theo dõi xu hướng hiệu quả.

  2. Quá trình làm mịn giảm tín hiệu sai.

  3. 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ể.

  4. Stop loss set kiểm soát rủi ro.

  5. 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.

Phân tích rủi ro

Có một số rủi ro trong chiến lược này:

  1. Sự phán đoán về xu hướng có thể sai, dẫn đến tổn thất.

  2. 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.

  3. Cài đặt stop loss quá nhỏ có thể dẫn đến việc dừng nhanh chóng.

  4. 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.

  5. Chuyển quá thường xuyên dài / ngắn có thể gây ra áp lực ủy quyền.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu.

  2. Sử dụng các chỉ số khác để xác nhận để cải thiện độ chính xác.

  3. Tối ưu hóa thuật toán dừng lỗ để đạt được dừng lỗ theo dõi năng động.

  4. Tối ưu hóa điều kiện nhập cảnh để tránh giao dịch quá mức.

  5. Kiểm tra các cửa sổ thời gian dài hơn để xác minh tính ổn định.

  6. 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

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)

Thêm nữa