
Chiến lược này là một chiến lược giao dịch tần số cao dựa trên đường K 3 phút của sàn giao dịch Coinbase. Nó tính toán đường lên và xuống của đường K để đánh giá xem giá có cơ hội đảo ngược trong thời gian ngắn hay không. Khi giá tăng hoặc giảm mạnh, chiến lược sẽ thực hiện vị trí trái ngược với xu hướng để mong đợi đường ngắn đảo ngược.
Chiến lược này chủ yếu đánh giá xem liệu có cơ hội nào cho giá tăng quá mức hoặc giảm quá mức trong thời gian ngắn. Việc tăng quá mức hoặc giảm thường xuất phát từ cảm xúc lạc quan hoặc bi quan quá mức của thị trường. Khi sự mất cân bằng cảm xúc tạm thời này xảy ra, giá thường sẽ bị đảo ngược.
Cụ thể, chiến lược tính toán kích thước của đường K trên và dưới, đường bóng càng lớn thì sức mạnh mua và sức mạnh bán sẽ đối đầu mạnh mẽ hơn khi đường K hiện tại chưa kết thúc. Nếu đường bóng trên quá lớn, có nghĩa là nhiều giao dịch mua đã bị phá giá trước khi đường K kết thúc, báo hiệu sức mạnh đa đầu sắp suy yếu. Nếu đường bóng dưới quá lớn, báo hiệu nhiều giao dịch mua đã được thâu tóm trước khi đường K kết thúc, báo hiệu sức mạnh trống sắp suy yếu.
Theo logic phán đoán này, chiến lược khi đường bóng quá lớn (tức là khi giá tăng quá mức mua bán quá mức bán), chọn vị trí ngược với xu hướng. Giá dừng vào vị trí nhiều đầu là giá trung bình của đường bóng dưới, giá dừng vào vị trí trống là giá trung bình của đường bóng trên.
Ưu điểm lớn nhất của chiến lược này là biến động thị trường trong thời gian ngắn vô lý, để thực hiện phá giá trái ngược. Nó chỉ cần ít tiền hơn để có được hiệu quả cao hơn.
Một lợi thế khác là Coinbase là một sàn giao dịch có nhiều biến động. Chiến lược này đã tận dụng lợi nhuận từ sự biến động mạnh mẽ của giá.
Rủi ro lớn nhất đối với chiến lược này là biến động giá trong ngắn hạn có thể không có nhiều khả năng dự đoán. Kích thước của đường bóng lên xuống không nhất thiết phải nắm bắt được tất cả thông tin về sự đảo ngược giá cả.
Ngoài ra, thiết lập điểm dừng cũng rất quan trọng. Nếu điểm dừng quá thoải mái, có thể làm tăng tổn thất của chiến lược; Nếu điểm dừng quá nghiêm ngặt, có thể bỏ lỡ cơ hội. Ở đây cần tìm sự cân bằng giữa tỷ lệ thua lỗ và tỷ lệ thắng.
Chiến lược này có thể được tối ưu hóa hơn nữa từ các khía cạnh sau:
Chiến lược này nói chung là một chiến lược đánh giá thống kê điển hình. Nó cố gắng tận dụng sự biến động không hợp lý của giá trong thời gian ngắn, có một số logic và khả thi. Bước tiếp theo có thể là thực hiện các thí nghiệm tối ưu hóa từ nhiều chiều hơn, làm cho các tham số của chiến lược và các quy tắc giao dịch trở nên khoa học hơn.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//for coinbase, 3min logic
//This strategy trades against the short term trend. The first position can be either long or short.
//In the short term, prices fluctuate up and down on wide spread exchanges.
//And if the price moves to one side, the price tends to return to its original position momentarily.
//This strategy set stop order. Stop price is calculated with upper and lower shadows.
strategy("ndb_mm_for_coinbase_btcusd", overlay=true, initial_capital=100000, slippage=50)
fromyear = input(2019, minval = 2017, maxval = 2100, title = "From Year")
frommonth = input(12, minval = 1, maxval = 12, title = "From Month")
fromday = input(1, minval = 01, maxval = 31, title = "From day")
toyear = input(2100, minval = 1900, maxval = 2100, title = "To Year")
tomonth = input(12, minval = 01, maxval = 12, title = "To Month")
today = input(31, minval = 01, maxval = 31, title = "To day")
end = true
length = input(3, title="period")
mag = input(1.2, title="sigma", minval=0.1, step=0.1)
up_shadow = abs(high - max(open, close))
dn_shadow = abs(low - min(open, close))
up_shadow_ma = sma(up_shadow, length) * mag
dn_shadow_ma = sma(dn_shadow, length) * mag
upper = close + dn_shadow_ma
lower = close - up_shadow_ma
plot(upper, color=red)
plot(lower, color=blue)
if strategy.position_size == 0
strategy.entry("Long", strategy.long)
if 0 < strategy.position_size
strategy.entry("Short", strategy.short, stop=lower, when=end)
if 0 > strategy.position_size
strategy.entry("Long", strategy.long, stop=upper, when=end)