Kết hợp chiến lược đa yếu tố


Ngày tạo: 2023-10-26 15:18:34 sửa đổi lần cuối: 2023-10-26 15:18:34
sao chép: 0 Số nhấp chuột: 429
1
tập trung vào
1178
Người theo dõi

Kết hợp chiến lược đa yếu tố

Đây là bài phân tích chiến lược chi tiết mà tôi đã viết dựa trên mã chiến lược giao dịch mà bạn cung cấp:

Tổng quan

Chiến lược này là một sự kết hợp của nhiều yếu tố, nhằm sử dụng lợi thế của các yếu tố khác nhau để xây dựng một chiến lược giao dịch tổng hợp.

  1. Stoch.RSI - chỉ số ngẫu nhiên trung bình di chuyển trơn
  2. RSI - chỉ số tương đối mạnh
  3. Double Strategy - Chiến lược kép giữa chỉ số ngẫu nhiên và RSI
  4. CM Williams Vix Fix - Phục hồi biến động của Williams, tìm kiếm đáy thị trường
  5. DMI - Chỉ số xu hướng

Bằng cách kết hợp nhiều yếu tố, bạn có thể tận dụng lợi thế của từng yếu tố để có được nhiều cơ hội giao dịch hơn và giảm nguy cơ phụ thuộc vào một yếu tố đơn lẻ.

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

Chiến lược này chủ yếu sử dụng các chỉ số kỹ thuật sau:

  1. Stoch.RSI- Chỉ số RSI ngẫu nhiên, kết hợp các ưu điểm của RSI và chỉ số ngẫu nhiên. Nó sử dụng giá trị RSI như một đầu vào cho chỉ số ngẫu nhiên để xác định thị trường có đang mua quá mức hay bán quá mức. Khi đường %K đi qua đường %D từ dưới vùng mua quá mức, làm thêm; Khi đường %K đi qua đường %D từ trên vùng bán quá mức, làm trống.

  2. RSI- Chỉ số tương đối mạnh, đánh giá tình trạng quá mua quá bán của thị trường. RSI lớn hơn 70 là khu vực quá mua, nhỏ hơn 30 là khu vực quá bán. RSI dao động trong khoảng 30-70, đại diện cho thị trường ở trạng thái sắp xếp ngang.

  3. Double Strategy- Chiến lược kép kết hợp sử dụng chỉ số ngẫu nhiên và RSI. Khi chỉ số ngẫu nhiên% K đường đi xuyên qua% D đường từ dưới vùng bán tháo và RSI đi xuyên qua dưới vùng bán tháo, làm nhiều; Khi chỉ số ngẫu nhiên% K đường đi xuyên qua% D đường từ vùng mua tháo và RSI đi xuyên qua vùng mua tháo, làm trống.

  4. CM Williams Vix Fix- Chỉ số sửa chữa tỷ lệ dao động của Williams, bằng cách tính toán phạm vi phần trăm của tỷ lệ dao động của giá trong khoảng thời gian gần đây, để xác định xem thị trường có ở điểm đảo ngược hay không.

  5. DMI- Chỉ số xu hướng, để đánh giá xu hướng của thị trường bằng cách tính toán chênh lệch giữa + DI và - DI. Chỉ số ADX có thể được sử dụng để đánh giá cường độ của xu hướng.

Việc sử dụng các chỉ số này để đánh giá xu hướng thị trường và điểm mua và bán từ các góc độ khác nhau có thể giúp tăng sự ổn định và tỷ lệ thành công của chiến lược.

Lợi thế chiến lược

  • Các nhà nghiên cứu cho rằng: “Sự phát triển của nền kinh tế Việt Nam là một bước tiến quan trọng trong việc phát triển nền kinh tế toàn cầu”.
  • Các tín hiệu giao dịch khác nhau bao gồm xu hướng, đảo ngược và nhiều cơ hội hơn;
  • Đồng thời, đánh giá các khu vực quá mua và quá bán, phát hiện kịp thời sự hình thành và đảo ngược của tình trạng cực đoan;
  • Sử dụng các chỉ số được tối ưu hóa theo tham số để phù hợp hơn với các môi trường thị trường khác nhau;
  • Kết hợp các chỉ số xu hướng để đánh giá cường độ của xu hướng, tránh giao dịch ngược.

Phân tích rủi ro

  • Một sự kết hợp nhiều yếu tố, chiến lược tổng thể cần được chứng minh.
  • Một số chỉ số có vấn đề đồng nhất hóa, có thể tối ưu hóa hơn nữa sự kết hợp;
  • Khi các tín hiệu đa không gian xuất hiện cùng một lúc, cần phải có nguyên tắc rõ ràng về lựa chọn phương hướng chiến lược;
  • Cài đặt tham số cần tối ưu hóa đo đạc nghiêm ngặt, không phù hợp để thay đổi tham số tùy ý;
  • Có thể không hiệu quả trong thời gian dài và cần phải rút ra kịp thời.

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

  • Xác định thêm các chỉ số trong danh mục, giữ nguyên các yếu tố độc đáo;
  • Tối ưu hóa các thiết lập tham số cho mỗi chỉ số để phù hợp hơn với thị trường mục tiêu;
    • Xây dựng các nguyên tắc rõ ràng về nhập cảnh và xuất cảnh;
  • Phương pháp kiểm soát rủi ro kết hợp với các phương pháp như dừng lỗ, thu hồi lợi nhuận;
  • Kiểm tra ảnh hưởng của thời gian nắm giữ khác nhau đối với hiệu suất.

Tóm tắt

Chiến lược này sử dụng lợi thế của nhiều chỉ số kỹ thuật để tạo ra tín hiệu giao dịch thông qua các yếu tố như Stoch.RSI, RSI, Chiến lược đôi, CM Williams Vix Fix và DMI. Nó cung cấp cơ sở phán đoán toàn diện và ổn định hơn, cũng làm cho việc tối ưu hóa tham số chiến lược trở nên phức tạp hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-10-18 00:00:00
end: 2023-10-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


     //////////////////////////////////////////////////////////////////////
    ////  STOCHASTIC_RSI+RSI+DOUBLE_STRATEGY+CM_WILLIAMS_VIX_FIX+DMI  ////
   //////////////////////////////////////////////////////////////////////


//  This is a simple combination of integrated and published scripts, useful 
//  if you don't have a PRO account and want to bypass the 3 indicator limit. 
//  It includes:
//  1) Stoch.RSI
//  2) Relative strenght index
//  3) Stochastic + RSI, Double Strategy (by ChartArt)
//  4) CM_Williams_Vix_Fix Finds Market Bottoms (by ChrisMoody)
//  5) Directional Movement Index (DMI)
//  For more details about 3) and 4) check the original scripts.


//@version=3

strategy(title="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI", shorttitle="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI")


///STOCH.RSI///
smoothK = input(3, minval=1, title="Stochastic %K Smoothing")
smoothD = input(3, minval=1, title="Stochastic %K Moving Average")
lengthRSI = input(14, minval=1, title="RSI Lenght")
lengthStoch = input(14, minval=1, title="Stochastic Lenght")
RSIprice = close
rsi1 = rsi(RSIprice, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot(k, color=blue, linewidth=2)
plot(d, color=silver, linewidth=2)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=purple, transp=78)


///RSI///
up = rma(max(change(RSIprice), 0), lengthRSI)
down = rma(-min(change(RSIprice), 0), lengthRSI)
rsi2 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi2, color=fuchsia, linewidth=2)
// band0 = hline(70, linestyle=dotted)
// band1 = hline(30, linestyle=dotted)
// fill(band0, band1, color=purple, transp=100)


///OVERBOUGHT-OVERSOLD STRATEGY///
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
ks = sma(stoch(close, high, low, lengthStoch), smoothK)
ds = sma(k, smoothD)
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
vrsi = rsi(RSIprice, lengthRSI)
if (not na(ks) and not na(ds))
    if (crossover(ks,ds) and k < StochOverSold)
        if (not na(vrsi)) and (crossover(vrsi, RSIOverSold))
            strategy.entry("LONG", strategy.long, comment="LONG")
if (crossunder(ks,ds) and ks > StochOverBought)
    if (crossunder(vrsi, RSIOverBought))
        strategy.entry("SHORT", strategy.short, comment="SHORT")
 
 
///CM WILLIAMS VIX FIX///
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bollinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range (Based on Percentile and LookBack Period)?")
sd = input(false, title="Show Standard Deviation Line?")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(wvf, title="Williams Vix Fix", style=columns, linewidth = 4, color=col, transp=85)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=line, linewidth = 3, color=aqua)


///DIRECTIONAL MOVEMENT INDEX///
len3 = input(14, minval=1, title="DI Length")
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)
up3 = change(high)
down3 = -change(low)
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)
trur3 = rma(tr, len3)
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)
sum3 = plus3 + minus3
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3)
plot(plus3, color=green, style=circles, linewidth=2, title="+DI")
plot(minus3, color=red, style=circles, linewidth=2, title="-DI")
plot(adx3, color=aqua, style=circles, linewidth=3, title="ADX")