Breakout Bollinger Bands Chiến lược giao dịch dao động

Tác giả:ChaoZhang, Ngày: 2024-02-21 14:39:14
Tags:

img

Tổng quan

Breakout Bollinger Bands Oscillation Trading Strategy là một chiến lược giao dịch cho khi thị trường đang trong trạng thái dao động. Chiến lược này sử dụng chỉ số Bollinger Bands để đánh giá tình trạng dao động của thị trường và gửi tín hiệu giao dịch khi giá chạm vào đường ray trên hoặc dưới của Bollinger Bands. Không giống như các chiến lược theo xu hướng truyền thống, chiến lược này phù hợp hơn cho các thị trường bên cạnh có phạm vi.

Chiến lược logic

Chiến lược này chủ yếu được thực hiện dựa trên chỉ số Bollinger Bands. Bollinger Bands bao gồm một đường ray giữa, đường ray trên và đường ray dưới. Khi giá tiếp cận đường ray trên hoặc dưới, nó đại diện cho sự lạc quan quá mức hoặc bi quan quá mức trên thị trường, có nghĩa là khả năng đảo ngược tương đối cao.

Đặc biệt, chiến lược này đầu tiên sử dụng chỉ số DMI để xác định xem thị trường có đang trong trạng thái dao động hay không. Khi sự khác biệt giữa +DMI và -DMI dưới 20, thị trường được coi là dao động sang một bên. Dưới điều kiện này, đi dài khi giá vượt qua đường ray dưới, và đi ngắn khi giá vượt qua đường ray trên. Điểm dừng lỗ được đặt gần đường ray đối diện.

Ưu điểm

So với các chiến lược giao dịch dao động truyền thống, chiến lược này có thể đánh giá chính xác hơn các tình huống mua quá nhiều và bán quá nhiều trên thị trường bằng cách sử dụng chỉ số Bollinger Bands, do đó cải thiện xác suất nhập thị trường.

Rủi ro

Chiến lược này chủ yếu dựa trên Bollinger Bands để xác định dao động của thị trường và điều kiện mua quá mức / bán quá mức. Khi Bollinger Bands khác biệt hoặc thu hẹp bất thường, nó có thể dẫn đến các tín hiệu sai. Ngoài ra, điểm dừng lỗ gần, vì vậy một lỗ dừng duy nhất có thể tương đối lớn.

Tối ưu hóa

Chúng ta có thể xem xét kết hợp các chỉ số khác để lọc các tín hiệu đầu vào, chẳng hạn như RSI và các dao động khác, để cải thiện độ chính xác đầu vào. Ngoài ra, tối ưu hóa chiến lược dừng lỗ cũng rất quan trọng để tránh một lỗ dừng lớn duy nhất. Chúng ta 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ư tiền xu vốn hóa thị trường thấp.

Kết luận

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


/*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)))


Thêm nữa