Chiến lược giao dịch định lượng kết hợp nhiều chỉ số

Tác giả:ChaoZhang, Ngày: 2024-01-24 15:10:41
Tags:

img

Tổng quan

Chiến lược này sử dụng ba chỉ số kỹ thuật về giá cổ phiếu, RSI, StochRSI và Bollinger Bands, và kết hợp các điều kiện thời gian và hướng giao dịch để xác định tín hiệu mua và bán cho các chiến lược giao dịch định lượng.

Nguyên tắc

Khi chỉ số RSI thấp hơn khu vực dưới và đường StochRSI K vượt qua trên đường D, nó được coi là tín hiệu mua.

Khi chỉ số RSI vượt quá khu vực trên và đường StochRSI K vượt qua dưới đường D, nó được coi là tín hiệu bán.

Chỉ số RSI đánh giá liệu giá cổ phiếu có bị mua quá mức hay bán quá mức, StochRSI đánh giá đà tăng của giá cổ phiếu, và Bollinger Bands đánh giá liệu giá cổ phiếu có chạy ở mức cao và rẻ hay không. Nhiều chỉ số kết hợp để xác định mua và bán.

Phân tích lợi thế

Đây là một chiến lược kết hợp nhiều chỉ số với phạm vi rộng của các chỉ số và cơ sở đánh giá toàn diện.

Các hạn chế điều kiện thời gian được thêm vào trước khi đặt lệnh để tránh rủi ro lớn hơn trong các khoảng thời gian cụ thể.

Bằng cách kết hợp các đánh giá của nhiều chỉ số, nhiều loại xu hướng có thể được phù hợp để cải thiện hiệu quả của chiến lược.

Phân tích rủi ro

Chiến lược dựa chủ yếu trên ba loại chỉ số. Nếu chỉ số cung cấp một tín hiệu sai, chiến lược sẽ gây ra tổn thất. Các chỉ số nên xác minh lẫn nhau và không thể hoàn toàn dựa vào một chỉ số nhất định. Ví dụ, dao động RSI trong một khoảng thời gian nhất định sẽ làm tăng khả năng phát ra tín hiệu sai.

Các điều kiện đánh giá thời gian được thêm vào chiến lược cũng có thể thiếu các điều kiện thị trường thuận lợi.

Nếu lựa chọn cổ phiếu không phù hợp, ví dụ như cổ phiếu có tác dụng phóng đại nghiêm trọng, tính hợp lệ của các chỉ số này sẽ giảm đáng kể.

Tối ưu hóa

  1. Tăng các biện pháp kiểm soát rủi ro như rút tiền tối đa để hạn chế tổn thất.

  2. Điều chỉnh các thông số của chỉ số để phù hợp hơn với các cổ phiếu được chọn. Ví dụ, tăng tốc các thông số RSI để phát hiện các thay đổi giá nhanh hơn.

  3. Tăng các cơ chế lọc, chẳng hạn như đình chỉ giao dịch khi giá cổ phiếu ở giữa Bollinger Band để tránh biến động điều kiện thị trường và ngừng đặt hàng gần mở và đóng để tránh rủi ro khoảng cách.

  4. Lựa chọn cổ phiếu có thể đề cập đến các yếu tố cơ bản để tránh cổ phiếu có gian lận tài chính nghiêm trọng.

Tóm lại

Đây là một chiến lược chỉ số kỹ thuật đa biến điển hình với sự kết hợp cân bằng các chỉ số và phạm vi bảo hiểm rộng rãi. Đồng thời, các điều kiện đặt hàng nghiêm ngặt, có thể lựa chọn hiệu quả cổ phiếu để đạt được lợi nhuận, và việc rút sẽ được kiểm soát trong một phạm vi nhất định. Thông qua việc tối ưu hóa các chỉ số và tham số, nó có thể thích nghi tốt hơn với thị trường. Đồng thời tăng cơ chế kiểm soát rủi ro để giảm thiểu rủi ro để tiếp tục cải thiện sự ổn định và độ tin cậy của chiến lược.


/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("RSI+STOCHRSI+BB Strategy", overlay=true)
lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
price = close
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

bblength = input(50)
bbupmult =input(1.5,title="Multiplier for BB Upper Band")
bblowmult = input(1.5,title="Multiplier for BB Lower Band")

basis =  sma(close,bblength)

devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)


yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  ( crossover(k,d)) and ( crossover(vrsi,overSold) or vrsi<overSold)  and (  (price<lower) or crossover(price,lower) ) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and  ( (price>upper) or crossunder(price,upper) )) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Thêm nữa