Sự kết hợp chiến lược đa yếu tố

Tác giả:ChaoZhang, Ngày: 2023-10-26 15:18:34
Tags:

img

Đây là bài viết 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 kết hợp nhiều yếu tố để tạo thành một chiến lược giao dịch toàn diện. Nó nhằm mục đích tận dụng lợi thế của các yếu tố khác nhau, bao gồm:

  1. Stoch.RSI - Stochastic RSI
  2. RSI - Chỉ số sức mạnh tương đối
  3. Chiến lược đôi - Kết hợp Stochastic và RSI
  4. CM Williams Vix Fix - Tìm ra đáy thị trường
  5. DMI - Chỉ số chuyển động theo hướng

Bằng cách kết hợp nhiều yếu tố, nó tìm cách tận dụng điểm mạnh của mỗi yếu tố và giảm rủi ro liên quan đến việc dựa vào một yếu tố duy nhất.

Chiến lược logic

Các chỉ số kỹ thuật chính được sử dụng trong chiến lược này là:

  1. Stoch.RSI- Một bộ dao động ngẫu nhiên được áp dụng cho các giá trị RSI thay vì giá.

  2. RSI- Chỉ số sức mạnh tương đối, chỉ số giá mua quá mức / giá bán quá mức.

  3. Chiến lược đôi- Kết hợp Stochastic và RSI cho các tín hiệu giao dịch. Mua khi Stochastic %K vượt dưới %D và RSI vượt dưới mức bán quá mức. Bán khi ngược lại xảy ra.

  4. CM Williams Vix Fix- Tính toán phạm vi tỷ lệ biến động giá trong thời gian xem lại.

  5. DMI- Chỉ số chuyển động theo hướng. Sử dụng chênh lệch +DI/-DI để xác định hướng / sức mạnh của xu hướng.

Bằng cách tích hợp các tín hiệu từ các chỉ số này, chiến lược cung cấp một hệ thống mạnh mẽ hơn để xác định xu hướng và điểm chuyển đổi.

Ưu điểm

  • Đa dạng hóa thông qua nhiều yếu tố, bù đắp điểm yếu cá nhân
  • Cung cấp cả tín hiệu theo xu hướng và đảo ngược trung bình
  • Xác định mức mua/bán quá mức và đảo ngược
  • Các thông số tối ưu hóa phù hợp với các chế độ thị trường khác nhau
  • Tích hợp bộ lọc hướng xu hướng / sức mạnh

Rủi ro

  • Độ bền tổng thể của các hệ thống đa yếu tố vẫn chưa được chứng minh
  • Sự dư thừa tiềm năng giữa một số chỉ số
  • Ưu tiên không rõ ràng giữa các tín hiệu xung đột
  • Chế độ điều chỉnh tham số đòi hỏi phải kiểm tra kỹ lưỡng
  • Thời gian giữ dài có thể hoạt động kém

Tăng cường

  • Chế độ lọc / tối ưu hóa bộ chỉ số hơn nữa
  • Điều chỉnh các tham số để phù hợp với thị trường mục tiêu
  • Thiết lập các quy tắc nhập cảnh/ra khỏi rõ ràng
  • Bao gồm dừng lỗ, lấy lợi nhuận để kiểm soát rủi ro
  • Tác động của thời gian giữ thử nghiệm đối với hiệu suất

Tóm lại

Chiến lược này kết hợp các điểm mạnh của Stoch.RSI, RSI, Double Strategy, CM Williams Vix Fix và DMI. Nó cung cấp các tín hiệu toàn diện hơn nhưng cũng làm phức tạp tối ưu hóa tham số. Các cải tiến hơn nữa xung quanh tối ưu hóa các tham số, lọc các yếu tố độc đáo và xác định các quy tắc giao dịch có thể cải thiện độ bền.


/*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")

Thêm nữa