
Chiến lược này sử dụng các chỉ số Bollinger Bands để xác định xem giá có đi vào vùng quá mua hay quá bán hay không, kết hợp với các chỉ số RSI để xác định xem có cơ hội điều chỉnh hay không, để tạo khoảng trống khi vùng quá mua hình thành một cái gai chết và dừng lại khi giá tăng vượt quá Bollinger Bands.
Chiến lược này dựa trên các nguyên tắc sau:
Chiến lược này có những ưu điểm sau:
Chiến lược này có những rủi ro sau:
Bạn có thể làm giảm nguy cơ bằng cách:
Chiến lược này có thể được tối ưu hóa bằng cách:
Chiến lược này nói chung là một chiến lược giao dịch đường ngắn nhanh chóng trong khu vực mua quá mức điển hình. Sử dụng đường dây Brin để xác định điểm mua và bán, tín hiệu lọc RSI. Kiểm soát mức độ rủi ro bằng cách dừng lỗ hợp lý. Có thể nâng cao hiệu quả bằng cách tối ưu hóa tham số, chỉ số kết hợp, thêm logic mở vị trí.
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule
strategy("Bollinger Band Below Price with RSI",
overlay=true,
initial_capital=1000,
process_orders_on_close=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=70,
commission_type=strategy.commission.percent,
commission_value=0.1)
showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0
//Bollinger Bands Indicator
length = input.int(20, minval=1)
src = input(close, title="Source")
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)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
// RSI inputs and calculations
lengthRSI = 14
RSI = ta.rsi(close, lengthRSI)
// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
// Determine trail stop loss prices
//longStopPrice = 0.0
shortStopPrice = 0.0
//longStopPrice := if strategy.position_size > 0
//stopValue = close * (1 - longTrailPerc)
//math.max(stopValue, longStopPrice[1])
//else
//0
shortStopPrice := if strategy.position_size < 0
stopValue = close * (1 + shortTrailPerc)
math.min(stopValue, shortStopPrice[1])
else
999999
//Entry and Exit
strategy.entry(id="short", direction=strategy.short, when=ta.crossover(close, upper) and RSI < 70 and timePeriod and notInTrade)
if (ta.crossover(upper, close) and RSI > 70 and timePeriod)
strategy.exit(id='close', limit = shortStopPrice)