Chiến lược giao dịch định lượng dựa trên Bollinger Bands và MACD


Ngày tạo: 2024-02-23 14:30:30 sửa đổi lần cuối: 2024-02-23 14:30:30
sao chép: 0 Số nhấp chuột: 708
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng dựa trên Bollinger Bands và MACD

Tổng quan

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ố Brin Belt và MACD. Nó kết hợp các giao dịch đột phá của Brin Belt và theo dõi xu hướng của MACD nhằm nâng cao chất lượng tín hiệu giao dịch.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên các tín hiệu giao dịch của chỉ số BRI và MACD.

Chỉ số Brin Belt bao gồm đường trung, đường trên và đường dưới. Khi giá phá vỡ đường xuống, nó tạo ra tín hiệu mua; Khi giá phá vỡ đường lên, nó tạo ra tín hiệu bán. Chiến lược này sử dụng nguyên tắc phá vỡ của Brin Belt để xác định tín hiệu phá vỡ mạnh hơn.

Chỉ số MACD phản ánh mối quan hệ giữa đường trung bình di chuyển ngắn hạn và dài hạn, đánh giá thời gian mua và bán thông qua đường chênh lệch và đường tín hiệu. Chiến lược này kết hợp sử dụng chỉ số MACD để lọc các tín hiệu giao dịch với dãy dãy, tạo ra tín hiệu mua hiệu quả hơn khi đường chênh lệch vượt qua đường tín hiệu.

Nhìn chung, chiến lược này kết hợp theo dõi xu hướng của Brin và lợi thế trung bình di chuyển của MACD để nắm bắt sự biến động lớn hơn trong xu hướng mạnh.

Lợi thế chiến lược

  1. Kết hợp với các chỉ số BRI và MACD, tín hiệu giao dịch sẽ đáng tin cậy hơn.

  2. Trong các tình huống xu hướng, Brin theo dõi xu hướng và MACD trung bình di chuyển giao chéo có thể tạo ra một tín hiệu nhập cảnh mạnh mẽ.

  3. Thông qua việc đánh giá hai chỉ số, bạn có thể lọc hiệu quả các tín hiệu giả và giảm rủi ro giao dịch.

  4. Các tham số chiến lược có thể được tối ưu hóa và điều chỉnh theo các giống và chu kỳ khác nhau.

Rủi ro chiến lược

  1. Trong tình huống xung đột, các tín hiệu giao dịch được tạo ra bởi các băng tần Brin và MACD có thể thường xuyên, dẫn đến rủi ro đánh giá rủi ro.

  2. Chỉ số MACD có ba tín hiệu mua ngã ở vùng thấp, có thể có nguy cơ đảo ngược.

  3. Chiến lược sử dụng nhiều chỉ số hơn, tối ưu hóa tham số và thử nghiệm chiến lược khó hơn.

Đối với các rủi ro trên, có thể kiểm soát bằng cách điều chỉnh thời gian giữ vị trí, thiết lập đường dừng lỗ và các tham số tối ưu hóa.

Hướng tối ưu hóa chiến lược

  1. Kiểm tra các tham số Brin với chu kỳ dài hơn, giảm tần suất giao dịch.

  2. Tối ưu hóa các tham số đường trung bình MACD để tăng độ nhạy của chỉ số.

  3. Thêm các bộ lọc cho các chỉ số khác, chẳng hạn như KDJ, RSI, để cải thiện chất lượng tín hiệu.

  4. Thiết lập dừng động, dừng tự động, kiểm soát rủi ro giao dịch đơn lẻ.

Tóm tắt

Chiến lược này tích hợp các giao dịch đột phá và lọc MACD, theo lý thuyết có thể tạo ra một tín hiệu giao dịch chất lượng cao. Kết quả phản hồi tốt hơn có thể đạt được thông qua các phương tiện tối ưu hóa tham số và kiểm soát rủi ro. Tuy nhiên, không có chiến lược nào có thể tránh hoàn toàn thua lỗ và cần thận trọng đánh giá hiệu quả giao dịch thực tế.

Mã nguồn chiến lược
/*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)