Chiến lược giao dịch bán ngắn khi Bollinger Band vượt dưới giá với RSI Callback

Tác giả:ChaoZhang, Ngày: 2023-12-26 12:08:44
Tags:

img

Tổng quan

Chiến lược này sử dụng Bollinger Bands để xác định xem giá đã bước vào khu vực mua quá mức và kết hợp chỉ số RSI để xác định các cơ hội gọi lại.

Nguyên tắc giao dịch

Chiến lược dựa trên các nguyên tắc sau:

  1. Khi giá đóng vượt trên Bollinger Upper Band, nó cho thấy tài sản đã bước vào vùng mua quá mức và có khả năng gọi lại
  2. Chỉ số RSI xác định hiệu quả mức mua quá mức / bán quá mức. RSI > 70 được coi là mua quá mức
  3. Đi ngắn khi giá đóng cửa vượt dưới Upper Band
  4. Khóa vị trí khi RSI rút khỏi vùng mua quá mức hoặc dừng lỗ được kích hoạt

Phân tích lợi thế

Ưu điểm của chiến lược này:

  1. Bollinger Bands xác định chính xác mức mua quá mức / bán quá mức, cải thiện tỷ lệ thành công giao dịch
  2. RSI lọc ra các tín hiệu đột phá sai, tránh mất mát không cần thiết
  3. Tỷ lệ rủi ro/lợi nhuận cao đạt được bằng cách kiểm soát rủi ro hiệu quả

Phân tích rủi ro

Rủi ro trong chiến lược này:

  1. Giá có thể tiếp tục tăng sau khi phá vỡ trên Upper Band, dẫn đến tổn thất thêm
  2. Không có sự rút lui RSI kịp thời dẫn đến tăng lỗ
  3. Vị trí ngắn một chiều không để lại chỗ cho giao dịch trong hợp nhất

Rủi ro có thể được giảm thiểu bằng cách:

  1. Điều chỉnh stop loss đúng cách để stop out kịp thời
  2. Thêm các chỉ số để xác nhận RSI callback
  3. Sử dụng đường trung bình động để xác định hợp nhất

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

Chiến lược này có thể được cải thiện bằng:

  1. Tối ưu hóa các thông số Bollinger cho nhiều tài sản hơn
  2. Điều chỉnh các thông số RSI để có tín hiệu tốt hơn
  3. Thêm thêm các chỉ số để xác định các điểm đảo ngược xu hướng
  4. Kết hợp logic giao dịch dài
  5. Thực hiện stop loss động dựa trên biến động

Kết luận

Nói tóm lại, đây là một chiến lược bán scalping ngắn nhanh mua quá mức điển hình. Nó tận dụng Bollinger Bands cho các mục nhập giao dịch và RSI để lọc tín hiệu. Rủi ro được quản lý thông qua việc đặt dừng lỗ thận trọng.


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

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule


strategy("Bollinger Band Below Price with RSI",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=70,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

//Bollinger Bands Indicator
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

// RSI inputs and calculations
lengthRSI = 14
RSI = ta.rsi(close, lengthRSI)



// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01

// Determine trail stop loss prices
//longStopPrice = 0.0
shortStopPrice = 0.0

//longStopPrice := if strategy.position_size > 0
    //stopValue = close * (1 - longTrailPerc)
    //math.max(stopValue, longStopPrice[1])
//else
    //0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999


//Entry and Exit
strategy.entry(id="short", direction=strategy.short, when=ta.crossover(close, upper) and RSI < 70 and timePeriod and notInTrade)

if (ta.crossover(upper, close) and RSI > 70 and timePeriod)
    strategy.exit(id='close', limit = shortStopPrice)











Thêm nữa