Chiến lược này là một chiến lược giao dịch định lượng dựa trên các chỉ số Bollinger Bands và MACD. Nó kết hợp giao dịch đột phá Bollinger Bands và theo dõi xu hướng MACD để cải thiện chất lượng tín hiệu giao dịch.
Chiến lược chủ yếu sử dụng Bollinger Bands và chỉ số MACD để xác định tín hiệu giao dịch.
Bollinger Bands bao gồm một dải giữa, dải trên và dải dưới. Một tín hiệu mua được tạo ra khi giá vượt qua dải dưới. Một tín hiệu bán được tạo ra khi giá vượt qua dải trên. Chiến lược sử dụng nguyên tắc đột phá của Bollinger Bands để xác định các tín hiệu đột phá mạnh hơn.
Chỉ số MACD phản ánh mối quan hệ giữa đường trung bình động ngắn hạn và dài hạn. Nó sử dụng chéo đường chênh lệch và đường tín hiệu để xác định các điểm nhập và thoát. Chiến lược này tích hợp việc sử dụng các chỉ số MACD để lọc các tín hiệu giao dịch Bollinger Bands và tạo ra các tín hiệu mua hiệu quả hơn khi đường chênh lệch vượt qua trên đường tín hiệu.
Nhìn chung, chiến lược kết hợp theo dõi xu hướng của Bollinger Bands và lợi thế trung bình động của MACD, nhằm mục đích nắm bắt sự biến động lớn hơn của thị trường trong xu hướng mạnh.
Kết hợp Bollinger Bands và chỉ số MACD làm cho tín hiệu giao dịch đáng tin cậy hơn.
Theo dõi xu hướng Bollinger Bands và đường chéo trung bình động MACD có thể tạo ra các tín hiệu nhập cảnh mạnh hơn trong các thị trường xu hướng.
Các tín hiệu sai có thể được lọc hiệu quả thông qua đánh giá hai chỉ số, làm giảm rủi ro giao dịch.
Có rất nhiều chỗ cho tối ưu hóa tham số của chiến lược, có thể được điều chỉnh theo các sản phẩm và chu kỳ khác nhau.
Trong các thị trường giới hạn phạm vi, các tín hiệu giao dịch được tạo ra bởi Bollinger Bands và MACD có thể thường xuyên, mang lại rủi ro giao dịch quá mức.
Ba đường chéo vàng MACD liên tiếp ở mức thấp có thể đối mặt với nguy cơ đảo ngược xuống.
Chiến lược sử dụng nhiều chỉ số, làm cho tối ưu hóa tham số và thử nghiệm chiến lược khá khó khăn.
Để giải quyết những rủi ro này, các phương pháp như điều chỉnh thời gian giữ, thiết lập dừng lỗ, tối ưu hóa các tham số có thể được sử dụng để kiểm soát chúng.
Kiểm tra các thông số Bollinger Bands dài hơn để giảm tần suất giao dịch.
Tối ưu hóa các thông số đường MACD nhanh và chậm để cải thiện độ nhạy của chỉ số.
Thêm các chỉ số khác để lọc, như KDJ, RSI vv, để cải thiện chất lượng tín hiệu.
Thiết lập dừng động để tự động thoát khỏi giao dịch và kiểm soát rủi ro giao dịch duy nhất.
Theo lý thuyết, bằng cách tích hợp giao dịch đột phá Bollinger Bands và lọc chỉ số MACD, chiến lược này có thể tạo ra các tín hiệu giao dịch chất lượng cao. Thông qua tối ưu hóa tham số và các biện pháp kiểm soát rủi ro, kết quả backtest tốt có thể đạt được. Tuy nhiên, không có chiến lược nào có thể tránh hoàn toàn lỗ. Hiệu suất giao dịch thực tế cần đánh giá thận trọng.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true) // My 1st Pine Scrpt Indicator // Work on best on 1Hr Chart // Open for Help/Donations. var float lastentry=1 int result = 0 float x = 0 drawshape = false /////////////EMA shortest = ta.ema(close, 20) short = ta.ema(close, 50) longer = ta.ema(close, 100) longest = ta.ema(close, 200) plot(shortest, color = color.red) plot(short, color = color.orange) plot(longer, color = color.aqua) plot(longest, color = color.blue) ///////////// RSI RSIlength = input(6,title="RSI Period Length") RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = ta.rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input.int(200, minval=1,title="Bollinger Period Length") BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation") BBbasis = ta.sma(price, BBlength) BBdev = BBmult * ta.stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close buyEntry = ta.crossover(source, BBlower) sellEntry = ta.crossunder(source, BBupper) ////////////// MACD fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD ///////////// Colors switch1=input(true, title="Enable Bar Color?") switch2=input(true, title="Enable Background Color?") TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na ///////////Strategy bool tcu = not (ta.crossunder(price[0],shortest[0])) if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower)))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF") if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower))))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF") if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF") //else if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF") if ((ta.crossunder(low[0],shortest[0]) and close<shortest)) strategy.close(id="RSI_BB_L", comment="Close by 1st IF") if (price<lastentry) drawshape := true if (price<strategy.opentrades.entry_price(0)/1.01175734321249) strategy.close(id="RSI_BB_L", comment="Close by 2nd IF") plot(strategy.opentrades.entry_price(0), color=color.yellow)