Chiến lược giao dịch định lượng trung dài dựa trên các băng tần Bollinger

Tác giả:ChaoZhang, Ngày: 2023-09-14 20:09:13
Tags:

Bài viết này giải thích chi tiết một chiến lược giao dịch định lượng trung dài hạn bằng cách sử dụng Bollinger Bands. Nó tạo ra các tín hiệu giao dịch bằng cách xác định sự đột phá giá thông qua Bollinger Bands.

I. Chiến lược logic

Chiến lược chủ yếu sử dụng các chỉ số Bollinger Bands sau:

  1. Tính toán giá trung bình chuyển động như đường cơ sở trong một khoảng thời gian nhất định.

  2. Tính toán độ lệch chuẩn giá và nhân nó với một yếu tố là phạm vi.

  3. Phạm vi trung bình ± tạo thành các dải trên và dưới.

  4. Giá phá vỡ các dải tạo ra tín hiệu giao dịch.

Logic giao dịch cụ thể là:

Khi giá vượt qua dải dưới, một tín hiệu mua được tạo ra để có các vị trí dài.

Khi giá vượt qua dải trên, một tín hiệu bán được tạo ra để có các vị trí ngắn.

Lấy lợi nhuận và dừng lỗ được thiết lập ở tỷ lệ phần trăm cố định để khóa lợi nhuận và lỗ.

Nhìn chung, chiến lược xác định xu hướng trung dài hạn bằng cách phát hiện sự đột phá giá của các dải Bollinger.

II. Lợi thế của Chiến lược

Những lợi thế chính của chiến lược này là:

Thứ nhất, Bollinger Bands có thể xác định sự đột phá và đảo ngược giá để nắm bắt xu hướng trung hạn và dài hạn.

Thứ hai, dừng lỗ trực tiếp và lấy lợi nhuận thiết lập hỗ trợ trong quản lý tiền bạc thận trọng.

Cuối cùng, các quy tắc đơn giản và rõ ràng làm cho chiến lược này dễ dàng thực hiện và tối ưu hóa.

III. Các rủi ro tiềm ẩn

Tuy nhiên, cần lưu ý các rủi ro sau:

Thứ nhất, các băng tần cần được tối ưu hóa chính xác cho các tín hiệu ổn định.

Thứ hai, dừng lỗ đặt rủi ro quá nhỏ không đủ lợi nhuận, trong khi quá lớn làm tăng rủi ro.

Cuối cùng, cần phải ngăn chặn giao dịch quá thường xuyên.

IV. Tóm tắt

Tóm lại, bài viết này đã giải thích một chiến lược giao dịch định lượng trung hạn sử dụng Bollinger Bands để theo dõi xu hướng. Nó có thể theo dõi xu hướng giá trong trung hạn đến dài hạn, nhưng đòi hỏi phải điều chỉnh chi tiết khoảng thời gian băng và mức dừng lỗ. Nhìn chung nó cung cấp một cách tiếp cận theo xu hướng tương đối đơn giản và trực quan.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//------------------------------------
//
// 『おすすめストラテジーSS1』
// 『BitMEX XBTUSD 30分足向け中長期用ストラテジー』
//  本番用ストラテジーファイル
//
//
//
//------------------------------------
//【説明】
// 『おすすめストラテジーSS1』のPineスクリプトです。
//------------------------------------
 
//@version=3
// strategy(title = "『おすすめストラテジーSS1』", shorttitle="Strategy1", initial_capital=1200000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, overlay=true)
 
 
//------------------------------------
//
//ストラテジーロジック
//
//------------------------------------
 
 
source = close
 
length = input(51, minval = 1, title = "移動平均")
mult = input(3.01, minval = 0.001,step=0.01, maxval = 10, title = "マルチ")
 
Rikaku = input(14.2, minval = 0.1, step=0.1,maxval = 100, title = "利確(%)")
Songiri = input(99, minval = 0.1, maxval = 100, title = "損切(%)")
 
base = sma(source, length)
range = mult * stdev(source, length)
 
upper = base + range
lower = base - range
 
short_cond = crossover(source, lower)
long_cond = crossunder(source, upper)
 
 
cl = 0.0
cl := na(cl[1]) ? sma(source, length) : (cl[1] * (length - 1) + source) / length
 
plot(cl, color=black)
 
up_plot = plot(upper, color=blue)
low_plot = plot(lower, color=red)
 
fill(up_plot, low_plot,color=#009900)
 
//------------------------------------
//
//オーダー処理
//
//------------------------------------
 
 
if (long_cond)
 
	strategy.entry("Long_Entry", strategy.long, oca_name="BollingerBands", comment="Long")
 
	//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
	//strategy.exit("LE Exit", "BBandLE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
	strategy.exit("Long_Exit", "Long_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="LongClose")
 
if (short_cond)
 
	strategy.entry("Short_Entry", strategy.short, oca_name="BollingerBands",  comment="Short")
 
    //BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
    //strategy.exit("SE Exit", "BBandSE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
    strategy.exit("Short_Exit", "Short_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="ShortClose")

Thêm nữa