Chiến lược giao dịch theo dải Bollinger


Ngày tạo: 2024-02-21 14:39:14 sửa đổi lần cuối: 2024-02-21 14:39:14
sao chép: 0 Số nhấp chuột: 578
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo dải Bollinger

Tổng quan

Chiến lược giao dịch rung động Bollinger Bands là một chiến lược giao dịch khi thị trường đang trong trạng thái rung động. Chiến lược này sử dụng các chỉ số Bollinger Bands để đánh giá tình trạng rung động của thị trường và phát ra tín hiệu giao dịch khi giá chạm vào Bollinger Bands và đi xuống.

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

Chiến lược này được thực hiện chủ yếu dựa trên các chỉ số Bollinger Bands. Bollinger Bands bao gồm đường trung, đường trên và đường dưới. Khi giá gần đường trên hoặc đường dưới, đại diện cho thị trường lạc quan hoặc lạc quan quá mức, thì có nhiều khả năng đảo ngược.

Cụ thể, chiến lược này đầu tiên sử dụng chỉ số DMI để xác định liệu thị trường có đang ở trong trạng thái chấn động hay không. Khi chênh lệch giữa + DMI và - DMI nhỏ hơn 20, thị trường được coi là đang ở trong trạng thái chấn động ngang. Trong điều kiện này, khi giá trên vượt qua đường đi xuống, hãy làm nhiều hơn khi giá dưới phá vỡ đường đi.

Lợi thế chiến lược

So với chiến lược theo xu hướng, chiến lược này phù hợp hơn với môi trường thị trường dao động ngang, không bị mất lợi nhuận vì theo đuổi xu hướng. So với chiến lược giao dịch dao động truyền thống, chiến lược này sử dụng chỉ số Bollinger Bands để đánh giá chính xác hơn về tình trạng quá mua quá bán của thị trường, do đó tăng khả năng tham gia.

Rủi ro chiến lược

Chiến lược này chủ yếu dựa trên Bollinger Bands để đánh giá sự biến động của thị trường và tình trạng quá mua quá bán. Khi Bollinger Bands phân tán hoặc thu hẹp bất thường, sẽ dẫn đến tín hiệu sai. Ngoài ra, điểm dừng lỗ gần, một lần dừng lỗ có thể lớn hơn.

Hướng tối ưu hóa chiến lược

Bạn có thể cân nhắc kết hợp các chỉ số khác để lọc các tín hiệu nhập cảnh, chẳng hạn như các chỉ số biến động như RSI, để cải thiện độ chính xác nhập cảnh. Ngoài ra, việc tối ưu hóa chiến lược dừng lỗ cũng rất quan trọng để tránh lỗ hổng lớn. Bạn cũng có thể chọn các loại giao dịch phù hợp hơn với chiến lược này, chẳng hạn như đồng tiền có giá trị thị trường thấp.

Tóm tắt

Chiến lược này nói chung phù hợp với thị trường chấn động, có thể được sử dụng khi chiến lược xu hướng không hiệu quả. Tuy nhiên, hiệu quả của nó dựa vào chỉ số để đánh giá tình trạng thị trường vẫn còn chỗ để tối ưu hóa. Chúng ta có thể tiếp tục hoàn thiện chiến lược này bằng cách sử dụng các phương pháp đa chỉ số, quản lý tài chính và các phương pháp khác để làm cho hiệu quả của nó ổn định hơn.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))