Triple BB Bands Breakout với chiến lược RSI

Tác giả:ChaoZhang, Ngày: 2024-02-29 14:57:49
Tags:

img

Tổng quan

Chiến lược này kết hợp Bollinger Bands và chỉ số RSI để tạo ra tín hiệu giao dịch. Nó theo dõi xem giá đóng của ba ngọn nến có phá vỡ các dải trên hoặc dưới cùng một lúc hay không, và kết hợp chỉ số Vortex và chỉ số RSI để xác nhận tín hiệu giao dịch.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên các nguyên tắc sau:

  1. Sử dụng 20 giai đoạn Bollinger Bands, xem xét phát hành tín hiệu giao dịch khi giá phá vỡ qua các dải trên hoặc dưới trên đóng
  2. Yêu cầu ba ngọn nến để phá vỡ cùng một lúc để tránh breakouts sai
  3. Kết hợp chỉ số Vortex, khi mua quá mức mạnh VIP>1.25, khi bán quá mức mạnh VIM>1.25, lọc ra các tín hiệu
  4. Kết hợp chỉ số RSI để xác định mua quá mức và bán quá mức, xem xét đi ngắn khi RSI vượt qua 70, và xem xét đi dài khi RSI vượt qua 30
  5. Khi các điều kiện trên được đáp ứng, tín hiệu dài và ngắn được tạo ra

Phân tích lợi thế

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

  1. Dải BB ba lần lọc các đột phá giả và đảm bảo độ tin cậy của các đột phá
  2. Chỉ số Vortex đánh giá sức mạnh của thị trường và tránh giao dịch không thuận lợi trên thị trường
  3. Chỉ số RSI đánh giá khu vực mua quá mức và bán quá mức, kết hợp với chỉ số Bollinger Bands cho nhập cảnh
  4. Sự kết hợp của nhiều chỉ số đánh giá toàn diện tình hình thị trường và độ tin cậy của tín hiệu tương đối cao

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Chỉ số Bollinger Bands rất nhạy cảm với các thông số, chiều dài và StdDev nhân cần được tối ưu hóa
  2. Chỉ số Vortex cũng khá nhạy cảm với các tham số chu kỳ, mà cần phải được điều chỉnh cho các thị trường khác nhau
  3. Chỉ số RSI có xu hướng phân kỳ và cũng có thể bỏ lỡ xu hướng
  4. Nếu có sự bất đồng trong đánh giá của ba chỉ số, sẽ không thể tham gia, bỏ lỡ một số cơ hội

Các biện pháp kiểm soát rủi ro bao gồm:

  1. Tối ưu hóa các thông số và sử dụng các thông số với tỷ lệ thắng cao nhất trong backtesting
  2. Kết hợp các chỉ số khác như lọc khối lượng giao dịch
  3. Cải thiện hợp lý đánh giá chỉ số để tránh bỏ lỡ cơ hội tốt

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa chiều dài và nhân StdDev của Bollinger Bands để tìm các thông số tối ưu
  2. Tối ưu hóa chu kỳ của chỉ số Vortex để làm cho nó phù hợp hơn cho các thị trường khác nhau
  3. Tăng các chỉ số khác phán đoán, chẳng hạn như khối lượng giao dịch, MACD, vv, để làm phong phú các tín hiệu đa dạng
  4. Điều chỉnh logic đánh giá chỉ số để ngăn chặn không thể nhập do sự khác biệt của chỉ số
  5. Tăng chiến lược dừng lỗ để kiểm soát lỗ tối đa cho mỗi giao dịch

Tóm lại

Chiến lược này kết hợp nhiều chỉ số để đánh giá. Trong khi đảm bảo độ tin cậy tín hiệu, nó cũng có một số vấn đề. Thông qua tối ưu hóa tham số, nguồn tín hiệu làm giàu, điều chỉnh logic đánh giá và dừng lỗ, vv, sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm. Nó cung cấp một ý tưởng tốt cho giao dịch định lượng.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm

//@version=5
strategy(title='RSI + BB  over 3 bar+--- vortex0.71.3  ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true)

length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)

upperBand = basis + dev
lowerBand = basis - dev

isClosedBar = ta.change(time("15"))

var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false


// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)

VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR

//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")

sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)

shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel




if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])

    if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
        strategy.entry("Short", strategy.short)
        closeAboveUpperBand := false  // Reset the condition when entering a new Short position
    if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
        strategy.entry("Long", strategy.long)
        closeBelowLowerBand := false  // Reset the condition when entering a new Long position



if strategy.position_size > 0  // Check if there is an open Long position
    closeAboveUpperBand := close > upperBand  // Update the condition based on close price
    if closeAboveUpperBand
        strategy.close("Long",disable_alert=true)  // Close the Long position if close price is above upper band

if strategy.position_size < 0  // Check if there is an open Short position
    closeBelowLowerBand := close < lowerBand  // Update the condition based on close price
    if closeBelowLowerBand
        strategy.close("Short",disable_alert=true)  // Close the Short position if close price is below lower band

// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

Thêm nữa