Bollinger Bands dựa trên xu hướng theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-01-18 16:37:56
Tags:

img

Tổng quan

Chiến lược này sử dụng Bollinger Bands để xác định hướng xu hướng giá kết hợp với trung bình di chuyển nhanh và chậm để nhập vào các vị trí. Tín hiệu mua được kích hoạt khi giá vượt qua dải giữa Bollinger và trung bình di chuyển nhanh vượt qua dải trung bình di chuyển chậm. Tín hiệu bán được kích hoạt khi giá vượt qua dải giữa Bollinger và trung bình di chuyển nhanh vượt qua dải trung bình di chuyển chậm. Phương pháp dừng lỗ là ATR trailing stop loss.

Chiến lược logic

Chiến lược chủ yếu bao gồm chỉ số Bollinger Bands và Moving Averages.

CácBollinger Bandsbao gồm dải giữa, dải trên và dải dưới. Dải giữa là đường trung bình di chuyển đơn giản n ngày. Dải trên và dải dưới là k độ lệch chuẩn trên và dưới dải giữa. Khi giá gần dải trên, nó chỉ ra điều kiện mua quá mức. Khi giá gần dải dưới, nó chỉ ra điều kiện bán quá mức. Dải giữa đại diện cho hướng xu hướng giá.

CácMức trung bình độngsử dụng một đường trung bình di chuyển nhanh và một đường trung bình di chuyển chậm. đường trung bình di chuyển nhanh có khoảng thời gian 40 và đường trung bình di chuyển chậm có khoảng thời gian 120. Khi đường MA nhanh vượt qua đường MA chậm, đó là tín hiệu mua. Khi đường MA nhanh vượt dưới đường MA chậm, đó là tín hiệu bán.

Dựa trên các quy tắc của các chỉ số trên, các tín hiệu giao dịch cụ thể của chiến lược này là:

Nhận tín hiệu: Giá đóng vượt qua dải giữa và MA nhanh vượt qua MA chậm

Bán tín hiệu: Giá đóng phá vỡ dưới dải giữa và MA nhanh vượt qua dưới MA chậm

Dừng Loss: ATR dừng lỗ, giá dừng lỗ là giá hiện tại trừ 4 lần ATR

Phân tích lợi thế

Chiến lược này kết hợp các Bollinger Bands và Moving Averages, có thể xác định hiệu quả hướng xu hướng giá và tránh mở quá nhiều vị trí trong các khoảng thời gian dao động.

Dải giữa Bollinger có thể phản ánh rõ xu hướng giá. Khi giá vượt qua dải giữa, nó tạo thành một tín hiệu xu hướng mạnh mẽ. Dải trên và dưới có thể đánh giá hiệu quả các điều kiện mua quá mức và bán quá mức để tránh đuổi theo mức cao mới và tiêu diệt mức thấp trong thời gian dao động.

Chữ thập vàng và chữ thập chết của MAs nhanh và chậm cũng là các phương pháp thường được sử dụng để xác định xu hướng.

ATR trailing stop loss điều chỉnh điểm stop loss để thích nghi với biến động thị trường, kiểm soát hiệu quả lỗ vị trí duy nhất.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là giá có thể nhanh chóng rút lui sau khi phá vỡ dải giữa, không thể kiếm lợi nhuận hiệu quả. Điều này sẽ dẫn đến tổn thất. Giải pháp là điều chỉnh các tham số MA một cách thích hợp để làm cho các chỉ số phù hợp hơn với đặc điểm thị trường.

Một rủi ro khác là trong thời gian dao động, các Bollinger Bands và Moving Averages có thể đưa ra các tín hiệu sai. Tại thời điểm này, chúng ta nên xem xét bỏ qua các tín hiệu giao dịch và chờ xu hướng rõ ràng hơn. Hoặc giảm kích thước vị trí phù hợp.

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. Điều chỉnh các thông số Bollinger Bands để thích nghi với các đặc điểm thị trường của các giai đoạn khác nhau

  2. Điều chỉnh các thông số MA nhanh và chậm để phù hợp hơn với các công cụ giao dịch cụ thể

  3. Thêm các chỉ số phụ khác cho sự kết hợp để cải thiện sự ổn định của chiến lược

  4. Tối ưu hóa các phương pháp định giá vị trí, tăng vị trí trong thời gian xu hướng và giảm vị trí trong thời gian dao động

  5. Kiểm tra các phương pháp dừng lỗ khác nhau để tìm ra các giải pháp tốt hơn

Kết luận

Nói chung, đây là một xu hướng theo chiến lược điển hình. Nó kết hợp các Bollinger Bands và Moving Averages để xác định xu hướng giá và cơ hội giao dịch. Tín hiệu chiến lược tương đối rõ ràng, phù hợp với giao dịch tự động. Nhưng nó cũng có một số rủi ro, tham số và quy tắc cần được tối ưu hóa để thích nghi với môi trường thị trường rộng lớn hơn. Nhìn chung, khuôn khổ chiến lược là khả thi và có nhiều chỗ để cải thiện.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Robrecht99

//@version=5
strategy("Trend Following with Bollinger Bands", overlay=true, margin_long=100, margin_short=100, pyramiding=4)

// Bollinger Bands //

length = input.int(20, minval=1, group="Bollinger Bands Inputs")
src = input(close, title="Source", group="Bollinger Bands Inputs")
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, group="Bollinger Bands Inputs")
plot(basis, "Basis", color=color.orange, offset = offset)
p1 = plot(upper, "Upper", color=color.orange, offset = offset)
p2 = plot(lower, "Lower", color=color.orange, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(255, 0, 255, 95))

// Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast MA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow MA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maColorFast = input.color(color.new(color.red, 0), title = "Color Fast MA", group = "Moving Average Inputs", inline = "maFast")
maColorSlow = input.color(color.new(color.purple, 0), title = "Color Slow MA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1) 
slow = ta.ema(src2, len2)
plot(fast, color=maColorFast, title="Fast EMA")
plot(slow, color=maColorSlow, title="Slow EMA")

// ATR Inputs //
strategy.initial_capital = 50000

lengthATR = input.int(title="ATR Period", defval=14, minval=1, group="ATR Input")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Input")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (2 * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > basis and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < basis and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Thêm nữa