Cách xuất dữ liệu biểu đồ NinjaTrader, OHLCV và giá trị chỉ báo ra CSV
NinjaTrader xuất dữ liệu thanh nến OHLCV ngay trong ứng dụng qua Data Manager: nhấp chuột phải vào một công cụ, chọn xuất, và bạn nhận một tệp CSV phân tách bằng dấu chấm phẩy gồm ngày, giờ, giá mở, cao, thấp, đóng và khối lượng. Giá trị chỉ báo không nằm trong bản xuất đó. Để lấy giá trị chỉ báo ra, bạn cần viết một chỉ báo NinjaScript in các giá trị ra tệp. Dưới đây là cách hoạt động của cả hai hướng.
- Data Manager của NinjaTrader xuất dữ liệu thanh nến OHLCV ra CSV phân tách bằng dấu chấm phẩy; định dạng là ngày và giờ, rồi giá mở, cao, thấp, đóng và khối lượng.
- Giá trị chỉ báo không có trong bản xuất OHLCV tiêu chuẩn và cần một chỉ báo xuất bằng NinjaScript để ghi giá trị ra tệp.
- Muốn có đầu ra gồm cả OHLCV và chỉ báo, bạn phải chạy bản xuất NinjaScript song song với bản xuất dữ liệu thanh nến rồi gộp hai đầu ra.
Cách xuất dữ liệu thanh nến OHLCV từ NinjaTrader
NinjaTrader 8 lưu dữ liệu thanh nến lịch sử trong cơ sở dữ liệu cục bộ của riêng nó. Để xuất: mở Control Center, vào Tools > Historical Data (hoặc Data Manager ở một số phiên bản), nhấp chuột phải vào công cụ bạn muốn và chọn Export. Chọn khoảng ngày và khung thời gian, rồi xác nhận. NinjaTrader ghi một tệp CSV vào thư mục đầu ra bạn đã chọn.
Tệp CSV xuất ra mặc định dùng dấu chấm phẩy làm dấu phân tách thay vì dấu phẩy. Thứ tự cột là: Date;Time;Open;High;Low;Close;Volume cho các khung thời gian trong ngày, hoặc Date;Open;High;Low;Close;Volume cho thanh nến ngày. Định dạng ngày là YYYYMMDD và định dạng giờ là HHMMSS.
Bản xuất OHLCV bao gồm bất kỳ dữ liệu lịch sử nào NinjaTrader đã tải cho công cụ và khung thời gian đó. Nếu bạn cần thêm lịch sử, hãy tải trước qua các công cụ tải dữ liệu lịch sử của nền tảng rồi mới xuất.
Bản xuất OHLCV tiêu chuẩn của NinjaTrader không bao gồm gì
Bản xuất OHLCV từ Data Manager chỉ chứa dữ liệu thanh nến. Nó không bao gồm: giá trị chỉ báo tính từ các thanh nến đó, đối tượng vẽ hay dữ liệu ghi chú, lịch sử giao dịch, hoặc ghi chú cấp phiên.
Tệp này là bản xuất dữ liệu giá thô. Lớp tính toán chỉ báo nằm hoàn toàn trong môi trường thực thi của NinjaTrader và không được tuần tự hóa vào tệp dữ liệu thanh nến. Nếu quy trình phân tích của bạn phụ thuộc vào các chỉ số chỉ báo cụ thể bên cạnh giá, bản xuất chỉ có OHLCV sẽ không mang theo bối cảnh đó.
Để xuất có cấu trúc dữ liệu nét vẽ và ghi chú cùng với OHLCV, xem /resources/articles/ninjatrader-drawing-export.
| Loại dữ liệu | Có trong bản xuất Data Manager |
|---|---|
| Giá mở, cao, thấp, đóng (mỗi thanh) | Có |
| Khối lượng (mỗi thanh) | Có |
| Dấu thời gian ngày và giờ | Có |
| Giá trị chỉ báo (EMA, RSI, VWAP, v.v.) | Không |
| Đối tượng vẽ và ghi chú | Không |
| Lịch sử giao dịch và lệnh khớp | Không |
| Ghi chú cấp phiên | Không |
Danh sách công cụ và tháng hợp đồng trong NinjaTrader: theo quý hay theo tháng
Danh sách công cụ nằm trong Tools, rồi Instrument Lists, ở NinjaTrader Control Center. Một danh sách gom các công cụ lại để bạn chạy Strategy Analyzer hoặc Market Analyzer trên tất cả cùng lúc, hoặc tải nhanh chúng vào các cửa sổ khác.
Hợp đồng tương lai trong NinjaTrader mang kỳ đáo hạn trong tên, chẳng hạn ES 12-26. Tần suất xuất hiện tháng hợp đồng mới do sàn quy định: hợp đồng tương lai chỉ số cổ phiếu của CME như ES và NQ niêm yết hợp đồng theo quý (tháng 3, tháng 6, tháng 9 và tháng 12), còn dầu thô (CL) niêm yết một hợp đồng mỗi tháng. Không hợp đồng tương lai chỉ số phổ biến nào niêm yết mỗi năm một lần.
Khi một hợp đồng tới ngày chuyển kỳ, Tools, rồi Database Management, sẽ chuyển các công cụ sang kỳ tiếp theo. Hướng dẫn trợ giúp của NinjaTrader cho biết việc chuyển kỳ cập nhật kỳ đáo hạn trên mọi danh sách công cụ và cửa sổ trong các workspace đang mở, và bạn lưu các workspace để giữ thay đổi. Chiến lược NinjaScript không tự chuyển kỳ.
Khi xuất dữ liệu, hãy kiểm tra Merge Policy trong Tools, Options, Market data. MergeBackAdjusted nối từng kỳ đáo hạn thành một lịch sử liên tục, có độ lệch tại các ngày chuyển kỳ; Do Not Merge giữ một tháng hợp đồng. Hãy ghi tháng hợp đồng và thiết lập gộp vào tên tệp để sau này khớp lại được các thanh nến.
- Hợp đồng tương lai chỉ số cổ phiếu (ES, NQ): theo quý, tháng 3, tháng 6, tháng 9, tháng 12.
- Dầu thô (CL): một hợp đồng mới mỗi tháng.
- Chuyển kỳ trong Database Management cập nhật mọi danh sách công cụ; hãy lưu lại các workspace.
- Merge Policy quyết định lịch sử được xuất trải qua một hay nhiều hợp đồng.
Cách xuất giá trị chỉ báo từ NinjaTrader
Để đưa giá trị chỉ báo vào tệp CSV, bạn viết một chỉ báo NinjaScript tính giá trị bạn muốn và ghi nó ra tệp ở mỗi lần cập nhật thanh nến. Môi trường NinjaScript của NinjaTrader có quyền dùng System.IO để ghi tệp.
Mẫu cơ bản là: trong OnStateChange cho State.DataLoaded, mở một StreamWriter tới đường dẫn tệp đích. Trong OnBarUpdate, nếu BarsInProgress == 0 và IsFirstTickOfBar, ghi Date, Time và các giá trị chỉ báo của thanh nến hiện tại vào StreamWriter. Trong OnStateChange cho State.Terminated, đóng StreamWriter.
Cách dùng StreamWriter cho bạn bản ghi theo từng thanh nến của bất kỳ chỉ báo nào có trong thư viện của NinjaTrader hoặc bất kỳ chỉ báo tùy chỉnh nào bạn đã viết. Đầu ra là một tệp văn bản có dấu phân tách mà bạn có thể mở trong Excel hoặc nhập vào bất kỳ công cụ phân tích nào. Để xem một lựa chọn thay thế cho việc xuất phụ thuộc nền tảng, xem /resources/articles/thinkorswim-to-csv-xlsx-annotations.
Gộp OHLCV và giá trị chỉ báo vào một tệp
Có hai cách để gộp thanh nến OHLCV với giá trị chỉ báo. Cách thứ nhất là viết một chỉ báo xuất NinjaScript duy nhất, xuất các trường OHLCV và giá trị chỉ báo trong mỗi dòng, cách này giữ mọi thứ khớp với cùng một dấu thời gian của thanh nến.
Cách thứ hai là xuất OHLCV từ Data Manager và xuất giá trị chỉ báo riêng qua NinjaScript, rồi gộp hai tệp trong bảng tính hoặc tập lệnh, dùng dấu thời gian chung làm khóa nối. Định dạng dấu thời gian phải nhất quán giữa hai tệp để việc gộp hoạt động đúng.
Cách dùng NinjaScript một tệp gọn hơn cho việc phân tích nhưng đòi hỏi kỹ năng NinjaScript để triển khai. Cách gộp hoạt động mà không cần mã tùy chỉnh nếu các định dạng dấu thời gian khớp nhau.
Nơi bản xuất của NinjaTrader còn thiếu và khi nào nên bổ sung
Quy trình xuất của NinjaTrader, dù từ Data Manager hay qua NinjaScript, đáng tin cậy để trích dữ liệu theo từng thanh nến nhưng đòi hỏi phát triển NinjaScript cho bất cứ thứ gì ngoài OHLCV thô. Người không phải lập trình viên gặp một rào cản đáng kể với việc xuất giá trị chỉ báo.
Hạn chế còn lại là khả năng mang theo ghi chú: nét vẽ trên biểu đồ, nội dung ghi chú và các mức hỗ trợ kháng cự vẽ trong NinjaTrader không có trong bản xuất OHLCV hay chỉ báo. Với các quy trình cần mang bối cảnh biểu đồ cùng dữ liệu thanh nến, cần một lớp xuất ghi chú bổ sung.
Về lớp ghi chú độc lập với nền tảng đó, xem /resources/articles/chart-annotation-export-for-trading-journal-xlsx-csv và /resources/articles/export-tradingview-indicator-values-csv để so sánh nhiều nền tảng về các cách xuất chỉ báo.
Câu hỏi thường gặp
- NinjaTrader có xuất được giá trị chỉ báo ra CSV sẵn trong ứng dụng không?
- Không. Bản xuất OHLCV từ Data Manager chỉ gồm dữ liệu giá và khối lượng của thanh nến. Để xuất giá trị chỉ báo, bạn cần viết một chỉ báo NinjaScript dùng System.IO.StreamWriter để ghi giá trị ra tệp ở mỗi lần cập nhật thanh nến.
- Có thể xuất dữ liệu OHLCV nào từ một biểu đồ NinjaTrader?
- Dùng Data Manager, bạn xuất được ngày, giờ, giá mở, cao, thấp, đóng và khối lượng cho bất kỳ công cụ và khung thời gian nào NinjaTrader đã tải. Đầu ra là CSV phân tách bằng dấu chấm phẩy. Bản xuất trong ngày có cột giờ; bản xuất theo ngày thì không.
- Cách tốt nhất để lấy dữ liệu biểu đồ NinjaTrader cho phân tích bên ngoài là gì?
- Với dữ liệu thanh nến OHLCV: dùng bản xuất Data Manager. Với giá trị chỉ báo: viết một chỉ báo xuất NinjaScript ghi chỉ số chỉ báo theo từng thanh nến ra tệp cùng các trường OHLCV. Gộp các đầu ra theo dấu thời gian nếu dùng hai bản xuất riêng.
- Dấu phân tách trong bản xuất CSV của NinjaTrader là gì?
- NinjaTrader dùng dấu chấm phẩy làm dấu phân tách thay vì dấu phẩy trong bản xuất CSV mặc định. Khi nhập vào Excel hoặc công cụ khác, hãy chọn dấu 'chấm phẩy' làm dấu phân tách thay vì dấu phẩy khi nhập.
- Hợp đồng tương lai trên NinjaTrader theo quý hay theo tháng?
- Tùy vào cách sàn niêm yết. ES và NQ niêm yết hợp đồng theo quý vào tháng 3, tháng 6, tháng 9 và tháng 12; CL niêm yết hằng tháng. NinjaTrader đặt tên mỗi hợp đồng theo kỳ đáo hạn, chẳng hạn ES 12-26, và Tools, rồi Database Management, chuyển các danh sách công cụ sang tháng kế tiếp.
Dùng thử MyLinedChart
MyLinedChart lưu nét vẽ, ghi chú và giá trị chỉ báo của bạn thành dữ liệu để bạn xuất, xem lại và dùng lại.
Khám phá MyLinedChart