Đâ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:
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.
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ẻ.
Chiến lược này chủ yếu sử dụng các chỉ số kỹ thuật sau:
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.
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.
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.
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.
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.
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.
/*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")