
Chiến lược này được gọi là chiến lược giao dịch định lượng dựa trên chỉ số TSI và trung bình di động của Hull. Ý tưởng chính là kết hợp chỉ số TSI và trung bình di động của Hull để xác định xu hướng trong cổ phiếu, tiền kỹ thuật số hoặc ngoại hối và tạo ra tín hiệu giao dịch khi xu hướng bắt đầu.
Chiến lược này sử dụng chỉ số TSI để xác định xu hướng và động lực của giá. Chỉ số TSI dựa trên tỷ lệ biến động của giá.
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 bằng phương tiện di chuyển có trọng lượng gấp đôi, có thể lọc hiệu quả tiếng ồn thị trường.
Đồng thời với tín hiệu của chỉ số TSI, một tín hiệu giao dịch tương ứng sẽ được tạo ra nếu Hull Moving Average cũng xác nhận xu hướng theo cùng hướng. Ngoài ra, chiến lược cũng kiểm tra hướng thực thể K-line để xác nhận xu hướng. Chỉ khi tín hiệu chỉ số, tín hiệu Hull và hướng thực thể K-line phù hợp, tín hiệu giao dịch sẽ được phát ra.
Chiến lược này kết hợp nhiều chỉ số về xu hướng, động lực và đường trung bình, có thể xác định hiệu quả sự bắt đầu của xu hướng thị trường và tránh tạo ra nhiều tín hiệu giả. Đường trung bình di chuyển kép có thể lọc một số tiếng ồn.
So với chỉ số đơn lẻ, chiến lược này có thể cải thiện đáng kể chất lượng tín hiệu bằng cách kết hợp nhiều chỉ số lọc tín hiệu. Nhiều điều kiện xác nhận cũng làm cho chiến lược có độ chắc chắn rất cao khi tạo tín hiệu.
Mặc dù chiến lược này có thể xác định hiệu quả xu hướng bắt đầu, nhưng nó có thể tạo ra một số tín hiệu sai và giao dịch quá mức khi thị trường biến động. Ngoài ra, cài đặt tham số không chính xác cũng có thể dẫn đến vị trí không cần thiết.
Để giảm rủi ro, bạn có thể điều chỉnh đúng chu kỳ trung bình di chuyển của Hull hoặc tham số TSI, hoặc có thể thêm dừng để kiểm soát tổn thất. Trong quá trình tối ưu hóa, cần chú ý đến tỷ lệ tiếng động tín hiệu để có được tham số tối ưu.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này kết hợp với chỉ số TSI và trung bình di chuyển Hull để tạo ra tín hiệu giao dịch sau khi xác định xu hướng thị trường. Chiến lược có thời gian và chất lượng tín hiệu cao. Bằng cách tối ưu hóa các tham số và kết hợp chiến lược, có thể cải thiện đáng kể khả năng lợi nhuận và giảm rủi ro. Chiến lược này phù hợp để xác định xu hướng đường dài, đặc biệt là có triển vọng ứng dụng rộng rãi trong thị trường tiền kỹ thuật số 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)