Chiến lược giao dịch định lượng dựa trên chỉ số TSI và trung bình di chuyển Hull

Tác giả:ChaoZhang, Ngày: 2023-12-18 16:56:22
Tags:

img

Tổng quan

Chiến lược này được gọi là Quantitative Trading Strategy Based on TSI Indicator and Hull Moving Average. Ý tưởng chính là xác định xu hướng trong cổ phiếu, tiền điện tử hoặc ngoại hối bằng cách kết hợp chỉ số TSI và trung bình di chuyển Hull, và tạo ra các tín hiệu giao dịch khi xu hướng bắt đầu.

Chiến lược logic

Chiến lược này sử dụng chỉ số TSI để xác định xu hướng và động lực giá. Chỉ số TSI dựa trên trung bình di chuyển lỏng gấp đôi của tỷ lệ thay đổi giá. Nó tạo ra tín hiệu mua khi giá trị TSI vượt qua mức trung bình di chuyển của nó và bán tín hiệu khi vượt qua mức thấp hơn.

Chiến lược này cũng sử dụng Hull Moving Average để xác định xu hướng giá. Hull Moving Average được xây dựng với các đường trung bình động hai trọng số và có thể lọc tiếng ồn thị trường hiệu quả. Một xu hướng tăng được xác định khi đường nhanh vượt qua đường chậm, và xu hướng giảm khi vượt qua dưới.

Khi chỉ số TSI tạo ra một tín hiệu, nếu Hull Moving Average xác nhận xu hướng theo cùng một hướng, các tín hiệu giao dịch tương ứng sẽ được kích hoạt. Ngoài ra, chiến lược cũng kiểm tra hướng của thân nến để xác nhận xu hướng.

Phân tích lợi thế

Bằng cách kết hợp các chỉ số xu hướng, động lực và đường trung bình động, chiến lược này có thể xác định hiệu quả sự khởi đầu của xu hướng thị trường và tránh các tín hiệu sai quá mức.

So với các chiến lược chỉ số đơn, chiến lược này lọc tín hiệu bằng cách kết hợp nhiều chỉ số, có thể cải thiện đáng kể chất lượng tín hiệu.

Phân tích rủi ro

Mặc dù chiến lược này có thể xác định hiệu quả xu hướng bắt đầu, nó có thể tạo ra một số tín hiệu sai và giao dịch quá mức trong quá trình củng cố thị trường.

Để giảm rủi ro, các thông số thời gian thân tàu hoặc TSI có thể được điều chỉnh phù hợp. Các điểm dừng cũng có thể được thêm vào để kiểm soát tổn thất. Trong quá trình tối ưu hóa, cần phải chú ý để đảm bảo tỷ lệ tín hiệu-gọi-gọi cao cho các thông số tốt nhất.

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. Tối ưu hóa các thông số trung bình chuyển động Hull để làm mịn đường cong và lọc các tín hiệu giả
  2. Tối ưu hóa các thông số TSI để cân bằng độ nhạy và ổn định
  3. Thêm các chiến lược dừng lỗ để kiểm soát kích thước lỗ
  4. Điều chỉnh chiều dài tín hiệu để lọc tiếng ồn ngắn hạn
  5. Thử nghiệm trên các sản phẩm và khung thời gian khác nhau
  6. Bao gồm các chỉ số khác để xác minh tín hiệu

Kết luận

Chiến lược này kết hợp chỉ số TSI và trung bình chuyển động Hull để tạo ra tín hiệu giao dịch sau khi xác nhận xu hướng thị trường. Chiến lược có thời gian và chất lượng tín hiệu cao. Thông qua tối ưu hóa tham số và kết hợp chiến lược, lợi nhuận có thể được cải thiện đáng kể trong khi giảm rủi ro. Chiến lược này phù hợp để xác định xu hướng trung và dài hạn, và có triển vọng ứng dụng đầy hứa hẹn đặc biệt là trong thị trường tiền điện tử và ngoại hối.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length",  defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)

Thêm nữa