
Chiến lược này dựa trên các chỉ số và đường trung bình di chuyển của Bollinger Bands để xác định xem giá có gần với đường giảm của Bollinger Bands hay không, để có lợi nhuận. Khi giá vượt qua đường giảm của Bollinger Bands, hãy nhìn xuống; khi giá vượt qua đường giảm của Bollinger Bands, hãy nhìn xa hơn.
Chiến lược này chủ yếu đánh giá hai tín hiệu nhập cảnh sau:
Tín hiệu đa đầu: khi giá đóng cửa chạm đường ray xuống và giá đóng cửa cao hơn đường trung bình EMA, thực thể đường K trước là đường âm và thực thể đường K hiện tại là đường dương.
Tín hiệu trống: Khi giá đóng cửa chạm đường lên và giá đóng cửa thấp hơn đường trung bình EMA, thực thể đường K trước là đường dương và thực thể đường K hiện tại là đường âm.
Phương pháp dừng lỗ: Cài đặt dừng lỗ. Điểm dừng lỗ là chi phí đầu vào với hệ số lợi nhuận rủi ro gấp nhiều lần so với khoảng cách đường ray đối thủ.
Phương pháp dừng chân: mục tiêu là làm lợi nhuận cho đối thủ. Đó là làm nhiều dừng chân xuống đường ray, làm trống dừng chân lên đường ray.
Kết hợp các lợi thế của chiến lược biến đổi xu hướng và đảo ngược, nó có thể hoạt động tốt hơn trong các biến động xu hướng.
Sử dụng chỉ số BRI để đánh giá các khu vực quá mua và quá bán để đánh giá chính xác cơ hội đảo ngược.
Các điểm dừng cố định được thiết lập hợp lý để giúp kiểm soát rủi ro.
Cách di động để tăng lợi nhuận.
Các chiến lược đột phá dễ bị đánh giá cao, nên hãy cảnh giác với các đột phá giả.
Các lệnh dừng có thể được kích hoạt thường xuyên khi giao dịch quá chấn động.
Hạn chế cố định không thể điều chỉnh theo biến động của thị trường và có thể quá thoải mái hoặc quá quyết liệt.
Nếu bạn đặt các tham số trong vòng Brin không đúng lúc, hiệu quả có thể không tốt.
Có thể xem xét kết hợp các chỉ số RSI để lọc tín hiệu đầu vào, ví dụ RSI cao hơn 50 làm thêm, RSI thấp hơn 50 làm trống, để tránh tín hiệu sai.
Thêm chức năng tự động điều chỉnh khoảng cách dừng cố định, làm cho dừng trở nên linh hoạt hơn. Ví dụ: thiết lập khoảng cách dừng động theo chỉ số ATR.
Tối ưu hóa các tham số của vùng Brin, tìm kiếm sự kết hợp tham số tốt nhất.
Có thể thử nghiệm các tham số đường trung bình khác nhau của EMA để tối ưu hóa hiệu ứng của đường trung bình.
Chiến lược này tính đến xu hướng và đảo ngược, sử dụng Brin để xác định điểm mua quá mức và bán quá mức để vào thị trường, bằng cách di chuyển dừng để tối đa hóa lợi nhuận. Hiệu suất tốt hơn trong tình huống biến động xu hướng. Tuy nhiên, cần chú ý để phòng ngừa sự cố bị đặt, đồng thời điều chỉnh các tham số để tối ưu hóa hiệu quả chiến lược.
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)
// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
ema = ema(close, emaInput)
// These are our conditions as explained above
entryLong = low[1] <= lower[1] and low <= lower and low > ema
entryShort = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong = close > open and close[1] < open[1]
reversecandleShort = close < open and close[1] > open[1]
var stopLong = 0.0
var stopShort = 0.0
// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
stopLong := (((close / upper - 1) * riskreward + 1) * close)
strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")
if reversecandleShort and entryShort and strategy.position_size == 0
stopShort := (((close / lower - 1) / riskreward + 1) * close)
strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")
// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)
// These plots are to check the stoplosses, they can make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)