Nhận cấu trúc {@struct/Ticker Ticker} 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 ticker.GetTicker ()
hàm là một hàm thành viên của đối tượng trao đổi {@var/EXCHANGE exchange}, việc sử dụngexchange
Các chức năng thành viên đối tượng (các phương pháp) chỉ liên quan đếnexchange
, và nó sẽ không được lặp lại trong tài liệu.
Cácexchange.GetTicker()
hàm trả về cấu trúc {@struct/Ticker Ticker} khi yêu cầu dữ liệu thành công, và trả về giá trị null khi yêu cầu dữ liệu thất bại.
{@struct/Ticker Ticker}, giá trị không
đổi.GetTicker() trao đổi.GetTicker (bản biểu tượng)
Các thông sốsymbol
được sử dụng để chỉ định cặp giao dịch cụ thể và mã hợp đồng tương ứng với dữ liệu {@struct/Ticker Ticker} được yêu cầu. Nếu tham số này không được truyền, dữ liệu thị trường 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 choexchange.GetTicker(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 dữ liệu thị trường với đồng tiền mệnh giá là USDT và đồng tiền giao dịch là BTC, 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.
Khi gọi choexchange.GetTicker(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 thị trường của hợp đồng vĩnh cửu 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.GetTicker(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 thị trường 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ự
biểu tượng sai chuỗi
function main(){
// If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
// exchange.SetContractType("swap")
var ticker = exchange.GetTicker()
/*
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, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
*/
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
ticker = exchange.GetTicker()
Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
auto ticker = exchange.GetTicker();
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}
Đối với các đối tượng giao dịch tương lai (tức làexchange
hoặcexchanges[0]
), bạn cần thiết lập mã hợp đồng bằng cách sử dụngexchange.SetContractType()
chức năng trước khi gọi chức năng ticker, mà sẽ không được lặp lại.
function main() {
var ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
}
def main():
ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
void main() {
auto ticker = exchange.GetTicker("BTC_USDT");
Log(ticker);
}
Sử dụngsymbol
tham số để yêu cầu dữ liệu thị trường cho một biểu tượng cụ thể (bản tượng điểm).
CácTicker
dữ liệu được trả về bởiexchange.GetTicker()
trong hệ thống backtesting.High
vàLow
là các giá trị mô phỏng, lấy từ một bán và mua một của thị trường tại thời điểm đó.Ticker
dữ liệu được trả về bởiexchange.GetTicker()
trong thị trường thực tế.High
vàLow
Các giá trị dựa trên dữ liệu được trả về bởi trao đổi đóng góiTick
giao diện, bao gồm giá cao nhất và thấp nhất trong một khoảng thời gian nhất định (thường là một khoảng thời gian 24 giờ).
Các sàn giao dịch không hỗ trợexchange.GetTicker()
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ợ |
---|---|---|
GetTicker | – | Tiền tương lai_Aevo |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Nhận cấu trúc {@struct/Depth Depth} 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 sổ lệnh.
Cácexchange.GetDepth()
hàm trả về cấu trúc {@struct/Depth Depth} nếu yêu cầu dữ liệu thành công, và nó trả về null nếu yêu cầu dữ liệu thất bại.
{@struct/Depth Depth}, giá trị không
đổi.GetDepth() đổi.GetDepth (( biểu tượng)
Các thông sốsymbol
được sử dụng để chỉ định cặp giao dịch cụ thể và mã hợp đồng tương ứng với dữ liệu {@struct/Depth Depth} được yêu cầu. Nếu tham số này không được truyền, dữ liệu sổ lệnh 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.GetDepth(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 sổ lệnh với tiền tệ theo mệnh giá là USDT và tiền tệ giao dịch là BTC, 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.GetDepth(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.GetDepth(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ự
function main(){
var depth = exchange.GetDepth()
/*
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, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
*/
var price = depth.Asks[1].Price
Log("Sell 2 price is:", price)
}
def main():
depth = exchange.GetDepth()
price = depth["Asks"][1]["Price"]
Log("Sell 2 price is:", price)
void main() {
auto depth = exchange.GetDepth();
auto price = depth.Asks[1].Price;
Log("Sell 2 price is:", price);
}
Kiểm traexchange.GetDepth()
chức năng:
function main() {
// BTC U-based perpetual contract
var depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
}
def main():
depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
void main() {
auto depth = exchange.GetDepth("BTC_USDT.swap");
Log(depth);
}
Khi cấu hìnhexchange
đối tượng là một đối tượng giao dịch tương lai, sử dụngsymbol
tham số để yêu cầu dữ liệu sổ lệnh của một biểu tượng cụ thể (bản biểu tương lai).
Trong hệ thống backtesting, dữ liệu cho mỗi lớp được trả về bởiexchange.GetDepth()
chức năngMô phỏng Ticktrong hệ thống backtesting, dữ liệu được trả về bởi cácexchange.GetDepth()
chức năngTick thật sựbacktesting là một bức ảnh sâu cấp hai.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Nhận mảng cấu trúc {@struct/Trade Trade} của giao dịch hoặc hợp đồng tương ứng với cặp giao dịch được thiết lập hiện tại, mã hợp đồng, tức là dữ liệu giao dịch thị trường.
Cácexchange.GetTrades()
hàm trả về một mảng cấu trúc {@struct/Trade Trade} nếu yêu cầu dữ liệu thành công, và nó trả về giá trị không nếu yêu cầu dữ liệu thất bại.
{@struct/Trade Trade} mảng, giá trị không
giao dịch.GetTrades ((() giao dịch.GetTrades (định hiệu)
Các thông sốsymbol
được sử dụng để chỉ định cặp giao dịch cụ thể và mã hợp đồng tương ứng với dữ liệu mảng {@struct/Trade Trade} được yêu cầu. Nếu tham số này không được vượt qua, dữ liệu hồ sơ giao dịch mới nhất của cặp giao dịch và mã hợp đồng được thiết lập hiện tại sẽ được yêu cầu theo mặc định.exchange.GetTrades(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 sổ lệnh với tiền tệ theo mệnh giá là USDT và tiền tệ giao dịch là BTC, 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.GetTrades(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.GetTrades(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ự
function main(){
var trades = exchange.GetTrades()
/*
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, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
trades = exchange.GetTrades()
Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
auto trades = exchange.GetTrades();
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}
Kiểm traexchange.GetTrades()
chức năng:
function main() {
// BTC's U-based perpetual contract
var trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
}
def main():
trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
void main() {
auto trades = exchange.GetTrades("BTC_USDT.swap");
Log(trades);
}
Khi cấu hìnhexchange
đối tượng là một đối tượng giao dịch tương lai, sử dụngsymbol
tham số để yêu cầu dữ liệu hồ sơ giao dịch thị trường cho một biểu tượng cụ thể (biểu tượng tương lai).
exchange.GetTrades()
chức năng để có được các cặp giao dịch hiện tại, lịch sử giao dịch của thị trường (không phải của riêng họ) tương ứng với hợp đồng. Một số sàn giao dịch không hỗ trợ chức năng này, và dữ liệu cụ thể được trả về là bao nhiêu trong phạm vi các hồ sơ giao dịch phụ thuộc vào sàn giao dịch và cần được xử lý theo tình huống cụ thể. Dữ liệu trả về là một mảng, nơi mỗi yếu tố của thứ tự thời gian vàexchange.GetRecords ()
hàm trả về cùng một thứ tự dữ liệu, tức là, phần tử cuối cùng của mảng là dữ liệu gần nhất với thời gian hiện tại.
Cácexchange.GetTrades()
hàm trả về một mảng trống khi sử dụngMô phỏng TickCác dữ liệu được trả về bởiexchange.GetTrades()
chức năng khi sử dụngTick thật sựbacktesting trong hệ thống backtesting là dữ liệu chụp tức thời dòng lệnh, tức là mảng cấu trúc {@struct/Trade Trade}.
Các sàn giao dịch không hỗ trợexchange.GetTrades()
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ợ |
---|---|---|
GetTrades | – | Tiền tương lai_BitMart / Tiền tương lai_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
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}
Nhận thời gian K-line được đặt trên trang web nền tảng FMZ Quant Trading khi kiểm tra lại và chạy chiến lược trong giao dịch trực tiếp, tức là thời gian K-line mặc định được sử dụng khi gọiexchange.GetRecords()
chức năng mà không cần thông qua các thông số.
Thời gian K-đường theo giây, giá trị nguyên bằng giây. số
trao đổi.GetPeriod()
function main() {
// For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
var period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
}
def main():
period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
void main() {
auto period = exchange.GetPeriod();
Log("K-line period:", period / (60 * 60.0), "hours");
}
{@fun/Market/exchange.GetRecords exchange.GetRecords}
Đặt chiều dài tối đa của đường K.
trao đổi.SetMaxBarLen ((n)
Các thông sốn
được sử dụng để xác định chiều dài đường K tối đa.
n
đúng
số
function main() {
exchange.SetMaxBarLen(50)
var records = exchange.GetRecords()
Log(records.length, records)
}
def main():
exchange.SetMaxBarLen(50)
r = exchange.GetRecords()
Log(len(r), r)
void main() {
exchange.SetMaxBarLen(50);
auto r = exchange.GetRecords();
Log(r.size(), r[0]);
}
Cácexchange.SetMaxBarLen()
chức năng ảnh hưởng đến hai khía cạnh cho thời gian chạy chiến lược tiền điện tử:
{@fun/Market/exchange.GetRecords exchange.GetRecords}
Nhận nội dung ban đầu trở lại bởi cuối cùngrest
yêu cầu đối tượng trao đổi hiện tại ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Dữ liệu trả lời chorest
yêu cầu.
chuỗi
trao đổi.GetRawJSON()
function main(){
exchange.GetAccount();
var obj = JSON.parse(exchange.GetRawJSON());
Log(obj);
}
import json
def main():
exchange.GetAccount()
obj = json.loads(exchange.GetRawJSON())
Log(obj)
void main() {
auto obj = exchange.GetAccount();
// C++ does not support the GetRawJSON function
Log(obj);
}
Cácexchange.GetRawJSON()
chức năng chỉ được hỗ trợ cho giao dịch thực.C++
language.
{@var/EXCHANGE exchange}
Nhận tỷ giá hối đoái hiện được thiết lập cho đối tượng trao đổi.
Giá trị hiện tại của tỷ giá hối đoái của đối tượng trao đổi. số
trao đổi.GetRate()
function main(){
Log(exchange.GetTicker())
// Set up exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
Log("Current exchange rate:", exchange.GetRate());
}
Nếuexchange.SetRate()
đã không được gọi để thiết lập tỷ giá chuyển đổi,exchange.GetRate()
hàm trả về một giá trị tỷ lệ mặc định là 1, nghĩa là dữ liệu liên quan đến đồng tiền hiện đang hiển thị (quoteCurrency) chưa được chuyển đổi.
Nếu giá trị tỷ giá hối đoái đã được thiết lập bằng cách sử dụngexchange.SetRate()
, ví dụ,exchange.SetRate(7)
Sau đó tất cả thông tin giá, chẳng hạn như báo giá, chiều sâu và giá đặt hàng thu được thông quaexchange
đối tượng trao đổi sẽ được chuyển đổi bằng cách nhân với tỷ giá hối đoái đã thiết lập7
.
Nếuexchange
tương ứng với một trao đổi với USD như là tiền tệ danh nghĩa, sau khi gọiexchange.SetRate(7)
, tất cả giá trên thị trường trực tiếp sẽ được chuyển đổi thành giá gần CNY bằng cách nhân7
Tại thời điểm này, giá trị tỷ giá hối đoái thu được bằng cách sử dụngexchange.GetRate()
là7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
Cácexchange.SetData()
chức năng được sử dụng để thiết lập dữ liệu được tải khi chiến lược đang chạy.
Chiều dài của chuỗi sau tham sốvalue
Mã hóa JSON.
số
exchange.SetData ((key, giá trị)
Tên của bộ sưu tập dữ liệu
chìa khóa
đúng
chuỗi
Dữ liệu được tải bởiexchange.SetData()
cấu trúc dữ liệu là giống như định dạng dữ liệu được yêu cầu bởiexchange.GetData()
chức năng khi yêu cầu dữ liệu bên ngoài, tức là:"schema": ["time", "data"]
.
giá trị
đúng
mảng
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
var data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while(true) {
Log(exchange.GetData("test"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while True:
Log(exchange.GetData("test"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json data = R"([
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
])"_json;
exchange.SetData("test", data);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000);
}
}
Nó đòi hỏi rằng dữ liệu cho các thông sốvalue
có cùng định dạng nhưdata
Bạn có thể thấy rằng timestamp1579622400000
tương ứng với thời gian2020-01-22 00:00:00
, và khi chương trình chiến lược được chạy sau thời gian này, gọi choexchange.GetData()
chức năng để lấy dữ liệu trước khi dấu thời gian dữ liệu tiếp theo1579708800000
, nghĩa là, thời gian2020-01-23 00:00:00
Những gì bạn nhận được là[1579622400000, 123]
nội dung của dữ liệu đó, khi chương trình tiếp tục chạy, thời gian thay đổi, v.v. để có được các mục dữ liệu theo mục. Trong ví dụ sau, trong thời gian chạy (đánh giá ngược hoặc giao dịch trực tiếp), thời điểm hiện tại đạt hoặc vượt quá dấu thời gian1579795200000
, cácexchange.GetData()
hàm được gọi và giá trị trả về là:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
tương ứng với1579795200000
trong dữ liệu[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
tương ứng với dữ liệu["abc", 123, {"price": 123}]]
trong[1579795200000, ["abc", 123, {"price": 123}]]
.
Dữ liệu được tải có thể là bất kỳ chỉ số kinh tế, dữ liệu ngành, chỉ số có liên quan, v.v., được sử dụng để đánh giá định lượng chiến lược của tất cả các thông tin định lượng.
{@fun/Market/exchange.GetData exchange.GetData}
Cácexchange.GetData()
chức năng được sử dụng để có được dữ liệu tải bởi cácexchange.SetData()
hoặc được cung cấp bởi một liên kết bên ngoài.
Các hồ sơ trong bộ sưu tập dữ liệu. đối tượng
trao đổi.GetData(key) trao đổi.GetData ((key, timeout)
Tên của bộ sưu tập dữ liệu chìa khóa đúng chuỗi Sử dụng để thiết lập thời gian cache trong milliseconds. thời gian nghỉ sai số
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
while True:
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
arr[0][1] = _D(1579536000000);
arr[1][1] = _D(1579622400000);
arr[2][1] = _D(1579708800000);
exchange.SetData("test", arr);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000 * 60 * 60 * 24);
}
}
Cuộc gọi để có được dữ liệu được viết trực tiếp.
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
while True:
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Sleep(1000);
}
}
Nó hỗ trợ để yêu cầu dữ liệu thông qua các liên kết bên ngoài, định dạng của dữ liệu được yêu cầu để:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Ở đâu?schema
là định dạng dữ liệu cho mỗi bản ghi trong cơ thể dữ liệu được tải, được cố định ở["time", "data"]
tương ứng với định dạng của dữ liệu nhập từng lần trongdata
thuộc tính.
Những gì được lưu trữ trongdata
thuộc tính là cơ thể của dữ liệu, với mỗi mục bao gồm dấu thời gian cấp độ millisecond và nội dung dữ liệu (có thể là bất kỳ dữ liệu có thể mã hóa JSON nào).
Chương trình dịch vụ để thử nghiệm, được viết bằng Go:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
ret := map[string]interface{}{
"schema": []string{"time","data"},
"data": []interface{}{
[]interface{}{1579536000000, "abc"},
[]interface{}{1579622400000, 123},
[]interface{}{1579708800000, map[string]interface{}{"price":123}},
[]interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
},
}
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
Dữ liệu phản hồi của chương trình khi nhận được yêu cầu:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Mã chiến lược thử nghiệm:
function main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}
Phương pháp gọi để lấy dữ liệu của một liên kết bên ngoài.
function main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data")) // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}
Yêu cầu dữ liệu cho truy vấn được tạo trên nền tảngdữ liệu, yêu cầu định dạng dữ liệu của câu trả lời là (phải có thời gian, các trường dữ liệu được mô tả trong sơ đồ):
{
"data": [],
"schema": ["time", "data"]
}
Các trường exchange.GetData()
hàm được gọi, một đối tượng JSON được trả về, ví dụ:{"Time":1579795200000, "Data":"..."}
.
Nhận dữ liệu ngay lập tức để backtesting và bộ nhớ cache một phút dữ liệu cho giao dịch trực tiếp.from
(được đánh dấu thời gian bằng giây),to
(được đánh dấu thời gian trong giây) đến yêu cầu, các tham số như:period
(thời gian đường K cơ bản, được đánh dấu theo thời gian trong milliseconds) được sử dụng để xác định khung thời gian mà trong đó dữ liệu sẽ được thu thập.
{@fun/Market/exchange.SetData exchange.SetData}
Cácexchange.GetMarkets()
chức năng được sử dụng để có được thông tin thị trường hối đoái.
Từ điển chứa cấu trúc {@struct/Market Market}. đối tượng
giao dịch.GetMarkets()
function main() {
var markets = exchange.GetMarkets()
var currency = exchange.GetCurrency()
// Get the current contract code can also use exchange.GetContractType() function
var ct = "swap"
var key = currency + "." + ct
Log(key, ":", markets[key])
}
def main():
markets = exchange.GetMarkets()
currency = exchange.GetCurrency()
ct = "swap"
key = currency + "." + ct
Log(key, ":", markets[key])
void main() {
auto markets = exchange.GetMarkets();
auto currency = exchange.GetCurrency();
auto ct = "swap";
auto key = currency + "." + ct;
Log(key, ":", markets[key]);
}
Ví dụ về một cuộc gọi đến một đối tượng giao dịch tương lai:
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
var tbl1 = {
type: "table",
title: "markets1",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets1 = exchange.GetMarkets()
for (var key in markets1) {
var market = markets1[key]
tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
var tbl2 = {
type: "table",
title: "markets2",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets2 = exchange.GetMarkets()
for (var key in markets2) {
var market = markets2[key]
tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
tbl1 = {
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets1 = exchange.GetMarkets()
for key in markets1:
market = markets1[key]
tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tbl2 = {
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets2 = exchange.GetMarkets()
for key in markets2:
market = markets2[key]
tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
json tbl1 = R"({
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets1 = exchange.GetMarkets();
for (auto& [key, market] : markets1.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl1["rows"].push_back(arrJson);
}
for (const auto& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
json tbl2 = R"({
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets2 = exchange.GetMarkets();
for (auto& [key, market] : markets2.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Sử dụng đối tượng trao đổi tương lai để gọiexchange.GetMarkets()
chức năng trong hệ thống backtesting. Trước khi gọi bất kỳ chức năng thị trường nào, GetMarkets chỉ trả về dữ liệu thị trường của cặp giao dịch mặc định hiện tại. Sau khi gọi chức năng thị trường, nó trả về dữ liệu thị trường của tất cả các loại yêu cầu. Bạn có thể tham khảo ví dụ kiểm tra sau:
Cácexchange.GetMarkets()
hàm trả về một từ điển với một khóa có tên là tên của các loại giao dịch, và cho các sửa đổi tại chỗ được định dạng như một cặp giao dịch, ví dụ:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Đối với các sàn giao dịch hợp đồng tương lai, vì có thể có nhiều hợp đồng cho một loại duy nhất, ví dụ:BTC_USDT
các cặp giao dịch, có hợp đồng vĩnh viễn, hợp đồng hàng quý, vv.exchange.GetMarkets()
hàm trả về một từ điển với tên khóa của cặp kết hợp với mã hợp đồng, ví dụ:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
chức năng hỗ trợ giao dịch trực tiếp, hệ thống backtesting.exchange.GetMarkets()
chức năng trả về thông tin thị trường chỉ cho các giống được giao dịch trực tuyến trên sàn giao dịch.exchange.GetMarkets()
chức năng không hỗ trợ hợp đồng quyền chọn.Các sàn giao dịch không hỗ trợexchange.GetMarkets()
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ợ |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Thị trường thị trường}
Cácexchange.GetTickers()
hàm được sử dụng để lấy dữ liệu ticker tổng hợp trao đổi (mảng cấu trúc {@struct/Ticker Ticker}).exchange
trả về dữ liệu ticker cho tất cả các cặp giao dịch khi đó là đối tượng giao dịch tại chỗ;exchange
trả về dữ liệu ticker cho tất cả các hợp đồng khi đó là đối tượng trao đổi tương lai.
Cácexchange.GetTickers()
hàm trả về một mảng {@struct/Ticker Ticker} cấu trúc khi nó thành công trong yêu cầu dữ liệu, và null khi nó thất bại.
{@struct/Ticker Ticker} mảng, giá trị không
Giao dịch.GetTickers()
function main() {
var tickers = exchange.GetTickers()
if (tickers && tickers.length > 0) {
Log("Number of tradable items on the exchange:", tickers.length)
}
}
def main():
tickers = exchange.GetTickers()
if tickers and len(tickers) > 0:
Log("Number of tradable items on the exchange:", len(tickers))
void main() {
auto tickers = exchange.GetTickers();
if (tickers.Valid && tickers.size() > 0) {
Log("Number of tradable items on the exchange:", tickers.size());
}
}
Gọi choexchange.GetTickers()
chức năng để thu thập dữ liệu thị trường tổng hợp.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
// Before requesting other trading pair market data, call Get Tickers
var tickers1 = exchange.GetTickers()
var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers1) {
tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
// Request market data for other trading pairs
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
// Call GetTickers again
var tickers2 = exchange.GetTickers()
var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers2) {
tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
tickers1 = exchange.GetTickers()
tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers1:
tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tickers2 = exchange.GetTickers()
tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers2:
tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
json tickerToJson(const Ticker& ticker) {
json arrJson;
arrJson.push_back(ticker.Symbol);
arrJson.push_back(ticker.High);
arrJson.push_back(ticker.Open);
arrJson.push_back(ticker.Low);
arrJson.push_back(ticker.Last);
arrJson.push_back(ticker.Buy);
arrJson.push_back(ticker.Sell);
arrJson.push_back(ticker.Time);
arrJson.push_back(ticker.Volume);
return arrJson;
}
void main() {
std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
auto tickers1 = exchange.GetTickers();
json tbl1 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl1["title"] = "tickers1";
for (const auto& ticker : tickers1) {
json arrJson = tickerToJson(ticker);
tbl1["rows"].push_back(arrJson);
}
for (const std::string& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
auto tickers2 = exchange.GetTickers();
json tbl2 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl2["title"] = "tickers2";
for (const auto& ticker : tickers2) {
json arrJson = tickerToJson(ticker);
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Sử dụng đối tượng trao đổi điểm và gọiexchange.GetTickers()
trước khi gọi bất kỳ chức năng thị trường nào, GetTickers chỉ trả về dữ liệu ticker của cặp giao dịch mặc định hiện tại. Sau khi gọi chức năng thị trường, nó trả về dữ liệu ticker của tất cả các giống được yêu cầu. Bạn có thể tham khảo ví dụ kiểm tra sau:
Các sàn giao dịch không hỗ trợexchange.GetTickers()
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ợ |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Tiền tương lai_WOO / Tiền tương lai_dYdX / Tiền tương lai_Deribit / Tiền tương lai_Bibox / Tiền tương lai_Aevo |
{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}
Ký hiệu Thương mại