
Chiến lược này là một hệ thống giao dịch định lượng theo cấp độ bốn giờ dựa trên chỉ số Bollinger Bands, kết hợp với tư tưởng giao dịch của phá vỡ xu hướng và quay trở lại mức trung bình. Chiến lược này nắm bắt động lực thị trường bằng cách phá vỡ Bollinger Bands xuống đường, đồng thời tận dụng tính năng của giá quay trở lại mức trung bình để kiếm lợi nhuận và kiểm soát rủi ro bằng cách dừng lỗ. Chiến lược sử dụng đòn bẩy 3 lần, kiểm soát rủi ro cũng được xem xét đầy đủ trong khi đảm bảo lợi nhuận.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Đây là một chiến lược kết hợp các đặc tính theo xu hướng và quay trở lại trung bình của chỉ số Brin, đạt được mục tiêu của thu nhập ổn định trong cả thị trường xu hướng và biến động thông qua các điều kiện mở lỗ nghiêm ngặt và các biện pháp kiểm soát rủi ro. Điểm mạnh cốt lõi của chiến lược là logic giao dịch rõ ràng và hệ thống kiểm soát rủi ro hoàn thiện, nhưng vẫn cần chú ý đến việc tối ưu hóa các khía cạnh như sử dụng đòn bẩy và phán đoán môi trường thị trường để nâng cao hơn nữa sự ổn định và khả năng thu nhập của chiến lược.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger 4H Follow", overlay=true, initial_capital=300, commission_type=strategy.commission.percent, commission_value=0.04)
// StartYear = input(2022,"Backtest Start Year")
// StartMonth = input(1,"Backtest Start Month")
// StartDay = input(1,"Backtest Start Day")
// testStart = timestamp(StartYear,StartMonth,StartDay,0,0)
// EndYear = input(2023,"Backtest End Year")
// EndMonth = input(12,"Backtest End Month")
// EndDay = input(31,"Backtest End Day")
// testEnd = timestamp(EndYear,EndMonth,EndDay,0,0)
lev = 3
// Input parameters
length = input.int(20, title="Bollinger Band Length")
mult = input.float(2.0, title="Bollinger Band Multiplier")
// Bollinger Bands calculation
basis = ta.sma(close, length)
upperBand = basis + mult * ta.stdev(close, length)
lowerBand = basis - mult * ta.stdev(close, length)
// Conditions for Open Long
openLongCondition = strategy.position_size == 0 and close > open and (close + open) / 2 > upperBand
// Conditions for Open Short
openShortCondition = strategy.position_size == 0 and close < open and (close + open) / 2 < lowerBand
// Conditions for Close Long
closeLongCondition = strategy.position_size > 0 and strategy.position_size > 0 and (close < upperBand and open < upperBand and close < open)
// Conditions for Close Short
closeShortCondition = strategy.position_size < 0 and strategy.position_size < 0 and (close > lowerBand and open > lowerBand and close > open)
// Long entry
if openLongCondition
strategy.entry("Long", strategy.long, qty=strategy.equity * lev / close)
strategy.exit("Long SL", from_entry="Long", stop=low) // Set Stop-Loss
// Short entry
if openShortCondition
strategy.entry("Short", strategy.short, qty=strategy.equity * lev / close)
strategy.exit("Short SL", from_entry="Short", stop=high) // Set Stop-Loss
// Long exit
if closeLongCondition
strategy.close("Long", comment = "TP")
// Short exit
if closeShortCondition
strategy.close("Short", comment = "TP")
// Plot Bollinger Bands
plot(upperBand, color=color.yellow, title="Upper Band")
plot(lowerBand, color=color.yellow, title="Lower Band")