
Bài viết này chủ yếu giới thiệu về một chiến lược giao dịch định lượng có tên là Khai động giữ vị trí lợi nhuận theo dõi chiến lược giao dịch Khai. Chiến lược này bằng cách thiết lập một đường dừng xuất phát động dựa trên chỉ số ATR, thực hiện dừng nhanh trong 1-2 đường K sau khi giá xuất hiện thuận lợi đột ngột, để ngăn chặn giá quay trở lại gây thiệt hại.
Chiến lược này có một logic giao dịch rất đơn giản và rõ ràng, cụ thể, nó bao gồm các bước sau:
Sử dụng đường giao thoa 14 SMA và đường giao thoa 28 SMA làm tín hiệu mua và bán. Mua nhiều khi đường giao thoa 14 vượt qua đường giao thoa 28; bán khi đường giao thoa 14 vượt qua đường giao thoa 28 bên dưới.
Tính ATR và nhân nó với một số để có được vị trí dừng động. Ví dụ: thiết lập ATR dài 7, nhân 1,5 và có được chiều rộng kênh dừng động gấp 1,5 lần ATR 7 lần.
Khi hướng giữ vị trí là nhiều đầu, hãy cộng điểm cao với chiều rộng của kênh dừng động để tạo ra đường dây dừng động. Khi hướng giữ vị trí là đầu không, hãy trừ điểm thấp khỏi chiều rộng của kênh dừng động để tạo ra đường dây dừng động.
Một khi giá vượt qua đường dừng động này, nó sẽ dừng ngay lập tức. Điều này có thể bắt được lợi nhuận trong 1-2 đường K sau khi giá đột ngột xuất hiện.
Bằng các bước trên, chiến lược này đạt được hiệu quả theo dõi lợi nhuận giữ vị trí đơn giản nhưng hiệu quả và dừng lại nhanh chóng. Kênh ATR cung cấp khả năng điều chỉnh động cho đến khi dừng lại, trong khi điều kiện 1BAR mới đảm bảo dây dừng chỉ được khởi động trong trường hợp thị trường đột ngột thuận lợi. Điều này có thể giảm hiệu quả trường hợp dừng lại quá sớm.
Chiến lược giao dịch theo dõi lợi nhuận của Binomo có một số ưu điểm:
Nó rất đơn giản, dễ hiểu và phù hợp với người mới bắt đầu.
Thông qua ATR dừng động, bạn có thể tự động theo dõi lợi nhuận giữ vị trí, tránh lợi nhuận nodeList.
Thêm 1 BAR điều kiện điểm cao thấp để chặn chỉ khởi động sau khi xảy ra trường hợp siêu mạnh, giảm hành động sai.
Có thể thiết lập độ dài và số lần ATR khác nhau, điều chỉnh cường độ dừng.
Các cầu thủ có thể dừng lại và rời khỏi sân một cách nhanh chóng, và có thể nắm bắt được những gì đang diễn ra.
Khả năng mở rộng và dễ dàng thực hiện các chiến lược dừng lỗ khác dựa trên khuôn khổ này.
Chiến lược này cũng có một số rủi ro, bao gồm:
ATR có thể bị tăng cường đột ngột, gây ra tình trạng ngưng trệ và rời sân quá sớm.
Không có khả năng lọc hiệu quả tiếng ồn thị trường, dễ bị lừa dối bởi các đột phá giả.
Các nhà phân tích cho rằng, các trường hợp phức tạp không thể được đánh giá một cách hiệu quả nếu chỉ dựa vào sự giao thoa giữa các đường thẳng.
Không có cơ chế dừng lỗ, không thể kiểm soát lỗ hiệu quả.
Cài đặt tham số rủi ro mặc định có thể không phù hợp với tất cả các giống và cần được tối ưu hóa.
Để giảm thiểu các rủi ro trên, có thể tối ưu hóa các khía cạnh sau:
Thêm bộ lọc, kết hợp với các chỉ số khác để lọc các tín hiệu giả.
Tăng chiến lược dừng lỗ, kiểm soát chặt chẽ tổn thất đơn lẻ.
Sử dụng phương pháp Walk Forward Analysis để tối ưu hóa tham số.
Cấu trúc tham số tối ưu hóa cho các giống khác nhau
Thêm các thuật toán học máy để đưa ra quyết định thông minh hơn.
Theo phân tích rủi ro, các hướng tối ưu hóa của chiến lược bao gồm:
Thêm bộ lọc tín hiệu: Có thể thêm các bộ lọc cho các chỉ số khác sau khi nhập tín hiệu, chẳng hạn như kết hợp các chỉ số MACD, Brin và các chỉ số khác, để tránh bị nhiễu gây hiểu nhầm.
Thêm đường dừng: Thêm thiết lập đường dừng dựa trên ATR hoặc dừng di động để kiểm soát tổn thất đơn.
Tối ưu hóa tham số: Tối ưu hóa thiết lập các tham số như độ dài ATR, số nhân ATR và các phương pháp học máy.
Điều chỉnh rủi ro: Điều chỉnh quản lý vị trí và tham số rủi ro theo các đặc điểm của các loại giao dịch khác nhau.
Hỗn hợp mô hìnhTiếp theo, chúng tôi sẽ kết hợp chiến lược này với các mô hình khác như học máy, mạng thần kinh để cải thiện tính chính xác của các quyết định.
Tiến hành can thiệp bên ngoài: Tăng các nút can thiệp nhân tạo để xác định vị trí dừng lỗ tại các thời điểm quan trọng.
Bằng cách tối ưu hóa một số hướng trên, bạn có thể cải thiện đáng kể sự ổn định lợi nhuận của chiến lược.
Chiến lược này có một số rủi ro, có thể được cải thiện từ việc thêm bộ lọc tín hiệu, thêm dừng lỗ, tối ưu hóa tham số, v.v. để thích ứng với môi trường thị trường phức tạp hơn. Nói chung, chiến lược này cung cấp cho chúng tôi một khung chiến lược rất tốt, đáng để nghiên cứu và ứng dụng thêm.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Peter_O
//@version=5
strategy("TrailingTakeProfit example", overlay=true, margin_long=100, margin_short=100, default_qty_value = 1, initial_capital = 100)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if longCondition
strategy.entry("Long", strategy.long, comment="long", alert_message="long")
if shortCondition
strategy.entry("Short", strategy.short, comment="short", alert_message="short")
atr_length=input.int(7, title="ATR Length")
atr_multiplier = input.float(1.5, title="ATR Multiplier")
atr_multiplied = atr_multiplier * ta.atr(atr_length)
ttp_top_bracket = strategy.position_size>0 ? high[1]+atr_multiplied : na
ttp_bottom_bracket = strategy.position_size<0 ? low[1]-atr_multiplied : na
plot(ttp_top_bracket, title="ttp_top_bracket", color=color.lime, style=plot.style_linebr, offset=1)
plot(ttp_bottom_bracket, title="ttp_bottom_bracket", color=color.red, style=plot.style_linebr, offset=1)
strategy.exit("closelong", from_entry="Long", limit=ttp_top_bracket, alert_message = "closelong")
strategy.exit("closeshort", from_entry="Short", limit=ttp_bottom_bracket, alert_message = "closeshort")
// var table alertsDisplayTable = table.new(position.top_right, 1, 5, color.black)
// if barstate.islastconfirmedhistory
// table.cell(alertsDisplayTable, 0, 0, "TradingConnector-compatible alerts sent", text_color=color.white)
// table.cell(alertsDisplayTable, 0, 1, "at Long Entry: long", text_color=color.white)
// table.cell(alertsDisplayTable, 0, 2, "at Short Entry: short", text_color=color.white)
// table.cell(alertsDisplayTable, 0, 3, "at Long Exit: closelong", text_color=color.white)
// table.cell(alertsDisplayTable, 0, 4, "at Short Exit: closeshort", text_color=color.white)