Chiến lược tiền điện tử Bollinger Bands nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2024-02-27 14:13:39
Tags:

img

Tổng quan

Chiến lược này áp dụng chỉ số Bollinger Bands trên các khung thời gian 1 phút, 3 phút, 5 phút và 15 phút để phân tích các biến động giá của tiền điện tử, để xác định các cơ hội mua và bán. Nó sử dụng giá 5 phút của Bitcoin làm điểm chuẩn cho tâm lý thị trường tiền điện tử nói chung. Khi giá Bitcoin vượt qua dải trên, thị trường được coi là tăng. Khi giá vượt qua dải dưới, thị trường được coi là giảm. Chiến lược tìm kiếm các đột phá dải trên hoặc dưới trên các tiền điện tử và khung thời gian khác nhau.

Chiến lược logic

Chiến lược tính toán Bollinger Bands đồng thời trên các khung thời gian 1 phút, 3 phút, 5 phút và 15 phút. Bollinger Bands bao gồm một trung bình động n ngày (bên định sẵn 20 ngày) và một số độ lệch chuẩn (bên định sẵn 1.5x) trên và dưới nó.

Sử dụng tính năng này của Bollinger Bands, chiến lược đánh giá sự phát triển của thị trường mới nhất trên các chân trời thời gian khác nhau - 1 phút, 3 phút, 5 phút và 15 phút. Khi có sự đột phá của dải trên hoặc dưới trong khung thời gian 3 phút hoặc 5 phút, cộng với các dấu hiệu xác nhận trong khung thời gian 1 phút và 15 phút, chiến lược xác định tín hiệu mua hoặc bán mới nhất được kích hoạt. Ngoài ra, chiến lược cũng đề cập đến giá 5 phút của Bitcoin để đánh giá xu hướng thị trường tổng thể và tâm lý (biến hướng tăng/giảm) trên toàn bộ thị trường tiền điện tử. Dựa trên các yếu tố này, chiến lược quyết định có nên mua dài hay ngắn.

Sau khi tham gia giao dịch, chiến lược cũng thiết lập các điều kiện lấy lợi nhuận và dừng lỗ. Nếu giá nhập tăng hoặc giảm 25%, lấy lợi nhuận sẽ được kích hoạt. Nếu giá di chuyển hơn 25% chống lại hướng nhập, stop loss sẽ được kích hoạt.

Ưu điểm

  1. Chiến lược bao gồm cả thị trường ngắn hạn và trung hạn - 1 phút và 5 phút cho các bản cập nhật mới nhất, 15 phút cho xu hướng trung hạn, tránh bị đánh lừa bởi biến động thị trường tạm thời.

  2. Chiến lược theo dõi sự đột phá của nhóm giữa, nhóm trên và nhóm dưới, giảm thiểu cơ hội bị bỏ lỡ.

  3. Bitcoin phục vụ như một điểm chuẩn và thước đo cho các điều kiện và tình cảm thị trường tổng thể, nâng cao độ chính xác quyết định.

  4. Các cơ chế lấy lợi nhuận và dừng lỗ kiểm soát rủi ro một cách hiệu quả.

Rủi ro

  1. Bollinger Band breakouts có một số thuộc tính chậm và có thể bỏ lỡ thời điểm vào tốt nhất.

  2. Chiến lược này dễ bị tổn thương bởi các rủi ro hệ thống trên toàn thị trường như mật khẩu Black Swan events.

  3. Mặc dù có lợi nhuận và dừng lỗ, tổn thất vẫn có thể vượt quá biên dừng lỗ trong các sự kiện cực đoan.

  4. Cài đặt tham số không phù hợp như khoảng thời gian, nhân độ lệch chuẩn có thể dẫn đến chất lượng tín hiệu kém.

Các giải pháp tương ứng:

  1. Bao gồm nhiều chỉ số hơn để xác định thời gian nhập khẩu tối ưu.

  2. Cải thiện đánh giá rủi ro hệ thống ở mức thị trường.

  3. Giảm kích thước vị trí và biên dừng lỗ cho mỗi giao dịch.

  4. Tối ưu hóa cài đặt tham số thông qua backtesting.

Cơ hội gia tăng

  1. Thêm nhiều khung thời gian như 30 phút hoặc 60 phút Bollinger Bands.

  2. Chọn các tham số Bollinger Bands phù hợp hơn với các đặc điểm của mỗi tiền điện tử.

  3. Bao gồm khối lượng giao dịch để xác minh kết quả, vì khối lượng giao dịch xác nhận độ tin cậy của biến động giá.

  4. Kết hợp các chỉ số khác như Stoch RSI, MACD để cải thiện độ chính xác quyết định.

  5. So sánh chuyển động giá và mối tương quan giữa các tiền điện tử và chọn những người có nhiều không gian để thao tác nhất.

  6. Tối ưu hóa cơ chế thu lợi nhuận và dừng lỗ bằng cách phân tích thống kê về hiệu suất lịch sử để xác định các thiết lập tối ưu.

Kết luận

Đây là một chiến lược giao dịch tiền điện tử Bollinger Bands nhiều khung thời gian. Nó tập trung vào sự phát triển giá trên các đường chân trời thời gian ngắn và trung hạn, tận dụng Bollinger Bands để đánh giá tình trạng tăng / giảm của thị trường. Trong khi đó, nó sử dụng mức giá Bitcoin như là điểm chuẩn và tham chiếu để giúp xác định xu hướng tổng thể trong thị trường tiền điện tử rộng lớn hơn. Với tính linh hoạt của nó trong việc kết hợp nhiều khung thời gian, cộng với các cơ chế lấy lợi nhuận và dừng lỗ mạnh mẽ, chiến lược này có thể tận dụng hiệu quả các cơ hội và kiểm soát rủi ro.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="Crypto BB", title="Multi-Interval Bollinger Band Crypto Strategy", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.5, minval=0.001, maxval=50, title="StdDev")

interval1m = request.security(syminfo.tickerid, '1', src)
interval3m = request.security(syminfo.tickerid, '3', src)
interval5m = request.security(syminfo.tickerid, '5', src)
interval15m = request.security(syminfo.tickerid, '5', src)
btcinterval5m = request.security("BTC_USDT:swap", "5", src)
bitcoinSignal = 'flat'

var entryPrice = 0.000

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

bitcoinBasis = ma(btcinterval5m, length, maType)
bitcoinDev = ta.stdev(btcinterval5m, length)
bitcoinUpper = bitcoinBasis + bitcoinDev
bitcoinLower = bitcoinBasis - bitcoinDev

basis1m = ma(interval1m, length, maType)
basis3m = ma(interval3m, length, maType)
basis5m = ma(interval5m, length, maType)
basis15m = ma(interval5m, length, maType)
dev1m = mult * ta.stdev(interval1m, length)
dev3m = mult * ta.stdev(interval3m, length)
dev5m = mult * ta.stdev(interval5m, length)
upper1m = basis1m + dev1m
lower1m = basis1m - dev1m
upper3m = basis3m + dev3m
lower3m = basis3m - dev3m
upper5m = basis5m + dev5m
lower5m = basis5m - dev5m
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis3m, "Basis 3 minute", color=#2962FF, offset = offset)
p3upper = plot(upper3m, "Upper", color=#2962FF, offset = offset)
p3lower = plot(lower3m, "Lower", color=#2962FF, offset = offset)

//Exit protocols
if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Buy'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((interval1m - entryPrice)/entryPrice) * 30 > .25
        strategy.close('Buy', comment='Take Profit on Buy')
    if ((interval1m - entryPrice)/entryPrice) * 30 < -.25
        strategy.close('Buy', comment='Stop Loss on Buy')

if strategy.opentrades != 0 and strategy.opentrades.entry_id(0) == 'Sell'
    entryPrice := strategy.opentrades.entry_price(0)
    if ((entryPrice - interval1m)/entryPrice) * 30 > .25
        strategy.close('Sell', comment='Take Profit on Sell')
    if ((entryPrice - interval1m)/entryPrice) * 30 < -.25
        strategy.close('Sell', comment='Stop Loss on Sell')

//Bitcoin Analysis
if (btcinterval5m < bitcoinUpper and btcinterval5m[1] > bitcoinUpper[1] and btcinterval5m[2] < bitcoinUpper[2] and btcinterval5m[3] < bitcoinUpper[3])
    bitcoinSignal := 'Bear'
if (btcinterval5m > bitcoinUpper and btcinterval5m[1] < bitcoinUpper[1] and btcinterval5m[2] > bitcoinUpper[2] and btcinterval5m[3] > bitcoinUpper[3])
    bitcoinSignal := 'Bull'

//Short protocols
if (interval3m < basis3m and interval3m[1] > basis3m[1] and interval3m[2] < basis3m[2] and interval3m[3] < basis3m[3]) or 
 (interval5m < basis5m and interval5m[1] > basis5m[1] and interval5m[2] < basis5m[2] and interval5m[3] < basis5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell'
   and src < basis1m and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Basis Band Bearish Reversal')
    //strategy.order('Sell', strategy.short, comment = 'Basis band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m < upper3m and interval3m[1] > upper3m[1] and interval3m[2] < upper3m[2] and interval3m[3] < upper3m[3]) or 
 (interval5m < upper5m and interval5m[1] > upper5m[1] and interval5m[2] < upper5m[2] and interval5m[3] < upper5m[3]) 
  and strategy.opentrades.entry_id(0) != 'Sell' and bitcoinSignal == 'Bear' and src < upper1m  and src < basis15m
    if strategy.opentrades.entry_id(0) == 'Buy'
        strategy.close('Buy', 'Bearish Trend Reversal')
    strategy.order('Sell', strategy.short, comment = 'Upper band fractal rejection', stop = (upper1m + basis1m)/2)

if (interval3m > basis3m and interval3m[1] < basis3m[1] and interval3m[2] > basis3m[2] and interval3m[3] > basis3m[3]) or 
 (interval5m > basis5m and interval5m[1] < basis5m[1] and interval5m[2] > basis5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > basis1m  and src > basis15m
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Basis Band Bullish Reversal')
    //strategy.order('Buy', strategy.long, comment = 'Basis band fractal rejection', stop = (lower1m + basis1m)/2)

if (interval3m > lower3m and interval3m[1] < lower3m[1] and interval3m[2] > lower3m[2] and interval3m[3] > lower3m[3]) or 
 (interval5m > lower5m and interval5m[1] < lower5m[1] and interval5m[2] > lower5m[2] and interval5m[3] > basis5m[3]) and strategy.opentrades.entry_id(0) != 'Buy' 
  and src > lower1m  and src > basis15m and bitcoinSignal == 'Bull' 
    if strategy.opentrades.entry_id(0) == 'Sell'
        strategy.close('Sell', 'Bullish Trend Reversal')
    strategy.order('Buy', strategy.long, comment = 'Lower band fractal rejection', stop = (lower1m + basis1m)/2)

Thêm nữa