Bollinger Bands Channel Breakout Mean Reversal Strategy (Tương đương với các đường dây Bollinger)

Tác giả:ChaoZhang, Ngày: 2024-01-22 10:47:45
Tags:

img

Tổng quan

Đây là một chiến lược phá vỡ đảo ngược trung bình dựa trên kênh Bollinger Bands. Nó đi dài khi giá phá vỡ bên dưới dải dưới của Bollinger Bands. Stop loss được đặt ở mức thấp của thanh phá vỡ. Mục tiêu lợi nhuận là dải trên của Bollinger Bands.

Chiến lược logic

Chiến lược này sử dụng một kênh Bollinger Bands 20 giai đoạn, bao gồm một dải giữa, một dải trên và một dải dưới. Dải giữa là một đường trung bình di chuyển đơn giản 20 giai đoạn. Dải trên là dải giữa cộng với 2 độ lệch chuẩn. Dải dưới là dải giữa trừ 2 độ lệch chuẩn.

Khi giá phá vỡ dưới dải dưới, điều này cho thấy giá đã bước vào trạng thái bán quá mức. Chiến lược sẽ đi dài tại thời điểm này. Sau khi bước vào vị trí, stop loss được đặt ở mức thấp của thanh nhập, và mục tiêu lợi nhuận là dải trên. Do đó, chiến lược nhằm mục đích nắm bắt quá trình đảo ngược từ bán quá mức đến mức trung bình, để kiếm lợi nhuận.

Phân tích lợi thế

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

  1. Sử dụng Bollinger Bands để đánh giá tình trạng mua quá mức / bán quá mức, có một số thời gian
  2. Chiến lược giao dịch đảo ngược, tránh theo đuổi mức cao nhất và tiêu diệt mức thấp nhất
  3. Định giá dừng lỗ và lấy lợi nhuận hợp lý để kiểm soát rủi ro tốt hơn

Phân tích rủi ro

Những rủi ro của chiến lược này bao gồm:

  1. Bollinger Bands không thể xác định hoàn hảo xu hướng giá, đột phá có thể thất bại
  2. Sự sụp đổ thị trường liên tục có thể gây ra dừng lỗ
  3. Lấy lợi nhuận gần dải trên có nguy cơ chi phí cao

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

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Tối ưu hóa các tham số của Bollinger Bands để tìm ra sự kết hợp tốt nhất
  2. Thêm các chỉ số bộ lọc để cải thiện độ chính xác nhập
  3. Tối ưu hóa dừng lỗ và lấy lợi nhuận để có lợi nhuận cao hơn

Kết luận

Chiến lược này có logic rõ ràng và có thể giao dịch ở một mức độ nào đó. Tuy nhiên, hiệu quả của nó trong việc đánh giá mua quá mức / bán quá mức với Bollinger Bands là hạn chế, và nó không thể xác định hoàn hảo xu hướng. Ngoài ra, cơ chế dừng lỗ và lấy lợi nhuận cần cải thiện. Tiếp theo, nó có thể được tối ưu hóa bằng cách chọn các chỉ số chính xác hơn, điều chỉnh các tham số và tăng cường logic thoát để cải thiện lợi nhuận.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © Ronsword
//@version=5

strategy("bb 2ND target", overlay=true)
 
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 1997"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Sept 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

// STEP 2. See if the current bar falls inside the date range
inTradeWindow = true

// Bollinger Bands inputs
length = input.int(20, title="Bollinger Bands Length")
mult = input.float(2.0, title="Multiplier")
src = input(close, title="Source")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// EMA Settings
ema20 = ta.ema(close, 20)
plot(ema20, color=color.blue, title="20 EMA")

// Entry condition
longEntryCondition = ta.crossover(close, lower)

// Define stop loss level as the low of the entry bar
var float stopLossPrice = na
if longEntryCondition
    stopLossPrice := low

// Top Bollinger Band itself is set as the target
topBandTarget = upper

// Enter long position when conditions are met
if inTradeWindow and longEntryCondition
    strategy.entry("Long", strategy.long, qty=1)

// Set profit targets
strategy.exit("ProfitTarget2", from_entry="Long", limit=topBandTarget)

// Set stop loss
strategy.exit("StopLoss", stop=stopLossPrice)

// Plot Bollinger Bands with the same gray color
plot(upper, color=color.gray, title="Upper Bollinger Band")
plot(lower, color=color.gray, title="Lower Bollinger Band")



Thêm nữa