
Chiến lược tổng hợp này sử dụng chỉ số RSI để xác định tín hiệu quá mua quá bán, Bollinger Bands để xác định giá phá vỡ để hoạt động, và hình dạng Gold Fork Dead Fork của đường cân bằng để đánh giá thị trường ở các giai đoạn khác nhau của xu hướng và đạt được lợi nhuận.
Chiến lược này bao gồm một số chỉ số:
Chỉ số RSI: Khi đường chỉ số RSI vượt qua đường mua quá mức hoặc vượt qua đường bán quá mức, hãy thực hiện các hoạt động mua hoặc bán.
Boll band: khi giá vượt qua Boll band, thực hiện hành động ngắn; khi giá rơi xuống Boll band, thực hiện hành động nhiều.
Đường trung bình: tính giá cao nhất và giá thấp nhất trong một chu kỳ nhất định (ví dụ như chu kỳ 5), khi giá cao hơn điểm cao nhất trong 5 chu kỳ gần nhất, làm nhiều; khi giá thấp hơn điểm thấp nhất trong 5 chu kỳ gần nhất, làm trống.
MACD: Tính toán đường nhanh, đường chậm và đường MACD của các đường vàng, như là một chỉ số phán đoán hỗ trợ.
Các chỉ số này kết hợp với nhau, trong tình huống xu hướng, sử dụng Brin để xác định thời điểm giá phá vỡ và quay trở lại trục trung tâm; trong tình huống cân bằng, sử dụng sự phá vỡ của đường cân bằng để nắm bắt điểm chuyển hướng; trong tình huống quá mua quá bán, sử dụng phán đoán khu vực cực đoan của chỉ số RSI để thực hiện hoạt động đảo ngược.
Chiến lược này có một số lợi thế:
Các chỉ số RSI, Burin, và đường trung bình được xác minh lẫn nhau, làm cho tín hiệu giao dịch đáng tin cậy hơn.
Thích hợp cho các tình huống khác nhau. Các tình huống khác nhau có thể được xử lý: xu hướng sử dụng các vùng Brin, điều chỉnh các tình huống sử dụng đường trung bình, mua quá mức sử dụng RSI.
Tần suất hoạt động vừa phải. Các tham số chỉ số được thiết lập cẩn thận hơn, tránh giao dịch quá thường xuyên.
Cấu trúc chương trình rõ ràng. Quy định viết mã, dễ đọc và phát triển thứ hai.
Chiến lược này cũng có một số rủi ro:
Rủi ro khi đặt tham số. Thiết lập tham số chỉ số không đúng có thể dẫn đến lỗi tín hiệu giao dịch. Cần kiểm tra lặp lại các tham số tối ưu hóa.
Rủi ro của việc chuyển đổi nhiều đầu trống. Tại các điểm biến động của thị trường, việc chuyển đổi nhiều đầu trống có thể thường xuyên hơn, chi phí giao dịch sẽ tăng. Bạn có thể điều chỉnh thời gian nắm giữ phù hợp.
Chương trình thực hiện rủi ro. Có thể có một số lỗi logic khó phát hiện trong mã, dẫn đến giao dịch bất thường.
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
Thêm chiến lược dừng lỗ để khóa lợi nhuận và giảm tổn thất.
Kết hợp với chỉ số khối lượng giao dịch, tránh các tín hiệu sai. Ví dụ: kiểm tra khối lượng giao dịch khi phá vỡ vùng Brin.
Thêm thuật toán học máy, sử dụng đào tạo dữ liệu lịch sử, tự động tối ưu hóa tham số.
Thêm đồ họa để hiển thị trực quan chiến lược.
Phân tích và tối ưu hóa để lựa chọn sự kết hợp tốt nhất.
Chiến lược này sử dụng nhiều chỉ số như đường trung bình, băng tần Brin, RSI, để đánh giá thông qua các chỉ số kết hợp, tạo ra tín hiệu giao dịch. Ưu điểm của chiến lược là khả năng thích ứng mạnh, đánh giá chính xác; rủi ro chủ yếu được thực hiện trong cài đặt tham số và thủ tục, cần kiểm tra tối ưu hóa liên tục. Tiếp theo, sẽ liên tục cải thiện chiến lược, tăng cơ chế dừng lỗ, sử dụng tham số tốt nhất của đào tạo máy học, và phát triển giao diện đồ họa, hoàn thiện chức năng giám sát và xử lý bất thường.
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)
upper = basis + dev
lower = basis - dev
vrsi = rsi(price, lengthrsi)
if (not na(vrsi))
if (crossover(vrsi, overSold))
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (crossunder(vrsi, overBought))
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
if (crossover(source, lower))
strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE")
else
strategy.cancel(id="BBandLE")
if (crossunder(source, upper))
strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE")
else
strategy.cancel(id="BBandSE")
if (not na(close[lengthch]))
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)