Chiến lược giao dịch theo chỉ báo năng lượng theo xu hướng


Ngày tạo: 2023-11-15 17:36:46 sửa đổi lần cuối: 2023-11-15 17:36:46
sao chép: 0 Số nhấp chuột: 602
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch theo chỉ báo năng lượng theo xu hướng

Tổng quan

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

Nguyên tắc chiến lược

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:

  1. Smeared VCI trên đi qua Trigger line để làm nhiều tín hiệu; dưới đi qua để làm trống

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

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

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

  2. Thêm xử lý trơn để giảm tín hiệu giả

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

  4. Thiết lập điểm dừng để kiểm soát rủi ro

  5. Sử dụng tham số chỉ số để đánh giá nhiều không gian, quy tắc đơn giản và rõ ràng

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Có thể đánh giá xu hướng sai và gây thiệt hại

  2. Thiết lập tham số chỉ số không phù hợp có thể dẫn đến lợi nhuận kém

  3. Cài đặt điểm dừng quá nhỏ có thể gây ra lỗ hổng nhỏ

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

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

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Kiểm tra các tổ hợp tham số khác nhau để tìm ra tham số tốt nhất

  2. Sử dụng các chỉ số khác để đánh giá hỗ trợ để tăng độ chính xác

  3. Tối ưu hóa thuật toán dừng lỗ, thực hiện theo dõi động dừng lỗ

  4. Tối ưu hóa điều kiện mở vị trí, tránh giao dịch thường xuyên

  5. Kiểm tra thời gian dài hơn để xác minh tính ổn định của chiến lược

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

Tóm tắt

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.

Mã nguồn chiến lược
/*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)