Получить структуру {@struct/Ticker Ticker} спота или контракта, соответствующую в настоящее время установленной торговой паре, код контракта, т.е. данные тикера.GetTicker ()
функция является членом функции обмена объекта {@var/EXCHANGE exchange}, использованиеexchange
функции (методы) элемента объекта, относящиеся только кexchange
, и это не будет повторяться в документе.
Вexchange.GetTicker()
функция возвращает структуру {@struct/Ticker Ticker} при успешном запросе данных и возвращает нулевое значение при неудачном запросе данных.
{@struct/TickerTicker}, нулевое значение
Обмен.GetTicker ((() Обмен.GetTicker (символ)
Параметрsymbol
используется для указания конкретной торговой пары и кода контракта, соответствующего запрашиваемым данным {@struct/Ticker Ticker}.
При звонкеexchange.GetTicker(symbol)
функция,exchange
Если вам нужно запросить рыночные данные с номинальной валютой в USDT и валютой торговли в BTC, параметрsymbol
является:"BTC_USDT"
, а формат - формат торговой пары, определенный платформой FMZ.
При звонкеexchange.GetTicker(symbol)
функция,exchange
Если вам нужно запросить рыночные данные BTCsymbol
является:"BTC_USDT.swap"
, а формат представляет собой сочетаниеторговые парыикод контрактаопределяется платформой FMZ, разделенной символом exchange.GetTicker(symbol)
функция,exchange
Если вам нужно запросить рыночные данные о U-стандартном опционном контракте BTCsymbol
является:"BTC_USDT.BTC-240108-40000-C"
(в качестве примера Binance Option BTC-240108-40000-C), формат представляет собой комбинациюторговые парыопределены платформой FMZ и конкретным кодом контракта опциона, определенным биржей, разделенным символом
символ ложное строка
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);
}
Для фьючерсных обменных объектов (т.е.exchange
илиexchanges[0]
), необходимо установить код контракта с помощьюexchange.SetContractType()
функция перед вызовом функции тикера, которая не будет повторяться.
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);
}
Используйтеsymbol
параметр для запроса рыночных данных для определенного символа (символ спота).
ВTicker
Данные, возвращенныеexchange.GetTicker()
В случае, когдаHigh
иLow
Это симулируемые ценности, взятые из продажи и покупки на рынке в тот момент.Ticker
Данные, возвращенныеexchange.GetTicker()
В то время, какHigh
иLow
значения основаны на данных, возвращенных обменом в капсулахTick
интерфейс, который включает в себя самые высокие и самые низкие цены в течение определенного периода (обычно в течение 24 часов).
Обмены, которые не поддерживаютexchange.GetTicker()
Функция:
Имя функции | Не поддерживаемые спотовые обмены | Фьючерсные биржи без поддержки |
---|---|---|
GetTicker | – | Фьючерсы_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}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange
Получить структуру {@struct/Depth Depth} спота или контракта, соответствующую в настоящее время установленной торговой паре, код контракта, т.е. данные книги ордеров.
Вexchange.GetDepth()
функция возвращает структуру {@struct/Depth Depth}, если запрос на данные удается, и возвращает null, если запрос на данные не удается.
{@struct/Depth Depth}, нулевое значение
Обмен.ПолучитьГлубину() Обмен.Символ GetDepth (()
Параметрsymbol
используется для указания конкретной торговой пары и кода контракта, соответствующих запрошенным данным {@struct/Depth Depth}. Если этот параметр не будет передан, данные книги ордеров текущей установленной торговой пары и код контракта будут запрошены по умолчанию.exchange.GetDepth(symbol)
функция,exchange
Если вам нужно запросить получение данных ордерной книги с номинальной валютой в USDT и валютой транзакции в BTC, параметрsymbol
является:"BTC_USDT"
, а формат - формат торговой пары, определенный платформой FMZ.exchange.GetDepth(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги BTCsymbol
является:"BTC_USDT.swap"
, а формат представляет собой сочетаниеторговые парыикод контрактаопределяется платформой FMZ, разделенной символом exchange.GetDepth(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги U-стандартного опционного контракта BTCsymbol
является:"BTC_USDT.BTC-240108-40000-C"
(в качестве примера Binance Option BTC-240108-40000-C), формат представляет собой комбинациюторговые парыопределены платформой FMZ и конкретным кодом контракта опциона, определенным биржей, разделенным символом
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);
}
Испытаниеexchange.GetDepth()
Функция:
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);
}
Когда конфигурацияexchange
Объект является объектом фьючерсного обмена, используйтеsymbol
параметр для запроса данных книги заказов конкретного символа (символ фьючерса).
В системе обратного тестирования данные для каждого класса возвращаютсяexchange.GetDepth()
Функция при использованииСимуляция клещаВ системе обратного тестирования данные, возвращаемыеexchange.GetDepth()
Функция при использованииНастоящий ТикОбратное тестирование - это глубокий снимок второго уровня.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Получить массив структуры {@struct/Trade Trade} спота или контракта, соответствующий в настоящее время установленной торговой паре, код контракта, т.е. данные о рыночных сделках.
Вexchange.GetTrades()
функция возвращает массив {@struct/Trade Trade} структур, если запрос на данные удается, и возвращает нулевые значения, если запрос на данные не удается.
{@struct/Trade Trade} массивы, нулевые значения
Обмен.GetTrades ((() exchange.GetTrades (символ)
Параметрsymbol
используется для указания конкретной торговой пары и кода контракта, соответствующего запрошенным данным массива {@struct/Trade Trade}. Если этот параметр не будет передан, по умолчанию будут запрошены последние данные записи транзакции текущей установленной торговой пары и кода контракта.exchange.GetTrades(symbol)
функция,exchange
Если вам нужно запросить получение данных ордерной книги с валютой, деноминированной в USDT, и валютой торговли в BTC, параметрsymbol
является:"BTC_USDT"
, а формат - формат торговой пары, определенный платформой FMZ.exchange.GetTrades(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги BTCsymbol
является:"BTC_USDT.swap"
, а формат представляет собой сочетаниеторговые парыикод контрактаопределяется платформой FMZ, разделенной символом exchange.GetTrades(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги BTCsymbol
является:"BTC_USDT.BTC-240108-40000-C"
(в качестве примера Binance Option BTC-240108-40000-C), формат представляет собой комбинациюторговые парыопределены платформой FMZ и конкретным кодом контракта опциона, определенным биржей, разделенным символом
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);
}
Проверитьexchange.GetTrades()
Функция:
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);
}
Когда конфигурацияexchange
Объект является объектом фьючерсного обмена, используйтеsymbol
параметр для запроса данных записи рыночных сделок для определенного символа (символ фьючерса).
exchange.GetTrades()
Функция для получения текущих торговых пар, истории транзакций рынка (не их собственной), соответствующей контрактам. Некоторые биржи не поддерживают эту функцию, и конкретные данные, возвращенные, показывают, насколько диапазон записей транзакций зависит от биржи и должен обрабатываться в соответствии с конкретной ситуацией.exchange.GetRecords ()
функция возвращает тот же порядок данных, то есть последний элемент массива является данными, ближайшими к текущему времени.
Вexchange.GetTrades()
функция возвращает пустой массив при использованииСимуляция клещаДанные, возвращаемыеexchange.GetTrades()
функция при использованииНастоящий ТикBacktesting в системе backtesting - это данные о потоке заказов, т.е. массив {@struct/Trade Trade}.
Обмены, которые не поддерживаютexchange.GetTrades()
Функция:
Имя функции | Не поддерживаемые спотовые обмены | Фьючерсные биржи без поддержки |
---|---|---|
GetTrades | – | Фьючерсы_BitMart / Фьючерсы_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Получить массив структуры {@struct/Record Record} спота или контракта, соответствующий в настоящее время установленной торговой паре, код контракта, т.е. данные K-линии.
Вexchange.GetRecords()
функция возвращает массив структур {@struct/Record Record} при успешном запросе данных и возвращает нулевые значения при неудачном запросе данных.
{@struct/Record Record} массивы, нулевые значения
Обмен.GetRecords ((() Обмен.GetRecords (символ) exchange.GetRecords (символ, точка) exchange.GetRecords ((символ, период, предел) Обмен.GetRecords (промежуток) Обмен.GetRecords ((период, лимит)
Параметрsymbol
используется для указания конкретной торговой пары и кода контракта, соответствующих запрошенным данным массива {@struct/Record Record}. Если этот параметр не будет передан, по умолчанию будут запрошены данные K-линии текущей установленной торговой пары и кода контракта.exchange.GetRecords(symbol)
функция,exchange
Если вам нужно запросить получение данных с деноминированной валютой в USDT и валютой транзакции в BTC, параметрsymbol
является:"BTC_USDT"
, а формат - формат торговой пары, определенный платформой FMZ.exchange.GetRecords(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги BTCsymbol
является:"BTC_USDT.swap"
, а формат представляет собой сочетаниеторговые парыикод контрактаопределяется платформой FMZ, разделенной символом exchange.GetRecords(symbol)
функция,exchange
Если вам нужно запросить данные ордерной книги BTCsymbol
является:"BTC_USDT.BTC-240108-40000-C"
(в качестве примера Binance Option BTC-240108-40000-C), формат представляет собой комбинациюторговые парыопределены платформой FMZ и конкретным кодом контракта опциона, определенным биржей, разделенным символом period
указывает период запрошенных данных K-линии, например: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15} и т. д. Значение параметраperiod
Если этот параметр не выполняется, период запрошенных по умолчанию данных K-линии является по умолчанию периодом K-линии текущей конфигурации стратегии реального времени / обратного теста.
Период
ложное
Номер
Параметрlimit
используется для указания длины запрашиваемых данных K-линии. Если этот параметр не передан, длина запроса по умолчанию - это максимальное количество строк K-линии, запрашиваемых в момент обмена интерфейсом K-линии. Этот параметр может привести к поиску данных K-линии обмена, и время потребления вызова функции увеличится во время поискового запроса.
предел
ложное
Номер
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]);
}
Получите данные по К-линии для индивидуального периода.
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]);
}
Выходные K-линейные строки:
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);
}
Когда конфигурацияexchange
Объект является объектом фьючерсного обмена, используйтеsymbol
, period
, иlimit
параметры для запроса данных K-линии конкретного продукта (будущий продукт).
По умолчанию K-линейный период может быть установлен на страницах backtest и реального трейдинга.exchange.GetRecords()
Если при вызове функции не указан параметр, соответствующие данные K-линии возвращаются в соответствии с периодом K-линии, установленным в обратном тесте и реальных параметрах рынка.
Возвращаемое значение - массивRecord
В случае, если вы хотите, чтобы использовать эти структуры, возвращенные K-линейные данные будут накапливаться с течением времени, верхний предел накопленных K-линейных баров влияет наexchange.SetMaxBarLen()
Ограничение по умолчанию составляет 5000 баров, когда оно не установлено. Когда данные K-линии достигают ограничения накопления K-линейной строки, они обновляются путем добавления K-линейной строки и удаления самой ранней K-линейной строки (например, очереди в / из).Trade
структурированный массив) в реальном времени для генерации K-линий.
Если интерфейс K-линии обмена поддерживает поиск страниц, несколько запросов API будут выполнены при вызовеexchange.SetMaxBarLen()
Функция для установки большей длины K-линии.
Когдаexchange.GetRecords()
Если функция называется изначально, количество полученных K-линейных баров различается между обратным тестированием и реальной торговлей: - Система обратного тестирования будет получать определенное количество K-линейных баров до начала временного диапазона обратного тестирования заранее (по умолчанию 5000, настройки системы обратного тестирования и количество данных повлияют на окончательное количество возвращенных данных), как первоначальные K-линейные данные. - Количество K-линейных баров, полученных во время фактической торговли, основано на максимальном количестве данных, которые могут быть получены из интерфейса K-линии биржи.
Вperiod
параметр установлен на 5, что является запросом на получение данных K-линии с периодом 5 секунд.period
Параметр не делится на 60 (т. е. представленный период не делится на минуты).exchange.GetTrades()
Для получения данных записи транзакций и синтеза необходимых данных K-линии.period
параметр делится на 60, то требуемые K-линейные данные синтезируются с использованием минимум 1-минутных K-линейных данных (если возможно, требуемые K-линейные данные синтезируются с использованием большего периода).
Симулируемое обратное тестирование уровня в системе обратного тестирования требует установки базового периода K-линии (когда система обратного тестирования имитирует обратное тестирование уровня, соответствующие данные K-линии используются для генерации данных Tick в соответствии с установленным базовым периодом K-линии). Следует отметить, что период данных K-линии, полученных в стратегии, не должен быть меньше базового периода K-линии.
ВC++
язык имеет следующий пример кода, если вам нужно построить свои собственные данные K-линии:
#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);
}
Обмены, которые не поддерживаютexchange.GetRecords()
Функция:
Имя функции | Не поддерживаемые спотовые обмены | Фьючерсные биржи без поддержки |
---|---|---|
GetRecords | Zaif / Coincheck / BitFlyer | Фьючерсы_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}
Получите период K-линии, установленный на странице веб-сайта платформы FMZ Quant Trading при обратном тестировании и выполнении стратегии в режиме реального времени, т.е. период K-линии по умолчанию, используемый при вызовеexchange.GetRecords()
Функция без передачи параметров.
Период K-линии в секундах, целое число в секундах. Номер
Обмен.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} Я не знаю.
Установите максимальную длину линии К.
Обмен.SetMaxBarLen ((n)
Параметрn
используется для указания максимальной длины линии K.
n
неправда
Номер
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]);
}
Вexchange.SetMaxBarLen()
функция влияет на два аспекта для криптовалютной стратегии время выполнения:
{@fun/Market/exchange.GetRecords exchange.GetRecords} Я не знаю.
Получить оригинальный контент возвращается к последнемуrest
запрос на текущий объект обмена ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Данные ответа дляrest
Просьба.
строка
Обмен.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);
}
Вexchange.GetRawJSON()
Функция поддерживается только для реальной торговли.C++
language.
{@var/EXCHANGE обмен}
Получить обменный курс, установленный для обменного объекта.
Текущая стоимость обменного курса объекта обмена. Номер
Обмен.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());
}
Еслиexchange.SetRate()
не был призван установить курс конверсии,exchange.GetRate()
функция возвращает значение курса по умолчанию 1. То есть данные, относящиеся к показанной валюте (quoteCurrency), не были конвертированы.
Если значение обменного курса установлено с использованиемexchange.SetRate()
, например,exchange.SetRate(7)
Затем вся информация о ценах, такие как котировки, глубины и цены заказа, полученные черезexchange
обменный объект будет конвертироваться путем умножения на установленный обменный курс7
- Да.
Еслиexchange
соответствует обмену с долларом США в качестве номинальной валюты, после вызоваexchange.SetRate(7)
, все цены на живом рынке будут преобразованы в цену, близкую к юаню, путем умножения7
В данный момент стоимость обменного курса, полученная с использованиемexchange.GetRate()
это7
.
{@fun/Trade/exchange.SetRate exchange.SetRate} (Секретный обмен)
Вexchange.SetData()
Функция используется для настройки данных, загружаемых при запуске стратегии.
Длина строки после параметраvalue
Кодировка JSON.
Номер
exchange.SetData ((ключ, значение)
Название сбора данных.
ключ
неправда
строка
Данные, которые должны быть загруженыexchange.SetData()
Функция имеет структуру данных массива.exchange.GetData()
функция при запросе внешних данных, т.е.:"schema": ["time", "data"]
- Да.
стоимость
неправда
массив
/*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);
}
}
Это требует, чтобы данные для параметраvalue
быть в том же формате, что иdata
Вы можете видеть, что временная метка1579622400000
соответствует времени2020-01-22 00:00:00
, и что когда программа стратегии выполняется после этого времени, вызватьexchange.GetData()
Функция для получения данных до следующей временной отметки данных1579708800000
, то есть, время2020-01-23 00:00:00
Что ты получишь[1579622400000, 123]
В следующем примере, во время выполнения (обратное тестирование или живая торговля), текущий момент достигает или превышает временную отметку1579795200000
,exchange.GetData()
функция вызвана и возвращается значение:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
соответствует1579795200000
в данных[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
соответствует данным["abc", 123, {"price": 123}]]
в[1579795200000, ["abc", 123, {"price": 123}]]
.
Загруженными данными могут быть любые экономические показатели, отраслевые данные, соответствующие показатели и т.д., используемые для стратегической количественной оценки всей количественно определяемой информации.
{@fun/Market/exchange.GetData exchange.GetData} (См. также:
Вexchange.GetData()
Функция используется для загрузки данныхexchange.SetData()
функция или предоставляется внешней ссылкой.
Записи в сборе данных. объект
Обмен.GetData ((ключ) Обмен.GetData ((ключ, время)
Название сбора данных. Ключ Истинно строка Используется для настройки времени выхода кэша в миллисекундах. Тайм-аут ложное Номер
/*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);
}
}
Звонок, чтобы записать данные непосредственно.
/*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);
}
}
Он поддерживает запрос данных через внешние ссылки, формат запрашиваемых данных для:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Где?schema
Формат данных для каждой записи в теле загруженных данных, установленный на["time", "data"]
соответствующий формату данных по вводу вdata
атрибут.
Что хранится вdata
атрибут - это тело данных, причем каждая запись состоит из временной отметки на уровне миллисекунд и содержимого данных (которые могут быть любыми данными, кодируемыми JSON).
Сервисная программа для тестирования, написанная на 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)
}
Данные ответа программы при получении запроса:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Код стратегии испытания:
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"));
}
Способ вызова для получения данных внешней ссылки.
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"));
}
Запрос данных для запроса, созданного на платформеданные, требуя, чтобы формат данных ответа был (должен содержать время, поля данных, описанные в схеме):
{
"data": [],
"schema": ["time", "data"]
}
Поле exchange.GetData()
призвана функция, возвращается объект JSON, например:{"Time":1579795200000, "Data":"..."}
.
Получить данные сразу для обратного тестирования и кэширования одной минуты данных для торговли в режиме реального времени.from
(с указанием времени в секундах),to
(время в секундах) к запросу, параметры, такие какperiod
(подлежащий период K-линии, установленный в миллисекундах) используются для определения временных рамок, в течение которых должны быть получены данные.
{@fun/Market/exchange.SetData exchange.SetData} - что это такое?
Вexchange.GetMarkets()
Функция используется для получения информации о валютном рынке.
Словарь, содержащий структуру {@struct/Market Market}. объект
Обмен.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]);
}
Пример вызова на объект биржи фьючерсов:
/*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() + "`");
}
Используйте объект фьючерсного обмена для вызоваexchange.GetMarkets()
Перед вызовом любой рыночной функции GetMarkets возвращает только рыночные данные текущей торговой пары по умолчанию. После вызова рыночной функции он возвращает рыночные данные всех запрошенных сортов. Вы можете обратиться к следующему примеру теста:
Вexchange.GetMarkets()
функция возвращает словарь с ключом, названным названием торгового сорта, и для спотовых фиксаций, форматированных как торговая пара, например:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Для бирж фьючерсных контрактов, поскольку может существовать несколько контрактов для одного сорта, например:BTC_USDT
Торговые пары, есть постоянные контракты, квартальные контракты и так далее.exchange.GetMarkets()
функция возвращает словарь с именем ключа пары в сочетании с кодом контракта, например:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
Функция поддерживает прямую торговлю, систему обратного тестирования.exchange.GetMarkets()
Функция возвращает информацию о рынке только для сортов, которые торгуются онлайн на бирже.exchange.GetMarkets()
функция не поддерживает опционные контракты.Обмены, которые не поддерживаютexchange.GetMarkets()
Функция:
Имя функции | Не поддерживаемые спотовые обмены | Фьючерсные биржи без поддержки |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Market Market} (Рыночный рынок)
Вexchange.GetTickers()
Функция используется для получения обменных агрегированных данных тикеров (массив структуры {@struct/Ticker Ticker}).exchange
возвращает данные тикеров для всех торговых пар, когда речь идет об объекте спотового обмена;exchange
возвращает данные тикера для всех контрактов, когда речь идет об обмене фьючерсами.
Вexchange.GetTickers()
Функция возвращает массив {@struct/Ticker Ticker} структур, когда ему удается запросить данные, и null, когда ему не удается.
{@struct/Ticker Ticker} массивы, нулевые значения
Обмен.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());
}
}
Позвониexchange.GetTickers()
функция получения агрегированных рыночных данных.
/*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() + "`");
}
Используйте объект спотового обмена и вызовитеexchange.GetTickers()
Перед вызовом любой рыночной функции GetTickers возвращает только данные тикера текущей торговой пары по умолчанию. После вызова рыночной функции он возвращает данные тикера всех запрошенных сортов. Вы можете обратиться к следующему примеру теста:
Обмены, которые не поддерживаютexchange.GetTickers()
Функция:
Имя функции | Не поддерживаемые спотовые обмены | Фьючерсные биржи без поддержки |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Фьючерсы_WOO / Фьючерсы_dYdX / Фьючерсы_Deribit / Фьючерсы_Bibox / Фьючерсы_Aevo |
{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}
Логотип Торговля