Chiến lược đột phá trung bình động và đột phá băng Bollinger

Tác giả:ChaoZhang, Ngày: 2024-02-19 14:18:00
Tags:

img

Tổng quan

Chiến lược này kết hợp việc sử dụng chỉ số RSI để xác định tín hiệu mua quá mức và bán quá mức, Bollinger Bands để xác định mức giá đột phá và đường chéo trung bình chuyển động để đánh giá thị trường ở các giai đoạn xu hướng khác nhau, để kiếm lợi nhuận.

Chiến lược logic

Chiến lược bao gồm các chỉ số chính sau:

  1. Chỉ số RSI: Khi đường RSI vượt qua ngưỡng mua quá mức hoặc vượt dưới ngưỡng bán quá mức, các giao dịch dài hoặc ngắn được đặt phù hợp.

  2. Bollinger Bands: Khi giá vượt qua dải Bollinger trên, giao dịch ngắn được đặt; khi giá phá vỡ dải Bollinger dưới, giao dịch dài được đặt.

  3. Moving Average: Giá cao nhất và thấp nhất trong một khoảng thời gian nhất định (ví dụ 5 khoảng thời gian) được tính toán. Khi giá cao hơn điểm cao nhất trong 5 khoảng thời gian qua, giao dịch dài được đặt; khi giá thấp hơn điểm thấp nhất trong 5 khoảng thời gian qua, giao dịch ngắn được đặt.

  4. MACD: Các đường chéo và đường chéo chết của đường nhanh, đường chậm và đường MACD được sử dụng làm chỉ số đánh giá phụ trợ.

Các chỉ số này làm việc cùng nhau để đánh giá thị trường trong giai đoạn xu hướng và củng cố. Bollinger Bands xác định sự phá vỡ và đảo ngược trung bình. Trung bình động xác định các điểm đảo ngược xu hướng trong quá trình củng cố. RSI cực điểm các điều kiện thị trường mua quá mức / bán quá mức cho các giao dịch chống xu hướng.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Kết hợp nhiều chỉ số cải thiện độ chính xác. RSI, Bollinger Bands, đường trung bình động và nhiều hơn nữa tương tác để tạo ra các tín hiệu giao dịch đáng tin cậy.

  2. Áp dụng cho các điều kiện thị trường khác nhau. Bollinger Bands cho xu hướng, đường trung bình động cho hợp nhất, RSI cho cực đoan.

  3. Tần suất giao dịch hợp lý. Các thông số chỉ số được đặt một cách thận trọng để tránh giao dịch quá mức.

  4. Cấu trúc mã sạch, dễ hiểu, chỉnh sửa và xây dựng.

Phân tích rủi ro

Một số rủi ro cần được chú ý:

  1. Rủi ro tham số. Các tham số chỉ số không phù hợp có thể tạo ra các tín hiệu giao dịch không chính xác. Các tham số cần kiểm tra và tối ưu hóa liên tục.

  2. Rủi ro chuyển đổi dài / ngắn. Sự thay đổi thường xuyên về vị trí dài / ngắn xung quanh sự đảo ngược xu hướng làm tăng chi phí giao dịch. Thời gian nắm giữ có thể được điều chỉnh.

  3. Rủi ro mã hóa. Những lỗ hổng logic ẩn trong mã có thể dẫn đến giao dịch bất thường. Việc xử lý ngoại lệ và ghi chép nên được cải thiện.

Tối ưu hóa

Chiến lược có thể được nâng cấp theo các khía cạnh sau:

  1. Thêm stop loss để khóa lợi nhuận và giảm lỗ.

  2. Bao gồm khối lượng giao dịch để tránh tín hiệu sai. ví dụ: kiểm tra khối lượng trên Bollinger breakouts.

  3. Đưa ra máy học để tìm các thông số tối ưu dựa trên dữ liệu lịch sử.

  4. Xây dựng giao diện đồ họa để hiển thị trực quan hiệu suất.

  5. Thực hiện backtesting để tìm kết hợp thông số tốt nhất.

Kết luận

Chiến lược này kết hợp trung bình động, Bollinger Bands, RSI và nhiều hơn nữa để tạo ra các tín hiệu giao dịch. tính linh hoạt và chính xác của nó là điểm mạnh rõ ràng, trong khi các rủi ro thiết lập tham số và mã hóa cần phải được quản lý.


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

Thêm nữa