Đâ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:
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:
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.
Các chỉ số kỹ thuật chính được sử dụng trong chiến lược này là:
Stoch.RSI- Một bộ dao động ngẫu nhiên được áp dụng cho các giá trị RSI thay vì giá.
RSI- Chỉ số sức mạnh tương đối, chỉ số giá mua quá mức / giá bán quá mức.
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.
CM Williams Vix Fix- Tính toán phạm vi tỷ lệ biến động giá trong thời gian xem lại.
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.
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")