Bollinger Band Dynamic Take Profit và Dynamic Position Adding Strategy

Tác giả:ChaoZhang, Ngày: 2024-03-22 15:49:28
Tags:

img

Tổng quan chiến lược

Chiến lược này dựa trên chỉ số Bollinger Band. Nó mở các vị trí khi giá đạt đến dải trên hoặc dưới, và thiết lập động lấy lợi nhuận và lập luận thêm vị trí động. Khi giá phục hồi từ dải dưới và phá vỡ dải giữa, chiến lược coi xu hướng tăng đã hình thành. Tại thời điểm này, chiến lược sẽ thêm các vị trí khi giá kéo trở lại một tỷ lệ phần trăm nhất định của dải giữa. Khi giá cuối cùng phá vỡ dải trên, chiến lược đóng các vị trí để lấy lợi nhuận. Trong xu hướng giảm, chiến lược áp dụng logic hoạt động ngược lại. Thông qua việc lấy lợi nhuận động và thêm vị trí động dựa trên Dải Bollinger, chiến lược này có thể thu được nhiều lợi nhuận hơn trong các thị trường xu hướng.

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

Các nguyên tắc chính của chiến lược này là như sau:

  1. Tính toán các dải trên, giữa và dưới của Bollinger Bands. Dải trên và dưới được tính bằng cách cộng và trừ N lần độ lệch chuẩn từ dải giữa, nơi N có thể được tùy chỉnh.

  2. Khi giá đóng phá vỡ dải dưới và không có vị trí nào được mở trước đó, chiến lược sẽ mở một vị trí dài; khi giá đóng phá vỡ dải trên và không có vị trí nào được mở trước đó, chiến lược sẽ mở một vị trí ngắn.

  3. Sau khi mở một vị trí dài, nếu giá đóng phá vỡ lên qua dải giữa, nó được coi là một xu hướng tăng đã hình thành, và biến baseCrossed được đánh dấu là đúng. Sau khi mở một vị trí ngắn, nếu giá đóng phá vỡ xuống qua dải giữa, baseCrossed cũng được đánh dấu là đúng.

  4. Trong trường hợp một vị trí dài, nếu giá đóng phá vỡ dải dưới và cơ sởCrossed là đúng, và giá hiện tại đã giảm hơn 2% so với giá mở ban đầu, chiến lược thêm các vị trí vào thời điểm này và đặt lại cơ sởCrossed thành sai cùng một lúc. Trường hợp một vị trí ngắn là ngược lại.

  5. Nếu giá đóng phá vỡ dải trên khi nắm giữ vị trí dài, hoặc giá đóng phá vỡ dải dưới khi nắm giữ vị trí ngắn, chiến lược sẽ đóng tất cả các vị trí, lấy lợi nhuận và đặt lại các biến số khác nhau để chuẩn bị cho việc mở tiếp theo.

Thông qua việc mở động trên, thêm các vị trí và logic lấy lợi nhuận, chiến lược này có thể hoạt động linh hoạt trong các thị trường xu hướng để đạt được lợi nhuận cao hơn.

Phân tích lợi thế

  1. Lợi nhuận động: Chiến lược này điều chỉnh năng động mức lợi nhuận thông qua các dải trên và dưới của Bollinger Bands. So với lợi nhuận điểm cố định, nó có thể thích nghi tốt hơn với biến động thị trường và bảo vệ lợi nhuận một cách linh hoạt.

  2. Thêm vị trí động: Trong giai đoạn rút lui sau khi xu hướng được hình thành, chiến lược sẽ dần dần thêm các vị trí, có thể đạt được lợi nhuận cao hơn trong các thị trường xu hướng.

  3. Các thông số linh hoạt: Các thông số của Bollinger Bands, chẳng hạn như giá trị N và P, có thể được điều chỉnh linh hoạt để thích nghi với các đặc điểm thị trường và phong cách giao dịch khác nhau.

  4. Khả năng thích nghi mạnh mẽ: Bollinger Band là một chỉ số kỹ thuật cổ điển với khả năng nắm bắt xu hướng tốt. Kết hợp với quản lý vị trí năng động, nó có thể đóng một vai trò ổn định trên các thị trường tài chính khác nhau.

  5. Logic rõ ràng: Các điều kiện mở và đóng và logic của việc thêm và giảm các vị trí của chiến lược này rất rõ ràng và dễ hiểu, điều này thuận tiện cho các nhà giao dịch hiểu và kiểm soát. Logic rõ ràng cũng có nghĩa là dễ dàng thực hiện phát triển thứ cấp và tối ưu hóa chiến lược.

Phân tích rủi ro

  1. Thị trường dao động: Các chiến lược Bollinger Band thường hoạt động kém trong các thị trường dao động.

  2. Sự đảo ngược xu hướng: Vào thời điểm quan trọng của sự đảo ngược xu hướng, chiến lược này có thể gặp sự suy đoán chậm, dẫn đến việc thêm các vị trí theo hướng sai, dẫn đến giảm lớn hơn.

  3. Các tình huống cực đoan: Trong các tình huống cực đoan (như tăng và giảm mạnh), xu hướng của Bollinger Bands có thể bất thường, khiến chiến lược thất bại.

  4. Cài đặt tham số: Cài đặt tham số không phù hợp sẽ ảnh hưởng nghiêm trọng đến hiệu suất của chiến lược này. Ví dụ: đặt giá trị N quá nhỏ sẽ dẫn đến giao dịch thường xuyên, và đặt giá trị N quá lớn sẽ dẫn đến sự chậm trễ tín hiệu.

  5. Các sự kiện thiên nga đen: Nếu có các sự kiện chính trị và kinh tế lớn, chiến lược này có thể phải đối mặt với rủi ro lớn hơn.

Để kiểm soát các rủi ro trên, chúng ta có thể bắt đầu từ hai khía cạnh: 1) Đặt các tham số hợp lý và tối ưu hóa các tham số cho các mục tiêu và điều kiện thị trường khác nhau; 2) Thêm nhiều điều kiện lọc vào chiến lược, chẳng hạn như đánh giá xu hướng, lọc biến động, vv, để cải thiện chất lượng tín hiệu. Ngoài ra, trong sử dụng thực tế, cũng cần phải làm một công việc tốt trong kiểm soát vị trí và quản lý rủi ro, và kiểm soát chặt chẽ sự tiếp xúc với rủi ro của một giao dịch.

Hướng tối ưu hóa

  1. Chế độ lọc xu hướng: Thêm logic đánh giá xu hướng khi mở các vị trí, chẳng hạn như sử dụng sắp xếp tăng MA như một điều kiện lọc cho việc mua dài, và sắp xếp giảm MA như một điều kiện lọc cho việc mua ngắn, có thể cải thiện tỷ lệ thành công của việc nắm bắt xu hướng.

  2. Bộ lọc biến động: Bollinger Band thực sự là một loại chỉ số biến động. Các chỉ số biến động như ATR và biến động lịch sử có thể được giới thiệu để xác định tình trạng biến động của thị trường. Các vị trí có thể được giảm phù hợp trong các trạng thái biến động cao và tăng trong các trạng thái biến động thấp, để kiểm soát tốt hơn rủi ro.

  3. Tối ưu hóa tham số động: Các tham số của Bollinger Bands có thể được điều chỉnh động theo điều kiện thị trường. Ví dụ, giá trị N có thể tăng trong thị trường xu hướng và giảm trong thị trường dao động. Điều này đòi hỏi phải sử dụng máy học và các công nghệ khác để tìm các tham số tối ưu thông qua đào tạo trên dữ liệu lịch sử.

  4. Chiến lược kết hợp: Chiến lược này có thể được kết hợp với các chiến lược cổ điển khác như MACD và RSI để tạo ra các chiến lược kết hợp, cải thiện độ bền và lợi nhuận của hệ thống.

  5. Thêm logic stop-loss: Hiện tại, chiến lược này thiếu logic stop-loss rõ ràng. Chúng ta có thể xem xét thêm các cơ chế như trailing stop hoặc fixed percentage stop-loss để kiểm soát mức lỗ tối đa của một giao dịch duy nhất.

  6. Tối ưu hóa quản lý vị trí: Trong quá trình thêm và giảm vị trí, các phương pháp quản lý vị trí cổ điển như công thức Kelly và giá trị F tối ưu có thể được sử dụng để tối đa hóa lợi nhuận dưới rủi ro có thể kiểm soát được.

Thông qua các tối ưu hóa trên, tỷ lệ rủi ro-lợi nhuận của chiến lược này có thể được cải thiện hơn nữa, cho phép nó thích nghi tốt hơn với môi trường thị trường thay đổi và mang lại lợi nhuận ổn định cho các nhà giao dịch.

Tóm lại

Chiến lược Bollinger Band Dynamic Take Profit và Dynamic Position Adding là một chiến lược theo dõi xu hướng cổ điển. Dựa trên Bollinger Bands, nó tìm kiếm lợi nhuận xu hướng cao hơn bằng cách điều chỉnh vị trí một cách năng động. Chiến lược này có logic rõ ràng, các tham số linh hoạt và khả năng thích nghi mạnh mẽ. Đây là một chiến lược giao dịch định lượng xứng đáng với nghiên cứu và ứng dụng chuyên sâu. Nhưng đồng thời, chúng ta cũng phải thấy rằng chiến lược này hoạt động kém trong các thị trường dao động và thiếu khả năng đối phó với các tình huống cực đoan và các sự kiện thiên nga đen. Điều này đòi hỏi chúng ta phải tập trung vào tối ưu hóa tham số, kiểm soát rủi ro và chiến lược kết hợp trong ứng dụng thực tế, và thường xuyên kiểm tra hiệu quả của chiến lược trong các điều kiện thị trường khác nhau. Bằng cách hiểu sâu về logic nội bộ của chiến lược này và liên tục tối ưu hóa và cải thiện nó, tôi tin rằng chiến lược này có thể trở thành một công cụ quan trọng cho các nhà giao dịch định lượng và các nhà đầu tư mang lại lợi nhuận lâu dài và ổn định.


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

//@version=5
//  Bollinger Bands 1Bb 상하한 크로스 롱숏 실행

strategy(shorttitle="BB", title="Bollinger Bands", overlay=true )
 // bb
length = input.int(12, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
add = input.float(0.98, step = 0.001)
// plot(upper - lower, "Basis", color=color.red, offset = offset)
var bool entryMade = false
var bool basisCrossed = false
var bool upperCrossed = false
var bool lowerCrossed = false
strategy.initial_capital = 50000
if close < lower and not entryMade
    strategy.entry("롱", strategy.long, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossover(close, basis) and entryMade and not upperCrossed
    basisCrossed := true
if close > upper
    upperCrossed := true
if close < lower and entryMade and basisCrossed and not upperCrossed and close < strategy.position_avg_price*add
    strategy.entry("추가롱", strategy.long, strategy.initial_capital/10000)
    basisCrossed := false
if close > upper
    strategy.close("롱")
    strategy.close("추가롱")
    entryMade := false
    basisCrossed := false
    upperCrossed := false
///////////반대 포지션
if close > upper and not entryMade
    strategy.entry("s", strategy.short, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossunder(close, basis) and entryMade and not lowerCrossed
    basisCrossed := true
if close < lower
    lowerCrossed := true
if close > upper and entryMade and basisCrossed and not lowerCrossed and close > strategy.position_avg_price*add
    strategy.entry("추가s", strategy.short, strategy.initial_capital/10000)
    basisCrossed := false
if close < lower
    strategy.close("s")
    strategy.close("추가s")
    entryMade := false
    basisCrossed := false
    upperCrossed := false


Thêm nữa