
Chiến lược này sử dụng chỉ số Bollinger Bands để phân tích sự thay đổi của giá tiền điện tử trong các đợt thời gian khác nhau (lên 1 phút, 3 phút, 5 phút và 15 phút) để tìm kiếm cơ hội mua và bán. Nó sử dụng tâm trạng thị trường tiền điện tử làm chuẩn, chủ yếu tập trung vào giá 5 phút của Bitcoin.
Chiến lược này đồng thời tính các vùng Brin trên các khung thời gian 1 phút, 3 phút, 5 phút và 15 phút. Các vùng Brin bao gồm một số lần trung bình di chuyển của n ngày (20 ngày mặc định) và chênh lệch chuẩn của nó (1,5 lần mặc định).
Chiến lược này sử dụng tính năng này của chỉ số Bollinger Bands để đánh giá sự tiến triển mới nhất của thị trường trong các chu kỳ thời gian khác nhau (lần 1: 3, 5 và 15 phút). Khi giá trên chu kỳ thời gian 3 hoặc 5 phút phá vỡ chu kỳ Bollinger Bands lên đường hoặc xuống đường, và các dấu hiệu liên quan xuất hiện trên chu kỳ thời gian 1 phút và 15 phút, chiến lược này đánh giá thị trường đã phát đi tín hiệu mua và bán mới nhất. Ngoài ra, chiến lược cũng sẽ tham khảo chu kỳ thời gian 5 phút của Bitcoin để đánh giá xu hướng chung của thị trường tiền điện tử và tâm trạng thị trường trong toàn bộ thị trường tiền điện tử.
Sau khi mở vị trí, chiến lược cũng sẽ thiết lập điều kiện dừng lỗ. Nếu giá nắm giữ tăng hoặc giảm 25%, hãy thiết lập dừng lỗ; Nếu giá tăng hoặc giảm hơn 25% theo chiều ngược lại, hãy thiết lập dừng lỗ.
Chiến lược này kết hợp các động thái ngắn hạn và trung hạn của thị trường. Thời gian 1 phút và 5 phút để đánh giá sự phát triển mới nhất của thị trường, thời gian 15 phút để đánh giá xu hướng trung hạn, có thể tránh bị sai lệch bởi biến động ngắn hạn của thị trường.
Chiến lược này cũng tập trung vào các đột phá ở đường ray trung tâm, đường ray trên và đường ray dưới của Brin để tránh bỏ lỡ cơ hội mua và bán.
Bitcoin được sử dụng như một chuẩn mực thị trường và là một thước đo tâm trạng thị trường, giúp tăng độ chính xác của các quyết định.
Cài đặt điều kiện dừng lỗ để kiểm soát rủi ro hiệu quả.
Brin có một sự chậm trễ trong hình thức đột phá và có thể đã bỏ lỡ thời gian tốt nhất để vào sân.
Chiến lược này khó có thể đáp ứng hiệu quả nếu các sự cố như Black Swan xảy ra với các rủi ro hệ thống như mật khẩu.
Mặc dù đã thiết lập Stop Loss, nhưng sự cố bất ngờ dẫn đến quá mức Stop Loss cũng có thể gây ra thiệt hại lớn hơn.
Các tham số chiến lược như độ dài thời gian, số lần chênh lệch tiêu chuẩn được thiết lập không đúng cách sẽ làm giảm chất lượng tín hiệu giao dịch.
Các giải pháp tương ứng:
Kết hợp với các chỉ số khác, xác định thời điểm tốt nhất để nhập học.
Tăng cường đánh giá rủi ro hệ thống trên thị trường.
Giảm kích thước vị trí và mức dừng lỗ cho mỗi giao dịch.
Thiết lập tham số tối ưu hóa, kiểm tra phản hồi.
Thêm thêm thời gian để đánh giá, chẳng hạn như 30 phút hoặc 60 phút cho chỉ số Brin.
Tùy theo đặc điểm của các đồng tiền khác nhau, hãy chọn tham số Brinh phù hợp hơn để tăng hiệu quả chỉ số.
Các chỉ số như tăng khối lượng giao dịch được đánh giá bởi vì khối lượng giao dịch chứng minh sự thay đổi đáng tin cậy của giá.
Kết hợp với các chỉ số khác như Stoch RSI, MACD, để tăng độ chính xác trong ra quyết định. Các chỉ số này có thể cải thiện đáng kể phán đoán về xu hướng thực tế của thị trường.
So sánh xu hướng giá cả và mối quan hệ giữa các đồng tiền khác nhau, chọn đối tượng giao dịch có không gian hoạt động nhiều nhất.
Tối ưu hóa chiến lược dừng lỗ, xác định các tham số tối ưu thông qua phân tích thống kê hậu quả.
Chiến lược này là một chiến lược giao dịch tiền điện tử nhiều thời gian. Nó chú ý đến biến động giá trong thị trường trong thời gian ngắn và trung hạn, sử dụng chỉ số Brin để đánh giá trạng thái trống MULIT của thị trường. Đồng thời, nó sử dụng giá Bitcoin làm chuẩn và tín hiệu tham chiếu thị trường, hỗ trợ đánh giá xu hướng tổng thể của toàn bộ thị trường tiền điện tử.
/*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)