Nhận được mảng cấu trúc {@struct/Record Record} của giao dịch hoặc hợp đồng tương ứng với cặp giao dịch được đặt hiện tại, mã hợp đồng, tức là dữ liệu đường K.
Cácexchange.GetRecords()
hàm trả về một mảng cấu trúc {@struct/Record Record} khi yêu cầu dữ liệu thành công, và nó trả về giá trị không khi yêu cầu dữ liệu thất bại.
{@struct/Record Record} mảng, giá trị không
trao đổi.GetRecords() trao đổi.GetRecords (tượng hiệu) exchange.GetRecords (thông hiệu, chấm) exchange.GetRecords ((thượng hiệu, thời gian, giới hạn) trao đổi.GetRecords (thời gian) exchange.GetRecords (thời gian, giới hạn)
Các thông sốsymbol
được sử dụng để xác định cặp giao dịch cụ thể và mã hợp đồng tương ứng với dữ liệu mảng {@struct/Record Record} được yêu cầu. Nếu tham số này không được truyền, dữ liệu K-line của cặp giao dịch và mã hợp đồng được đặt hiện tại sẽ được yêu cầu theo mặc định. Khi gọi mã giao dịchexchange.GetRecords(symbol)
chức năng,exchange
là đối tượng trao đổi tại chỗ. Nếu bạn cần yêu cầu để có được dữ liệu với các đồng tiền mệnh giá là USDT và các đồng tiền giao dịch là BTC, các tham sốsymbol
là:"BTC_USDT"
, và định dạng là định dạng cặp giao dịch được xác định bởi nền tảng FMZ.exchange.GetRecords(symbol)
chức năng,exchange
là đối tượng trao đổi tương lai. Nếu bạn cần yêu cầu dữ liệu sổ lệnh của hợp đồng vĩnh viễn tiêu chuẩn U của BTCsymbol
là:"BTC_USDT.swap"
, và định dạng là một sự kết hợp củacặp giao dịchvàmã hợp đồngđược xác định bởi nền tảng FMZ, được tách bởi ký tự exchange.GetRecords(symbol)
chức năng,exchange
là đối tượng trao đổi tương lai. Nếu bạn cần yêu cầu dữ liệu sổ lệnh của hợp đồng tùy chọn tiêu chuẩn U của BTCsymbol
là:"BTC_USDT.BTC-240108-40000-C"
(lấy Binance Option BTC-240108-40000-C làm ví dụ), định dạng là sự kết hợp củacặp giao dịchđược xác định bởi nền tảng FMZ và mã hợp đồng tùy chọn cụ thể được xác định bởi sàn giao dịch, được tách bằng ký tự period
chỉ định thời gian của dữ liệu đường K được yêu cầu, ví dụ: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, v.v. Giá trị của tham sốperiod
không chỉ có thể vượt qua khoảng thời gian tiêu chuẩn được xác định, mà còn có thể vượt qua các giá trị nguyên trong giây. Nếu tham số này không được vượt qua, khoảng thời gian của dữ liệu đường K được yêu cầu theo mặc định là khoảng thời gian đường K mặc định của cấu hình chiến lược thời gian thực / backtest hiện tại.
thời gian
sai
số
Các thông sốlimit
được sử dụng để xác định chiều dài của dữ liệu K-line được yêu cầu. Nếu tham số này không được truyền, chiều dài yêu cầu mặc định là số lượng tối đa các thanh K-line được yêu cầu tại một thời điểm của giao diện K-line trao đổi.
giới hạn
sai
số
function main() {
// Print K-line data with a K-line period of 120 seconds (2 minutes)
Log(exchange.GetRecords(60 * 2))
// Print K-line data with a K-line period of 5 minutes
Log(exchange.GetRecords(PERIOD_M5))
}
def main():
Log(exchange.GetRecords(60 * 2))
Log(exchange.GetRecords(PERIOD_M5))
void main() {
Log(exchange.GetRecords(60 * 2)[0]);
Log(exchange.GetRecords(PERIOD_M5)[0]);
}
Nhận dữ liệu đường K cho một khoảng thời gian tùy chỉnh.
function main() {
var records = exchange.GetRecords(PERIOD_H1)
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
records = exchange.GetRecords(PERIOD_H1)
Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
auto records = exchange.GetRecords(PERIOD_H1);
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}
Dữ liệu thanh đường K đầu ra:
function main() {
var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
}
def main():
records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
void main() {
auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
Log(records);
}
Khi cấu hìnhexchange
đối tượng là một đối tượng giao dịch tương lai, sử dụngsymbol
, period
, vàlimit
các tham số để yêu cầu dữ liệu dòng K của một sản phẩm cụ thể (sản phẩm tương lai).
Thời gian K-line mặc định có thể được thiết lập trong backtest và trang giao dịch thực.exchange.GetRecords()
Nếu không có thông số nào được chỉ định khi gọi hàm, dữ liệu K-line tương ứng sẽ được trả về theo thời gian K-line được thiết lập trong backtest và các thông số thị trường thực tế.
Giá trị trả về là một mảng củaRecord
các cấu trúc, dữ liệu đường K được trả về sẽ được tích lũy theo thời gian, giới hạn trên của các thanh đường K tích lũy bị ảnh hưởng bởiexchange.SetMaxBarLen()
cài đặt chức năng. giới hạn mặc định là 5000 thanh khi nó không được thiết lập. Khi dữ liệu đường K đạt đến giới hạn tích lũy thanh đường K, nó sẽ được cập nhật bằng cách thêm một thanh đường K và xóa thanh đường K sớm nhất (ví dụ như hàng đợi vào / ra). Một số sàn giao dịch không cung cấp giao diện đường K, vì vậy docker thu thập dữ liệu hồ sơ giao dịch thị trường (Trade
cấu trúc mảng) trong thời gian thực để tạo ra K-đường.
Nếu giao diện K-line của trao đổi hỗ trợ truy vấn page, nhiều yêu cầu API sẽ được thực hiện khi gọiexchange.SetMaxBarLen()
chức năng để thiết lập một chiều dài đường K lớn hơn.
Khiexchange.GetRecords()
- Hệ thống backtesting sẽ nhận được một số lượng nhất định các thanh K-line trước khi bắt đầu khoảng thời gian backtesting trước (mục mặc định là 5000, các thiết lập của hệ thống backtesting và số lượng dữ liệu sẽ ảnh hưởng đến số lượng cuối cùng được trả về), như dữ liệu K-line ban đầu. - Số lượng các thanh K-line thu được trong giao dịch thực tế dựa trên số lượng dữ liệu tối đa có thể thu được từ giao diện K-line của sàn giao dịch.
Cácperiod
tham số được thiết lập thành 5, đó là một yêu cầu để có được dữ liệu K-line với một khoảng thời gian 5 giây.period
tham số không thể chia cho 60 (tức là, thời gian được đại diện không thể chia cho phút).exchange.GetTrades()
để thu thập dữ liệu ghi chép giao dịch và tổng hợp các dữ liệu K-line cần thiết.period
tham số được chia cho 60, sau đó dữ liệu đường K cần thiết được tổng hợp bằng cách sử dụng dữ liệu đường K tối thiểu 1 phút (nếu có thể, dữ liệu đường K cần thiết được tổng hợp bằng cách sử dụng khoảng thời gian lớn hơn).
Việc thử nghiệm ngược cấp độ mô phỏng trong hệ thống kiểm tra ngược đòi hỏi phải thiết lập khoảng thời gian K-line cơ bản (khi hệ thống kiểm tra ngược mô phỏng kiểm tra ngược cấp độ, dữ liệu K-line tương ứng được sử dụng để tạo dữ liệu Tick theo khoảng thời gian K-line cơ bản được thiết lập).
CácC++
ngôn ngữ có ví dụ mã sau đây nếu bạn cần xây dựng dữ liệu K-line của riêng bạn:
#include <sstream>
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
// Output display: Records[10]
Log(r);
auto ma = TA.MA(r,10);
// Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
Log(ma);
}
Các sàn giao dịch không hỗ trợexchange.GetRecords()
chức năng:
Tên chức năng | Không hỗ trợ trao đổi tại chỗ | Giao dịch tương lai không được hỗ trợ |
---|---|---|
GetRecords | Zaif / Coincheck / BitFlyer | Tiền tương lai_Aevo |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}
exchange.GetTrades exchange.GetPeriod