В процессе загрузки ресурсов... загрузка...

Разработчики квантовой платформы API: улучшение опыта стратегического проектирования

Автор:Изобретатели количественного измерения - мечты, Создано: 2024-06-28 09:08:29, Обновлено: 2024-11-01 10:08:12

[TOC]

img

Преамбула

После девяти лет технологических ретроспекций и многочисленных реконструирований, которые мы, как пользователи, возможно, не заметили. За последние два года платформа сделала множество оптимизаций и обновлений в области пользовательского опыта, включая полную модернизацию интерфейса пользовательского интерфейса, богатое количество часто используемых инструментов для количественной торговли и добавление большей поддержки ретроспективных данных.

Для того, чтобы упростить разработку стратегии, сделать логику транзакций более понятной и легкой для начинающих, платформа обновила API-интерфейс, используемый стратегией. Для того, чтобы использовать новейшие версии хостера, можно включить эти новые функции. Платформа по-прежнему максимально совместима с вызовами на старых интерфейсах.

Давайте посмотрим, какие обновления для обновления интерфейсов есть и какие изменения требуются для использования старых стратегий, чтобы быть совместимыми с текущим API.

1 Новый интерфейс API

exchange.GetTickers函数

Такой агрегированный рыночный интерфейс необходим для разработки стратегии многообразия, стратегии мониторинга рынка в целом. Он позволяет более легко разрабатывать стратегии и избегать дублирования колес.

Если биржа не имеет такого интерфейса (отдельные биржи), вызовexchange.GetTickers()Позже в Twitter появилась статья, в которой говорится:

Функция не имеет никаких параметров и возвращает на биржу данные о рынке в режиме реального времени, объединяющие все разновидности рынка в интерфейсе.

exchange.GetTickers()Функция будетexchange.GetTicker()Все варианты запрошенных версий функций ((внимательно посмотрите, разница между этими двумя функциями заключается только в единственном множественном числе) ‒).

Мы проверили окружающую среду с помощью ОКХ:

function main() {
    exchange.IO("simulate", true)

    var tickers = exchange.GetTickers()
    if (!tickers) {
        throw "tickers error"
    }

    var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var i in tickers) {
        var ticker = tickers[i]
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return tickers.length
}

img

exchange.CreateOrder函数

Новоеexchange.CreateOrder()Функции являются основными в этом обновлении.exchange.CreateOrder()Максимальная функция функции - это указание прямо в параметрах функции разновидности, направления и т. д.

В многообразных сценариях сделок с односторонним участием значительно снижается сложность дизайна в сценариях сходства.exchange.CreateOrder()У нас есть четыре параметра функции.symbolsidepriceamount

Опрос на ОКХ с использованием фьючерсных дисков:

function main() {
    exchange.IO("simulate", true)

    var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
    var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
    var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)

    Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

img

Это было три раза.exchange.CreateOrder()Функциональные вызовы приводят к трем различным видам фьючерсных заказов, которые идут в разных направлениях.

exchange.GetHistoryOrders函数

Новоеexchange.GetHistoryOrders()Функция используется для получения исторических торговых заказов определенного сорта, которая также требует поддержки интерфейса биржи.

Для поиска исторических заказов интерфейсы, реализуемые различными биржами, сильно различаются:

  • Некоторые из них поддерживают раздельные запросы, другие нет.
  • Некоторые сделки не могут быть запрошены за все периоды окна запроса, т.е. за заказы, которые превышают N дней.
  • Большинство бирж поддерживают запрос по времени, некоторые - нет.

Для того, чтобы упаковать такие интерфейсы с максимальной степенью совместимости, в практическом использовании необходимо обратить внимание на то, соответствуют ли они потребностям, ожиданиям политики.

Подробная информация о функциях больше не описывается здесь. Вы можете ознакомиться с руководством по грамматике в документации API:

https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders

Проверка с помощью Binance Live Display:

function main() {
    var orders = exchange.GetHistoryOrders("ETH_USDT")

    // 写入图表
    var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
    for (var order of orders) {
        tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
    }
    
    LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) +  "`")
}

img

exchange.GetPositions函数

Старые версии функций доступа к хранимым данным былиexchange.GetPosition()В этом обновлении добавлена новая функция доступа к хранилищу, чтобы лучше соответствовать семантике имен функций:exchange.GetPositions()│ при этом сохраняет совместимость/усовершенствование функции GetPosition│

Обратите внимание, что названия двух функций отличаются только окончанием s, так как GetPositions более семантичны, поэтому рекомендуется использовать GetPositions в последующих версиях.

exchange.GetPositions()Функции могут быть вызваны тремя способами:

  • exchange.GetPositions ((() Если вы не передаете никаких параметров,Сделка да / Контрактный кодНастройка, требующая хранить данные для всех сортов в текущем измерении.

  • exchange.GetPositions ((ETH_USDT.swap кнопка) При указании информации о конкретных сортах (формат ETH_USDT.swap, определенный платформой FMZ) запрашивается информация о хранении конкретных сортов. Например:BTC_USD.swapETH_USDT.swapETH_USDT.quarterИ так далее. BTC_USD.swap: постоянный контракт на BTC. ETH_USDT.swap: U-битный постоянный контракт на ETH. ETH_USDC.swap: USDC-основанный постоянный контракт на ETH. (кроме USDT, можно указать и другую котируемую валюту, больше не упоминается) ETH_USDT.quarter: U-битный квартальный коэффициент обмена ETH. BTC_USD.BTC-USD-201226-24250-C: Контракты на опционы на BTC.

  • exchange.GetPositions ((USDT.swap кнопка)) В зависимости от указанного диапазона измерений, запрашивается информация о хранении всех сортов. USDT.swap: Сфера действия постоянных контрактов на U бита. USDT.futures: U-битный обменный коэффициент приблизительно. USDC.swap: USDDC локальный диапазон длительных контрактов. (кроме USDT, можно указать и другую котируемую валюту, больше не упоминается) USDC.futures: USDDC в обменной ставке. USD.swap: объем постоянных контрактов на курс валюты. USD.futures: Приблизительный диапазон курса. USDT.option: Сфера действия контракта на собственные опционы. USD.option: объем контрактов на опционы на наличные деньги.

    Некоторые специальные биржи делятся по размеру контрактов: USDT.futures_combo:Futures_Deribit - контракт с дифференцированным портфелем. USD.futures_ff:Фьючерс_Кракен обменивается смешанными кошельками. USD.swap_pf:Futures_Kraken - долгосрочные контракты на смешанные ценные бумаги.

    Для измерений, которые не поддерживаются интерфейсом API биржи, призыв возвращает пустое значение.

Опрос на ОКХ с использованием фьючерсных дисков:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    var p1 = exchange.GetPositions()
    var p2 = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    for (var positions of [p1, p2]) {
        var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
        for (var p of positions) {
            tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
        } 
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

Когда проникаетexchange.GetPositions()Параметры функции:ETH_USDT.swapВ этом случае можно получить данные о хранении постоянных контрактов ETH на U-битах.

Когда не передаетсяexchange.GetPositions()Параметры функции позволяют получить данные о хранениях всех U-битных перманентных контрактов, размещенных на бирже (поскольку текущая сделка - это BTC_USDT, контракт - это swap, в соответствии с текущей сделкой, запрос на диапазон контракта), при этом стоимость эквивалентна вызову.exchange.GetPositions("USDT.swap"), укажите область запроса.

exchange.GetFundings函数

Новая функция GetFundings позволяет получить процентную ставку на постоянные контракты на фьючерсных биржах. Функция имеет параметры symbol. Функция возвращает строку Array of Funding.

  • Укажите параметр символа: возвращает информационную структуру параметров по ставкам финансирования для указанного вида (Фондирование), параметр символа может устанавливаться в диапазоне, аналогичном параметру символа функции GetOrders/GetPositions.
  • Неустановление параметров символа: возвращает данные всех видов данных в текущем измерении в соответствии с текущей парой сделок, где находится размер кода контракта, механизм, такой как функция GetOrders/GetPositions.
  • Если биржа должна указать конкретную разновидность, то должны быть переданы параметры символа, то есть код конкретной разновидности, например:BTC_USDT.swap│ не передать параметры или передать функцию диапазона ошибки symbol параметры не поддерживаются │

2. Обновление интерфейса API

exchange.GetTicker函数

Функцииexchange.GetTicker()Это обновление в основном связано с добавлением параметров символа. Это позволяет отделить эту функцию от текущей пары сделок, запросить информацию о сортах контрактного кода непосредственно в соответствии с параметрами, упрощает процесс написания кода.

ПараметрыsymbolОбъекты биржиexchangeНа данный момент существуют две версии:

  • Объекты обмена Формат:AAA_BBBААА обозначает базовую валюту, BBB обозначает котировочную валюту. Например: BTC_USDT - насущная торговая пара.
  • Объекты фьючерсных бирж Формат:AAA_BBB.XXXААА обозначает базовую валюту, BBB обозначает котировочную валюту, XXX обозначает контрактный код, например, бессрочный контракт swap. Например: BTC_USDT.swap, постоянный контракт на U-бит BTC.

Проверка в условиях реального рынка фьючерсов:

var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]

function main() {
    exchange.SetCurrency("ETH_USD")
    exchange.SetContractType("swap")

    var arr = []
    var t = exchange.GetTicker()
    arr.push(t)

    for (var symbol of symbols) {
        var ticker = exchange.GetTicker(symbol)
        arr.push(ticker)
    }

    var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of arr) {
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return arr
}

img

Запрос на наборы данных о рынке с указанием разновидности становится проще.

exchange.GetDepth函数

Это то же самое, что и функция GetTicker.exchange.GetDepth()Функция также добавляет параметры symbol. Это позволяет напрямую указывать разновидности при запросе данных глубины.

Проверка в условиях реального рынка фьючерсов:

function main() {
    exchange.SetCurrency("LTC_USD")
    exchange.SetContractType("swap")

    Log(exchange.GetDepth())
    Log(exchange.GetDepth("ETH_USDT.quarter"))
    Log(exchange.GetDepth("BTC_USD.swap"))
}

img

exchange.GetTrades函数

Это то же самое, что и функция GetTicker.exchange.GetTrades()Функция также добавляет параметры symbol.

Проверка в условиях реального рынка фьючерсов:

function main() {
    var arr = []
    var arrR = []
    var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]    

    for (var symbol of symbols) {
        var r = exchange.Go("GetTrades", symbol)
        arrR.push(r)
    }

    for (var r of arrR) {
        arr.push(r.wait())
    }
    
    var tbls = []
    for (var i = 0; i < arr.length; i++) {
        var trades = arr[i]
        var symbol = symbols[i]

        var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
        for (var trade of trades) {
            tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
        }

        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

В этом обновлении также принято совместимость.exchange.Go()Функция одновременно вызывает API-интерфейс платформы при передаче информации о видах, указанных параметрами символов.

exchange.GetRecords函数

Функция GetRecords в этот раз сделала большие изменения, кроме того, что поддерживает информацию о разновидностях данных K-строка, которые запрос указывает непосредственно с параметрами символов.

exchange.GetRecords()Призыв функции:

  • exchange.GetRecords ((() Не указывая никаких параметров при запросе текущей сделки пары/контрактного кода соответствующих разновидностей K-линейных данных, K-линейные циклы являются K-линейными циклами по умолчанию, установленными в интерфейсе резюме стратегии или на диске.
  • exchange.GetRecords ((60 * 15) При установке параметров только для K-линейного цикла запрос на K-линейные данные соответствующей разновидности текущей торговой пары/контрактного кода;
  • exchange.GetRecords ((( BTC_USDT.swap кнопка) При указании только информации о сортах, запрошенные данные K-линии для указания сорта, K-линиевые циклы являются K-линейными циклами по умолчанию, установленными при интерфейсе ретроспекции стратегии или на диске.
  • exchange.GetRecords (( BTC_USDT.swap кнопка, 60 * 60)) Укажите информацию о сортах, укажите конкретные циклы K-линий для запроса данных K-линий.
  • exchange.GetRecords (( BTC_USDT.swap, 60, 1000) Указывайте информацию о сортах, указывайте конкретные циклы K-линий, указывайте на K-линиевые данные запроса K-линий длины, которую вы хотите получить на регулярной основе. Обратите внимание, что когда параметр limit превышает максимальную длину одного запроса, то возникает разделение страниц (т.е. многократное вызов интерфейса K-линии).

Проверка в условиях реального рынка фьючерсов:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    var r1 = exchange.GetRecords()
    var r2 = exchange.GetRecords(60 * 60)
    var r3 = exchange.GetRecords("BTC_USDT.swap")
    var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
    var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)

    Log("r1相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
    Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
    Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
    Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
    Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

img

exchange.GetOrders函数

Функция GetOrders также добавленаsymbolПараметры, которые позволяют задать конкретную разновидность и запросить незавершенные заказы для этой разновидности; также поддерживают запрос незавершенных заказов для всех разновидностей в указанном диапазоне измерений.

exchange.GetOrders()Призывы к функциям выполняются следующим образом:

  • exchange.GetOrders ((() Для фьючерсных бирж: когда не передаются какие-либо параметры, в соответствии с текущимСделка да / Контрактный кодНастройка, запрашивающая все незавершенные заказы (подвешенные) для всех сортов в текущем диапазоне измерений.
    Для насущных бирж: при отсутствии каких-либо параметров запрос на незавершенные заказы всех насущных сортов ("подвешенные заказы").
  • exchange.GetOrders (( BTC_USDT.swap) или exchange.GetOrders (( BTC_USDT)) Для фьючерсных бирж: exchange.GetOrders ((BTC_USDT.swap), запросите все незавершенные заказы на постоянные контракты на USDT на BTC (((подвешенные заказы)). Для обменной валюты: exchange.GetOrders ( BTC_USDT ), запросите все незавершенные заказы ( привязанные списки) для обменной валюты BTC_USDT.
  • Поддержка только для фьючерсных бирж exchange.GetOrders ((USDT.swap) Укажите диапазон измерений запросов для всех сортов незавершенных заказов ((hanging lists)) Сфера разделения измерений совпадает с диапазоном в функции GetPositions. Например: exchange.GetOrders ((USDT.swap) Запрос на все виды невыполненных заказов в пределах постоянного контракта U-бита (((подведенные заказы)).

Опрос на ОКХ с использованием фьючерсных дисков:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    // 写入图表
    var tbls = []
    for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
        var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}

        var orders = null
        if (symbol == "null") {
            orders = exchange.GetOrders()
        } else {
            orders = exchange.GetOrders(symbol)
        }

        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }

        tbls.push(tbl)
    }
    
    LogStatus("`" + JSON.stringify(tbls) +  "`")
}
  • При отсутствии параметров запрос на невыполненные заказы всех разновидностей в диапазоне измерений текущей торговой пары (BTC_USDT), контрактного кода (swap).
  • Укажите параметрыETH_USDT.swapПри параметре "неоконченные заказы" ("подвешенные заказы") USDT на постоянных контрактах с запросом ETH.
  • Введите строку"USDT.swap"В этом случае, если вы не можете получить оплату за покупку, вы можете обратиться к USDT с просьбой о предоставлении всех незавершенных заказов ("подвешенных заказов") на постоянные контракты USDT.

exchange.GetPosition函数

Все еще совместим со старыми именем функций сбора хранения, также добавлен параметр символа, который позволяет указать информацию о разновидностях данных хранения для конкретных запросов.exchange.GetPositions()В этом случае мы должны быть готовы.

exchange.IO函数

Дляexchange.IO("api", ...)Призыв функций, обновленный для всех объектов биржи, поддерживает возможность прямого ввода полного адреса запроса.

Например, если вы хотите вызвать интерфейс OKX:

GEThttps://www.okx.com/api/v5/account/max-withdrawal ccy: BTC

Поддержка прямого ввода адресов базhttps://www.okx.com, без необходимости переключать адрес базы и вызывать функцию IO.

Опрос на ОКХ с использованием фьючерсных дисков:

function main() {
    exchange.IO("simulate", true)

    return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

img

3. Влияние интерфейсов API

exchange.GetOrder函数

В частности, это вызвало серьезные проблемы.exchange.GetOrder(id)Параметры функцииidПараметр id был изменен с оригинального формата exchange order id на формат строки, содержащий разновидности сделок.

Например:

  • Идентификатор первоначального ордера на бирже, определенный в биржевом заказе, является:123456До этого обновления, если вы хотите вызвать функцию GetOrder, то ID заказа будет:123456
  • Код продукта, названный биржей, определенный в ордере биржи:BTC-USDTЯ не знаю. Обратите внимание, что здесь речь идет о коде торговой разновидности, названной биржей, а не о паре, определенной платформой FMZ.

В результате этого обновления мы получим более высокую оценку.exchange.GetOrder(id)Формат параметра id, который должна передать функция, изменяется на:BTC-USDT,123456

  • Например: "Я хочу, чтобы вы знали, что я не хочу, чтобы вы меняли". Поскольку в этом случае функция CreateOrder была усовершенствована, чтобы напрямую указывать сорт подзаказа (сорт подзаказа и текущая пара сделок, код контракта может отличаться), если возвращенный ID заказа не содержит информацию о сортах, то этот ID заказа не будет использоваться. Поскольку не известно, какой сорт этого заказа (контракт) на момент конкретного запроса. Большинство сделок, в которых требуется указать параметры, описывающие код сорта.

  • Как сочетать это влияние: Если заказ используется с помощью функции exchange.IO, которая напрямую вызывает интерфейс заказа на бирже, то возвращаемое значение обычно содержит первоначальный символ биржи (разновидность кода) и первоначальный идентификатор заказа. Также, если использовать интерфейс заказа, упакованный на платформе FMZ, то, поскольку начальная часть ID заказа - это код сорта сделки, если необходимо использовать оригинальный ID заказа, нужно просто удалить код сорта и запятую.

exchange.CancelOrder函数

Это повышениеexchange.CancelOrder()Влияние функцийexchange.GetOrder()Функции одинаковые.

exchange.Buy函数

Это повышениеexchange.Buy()Влияние функцийexchange.GetOrder()Функции одинаковые.exchange.Buy()Функция возвращает ID ордера для новой структуры, например, ID, возвращаемый при размещении ордера на биржевых фьючерсах OKX:LTC-USDT-SWAP,1578360858053058560

exchange.Sell函数

Это повышениеexchange.Sell()Влияние функцийexchange.GetOrder()Функции одинаковые.exchange.Sell()Функция возвращает ID ордера для новой структуры, например, ID, возвращаемый при размещении ордера на биржевых фьючерсах OKX:ETH-USDT-SWAP,1578360832820125696

exchange.GetPosition函数

Только объекты фьючерсных бирж поддерживают эту функцию, и они полностью совпадают в поведении.

Старый определение: exchange.GetPosition () функция, не указывая никаких параметров при вызове, получает данные о наличии текущей сделки пары, конкретного контракта, установленного в коде контракта.

Изменение, после изменения, новое определение: exchange.GetPosition (()) функция, при вызове без указания каких-либо параметров, получает хранение всех сортов текущих настроенных пар сделок, в диапазоне измерений, определенных контрактным кодом.

Например, текущая торговая пара будет называться BTC_USDT, контрактный код будет swap.

exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")

Функция запрашивает хранилищные данные постоянных контрактов на U-битах для всех валют.

exchange.GetOrders函数

В частности, в частности:

Старый определение: exchange.GetOrders ((), при вызове без указания каких-либо параметров, получает все незавершенные заказы в текущей транзакционной паре.

Изменение, после изменения, новое определение: exchange.GetOrders (()) функция, при вызове без указания каких-либо параметров, получает все незавершенные заказы на разновидности.

Второе, для фьючерсных бирж:

Старая дефиниция: exchange.GetOrders ((), при вызове без указания каких-либо параметров, получает все незавершенные заказы на текущие пары сделок, установленные конкретным контрактом.

После корректировки, переопределения: exchange.GetOrders (()) функция, призыв которой не указывает никаких параметров, получает все незавершенные заказы в диапазоне измерений, определенных контрактным кодом.

Например, текущая торговая пара - BTC_USD, контрактный код - quarter.

exchange.GetOrders()   // 等价于调用 exchange.GetOrders("USD.futures")

Функция запрашивает данные о незавершенных заказах, относящиеся к коэффициенту обмена копей на всех валютах.

4. Корректировка структуры

Структура тикера

Это обновление добавляет в конструкцию Ticker поле Symbol, которое записывает информацию о том, для какой разновидности является текущая структура Ticker.exchange.GetTicker()Формат параметров символов функции полностью совпадает.

Структура порядка

Это обновление добавляет в структуру Order поле Symbol, которое форматируется так, чтобы соответствоватьexchange.GetTicker()Формат параметров символа функции полностью соответствует. Это обновление также изменило поле Id в структуре Order, чтобы записать информацию о сортах, исходную информацию о порядке, в новом формате Order Id.exchange.GetOrder()Указание на ID заказа в функции, больше не обсуждается здесь.

Позиционные структуры

Это обновление добавляет в конструктор Position поле Symbol, которое форматируется сexchange.GetTicker()Формат параметров символов функции полностью совпадает.

Структура финансирования

Функция GetFundings возвращает массив структур Funding.

{
    "Info": {...},               // 交易所资金费率接口原始应答数据
    "Symbol": "BTC_USDT.swap",   // FMZ平台定义的品种名称
    "Interval": 28800000,        // 8小时间隔,单位毫秒
    "Time": 1729728000000,       // 本期资金费率收取时间
    "Rate": 0.0001,              // 资金费率,即 0.01 %
}

5. Система обратного измерения

Для удовлетворения потребностей пользователей обновление будет совместимо с дисками, и система ретроспекции будет полностью адаптирована в течение недели. Если коды отдельных стратегий затронуты, пожалуйста, сделайте изменения в соответствии с инструкцией этой статьи.

В соответствии с обновлением API-интерфейсов платформы, все API-интерфейсы в системе рецензирования платформы были синхронизированы и обновлены. Кроме того, система рецензирования поддерживает:

  • Поддержка большего количества данных обмена.
  • Поддерживает полный спектр данных обмена.
  • В частности, в частности, в частности, в частности, в частности, в частности, в частности:
  • Объекты товарных бирж поддерживают обменные пары в период пересмотра.
  • Система отзывов добавляет поддержку новых функций, таких как функции GetTickers, функции GetMarkets.

Дополнительные обновления

1, Account Структура Новые поля Equity, UPnL

Функции-члены для объектов фьючерсных биржGetAccountВозвращениеAccountСтруктура была расширена.

  • Equity В настоящее время общий доход в виде валют, не поддерживаемых отдельными фьючерсными биржами, в основном поддерживает этот поле. В основном используется для расчета прибыли и убытков в реальном времени.
  • UPnL Нереализованные прибыли от всех позиций, которые в настоящее время держат валютные активы, за исключением крайне отдельных фьючерсных бирж, которые не поддерживают, большинство из них поддерживают этот сегмент.

Поддержка параметров символов для функций SetMarginLevel

Для членской функции SetMarginLevel на объектах фьючерсных бирж был добавлен параметровый символ.

Тесты:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
    exchange.SetMarginLevel(10)
    
    // 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3, Функция GetMarkets возвращает структуру рынка с добавлением поля CtValCcy

  • ПолеCtValCcyЗаписывается единица стоимости контракта, которая может быть: BTC, USD, ETH и т.д.
  • ПолеCtValЗаписывает стоимость контракта на бирже, соответствующую стоимости контракта на бирже, в единицеCtValCcyНапример, вы можете указать валюту, в которой записано поле.CtValЭто 0.01,CtValCcyДля "BTC" означает контракт стоимостью 0.01 BTC.

Больше

Я не знаю.Я спросил, что случилось с моим новым роботом, возвращающий ID, который также содержит имена транзакций, долгое время изучал, а также логин после заказа, который теперь не отображается, также из-за обновления администратора?

Чан Чжи Чжун/upload/asset/2ffc0f961149326b78aed.png Если вы не знаете, что это за проблема, пожалуйста, ответьте, что это за проблема, вызванная обновлением интерфейса.

Экнемюс 希望exchange.Buy函数能增加开止损单的功能。。

НанСЕГОригинальное название

Я не знаю.Хорошо.

Изобретатели количественного измерения - мечтыХорошо, попробуйте на этой странице. Спасибо за вопрос.

Я не знаю.Да, extMsg1, extMsg2 не отображается.

Изобретатели количественного измерения - мечтыЗдравствуйте, это неизбежное изменение, поскольку обновленная система напрямую указывает разновидность заказа, и ID заказа должен содержать информацию о разновидности, иначе невозможно определить, какая разновидность этого заказа, и не может быть вызван при отзыве (поскольку большинство бирж требуют указать разновидность и указать ID при отзыве). Вы сказали, что послезаказная информация не отображается, то есть: exchange.Buy ((price, amount, extMsg1, extMsg2) при вызове extMsg1, extMsg2 не отображается в журнале?

Изобретатели количественного измерения - мечтыЗдравствуйте, вы отправляете текущие настройки биржи, торговые пары, коды контрактов.

Изобретатель количественныйПожалуйста, отправьте подробности о тестовом коде и конфигурации на форму, инженеры ответят вам в первое время.

Изобретатели количественного измерения - мечтыВ то же время, в некоторых странах существуют существенные различия в условиях и механизмах поддержки.

Изобретатели количественного измерения - мечтыСпасибо за поддержку, если у вас возникли проблемы с использованием, отправьте заявку или оставьте комментарий.