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

exchange.IO

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

Вexchange.IO()функция вызывает другие интерфейсы, связанные с объектом обмена, возвращая запрошенные данные ответа при успешном вызове, и возвращает null при неудачном вызове. string, number, bool, object, array, null и любой другой тип, поддерживаемый системой

exchange.IO(k,...args)

Вkпараметр используется для настройки типа вызова, с необязательными значениями"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifiedи так далее. k неправда строка Расширенные параметры, переданные в соответствии с конкретным сценарием вызова,argИз-за полиморфного механизмаexchange.IO()Для определения числа и типа параметров,exchange.IO()Функции неопределенны. арг Истинно string, number, bool, object, array, null и любые другие типы, поддерживаемые системой

function main() {
    var arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    
    // Call exchange.IO to access the exchange's bulk order interface directly
    var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
    Log(ret)
}
import json
def main():
    arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}, 
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
    Log(ret)
void main() {
    json arrOrders = R"([
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ])"_json;
    auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
    Log(ret);
}

Использованиеexchange.IO("api", httpMethod, resource, params, raw)Форма вызоваexchange.IO()Это позволит вам расширить функциональность, которая не добавлена к платформе FMZ.POSTЗапрос не требует от вас беспокоиться о шифровании, подписании или проверке параметров, которые уже обрабатываются FMZ внизу, пока вы заполняете соответствующие параметры.OKX ExchangeФьючерсные контракты, и использовать параметрrawдля передачи параметров порядка:

var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
    // Note that both amount.toString() and price.toString() have a ' character on the left and right side
    var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
    var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
    message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
    id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
    auto amount = 1.0;
    auto price = 10.0;
    auto basecurrency = "ltc";
    string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
    auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}

Если ключевое значение вparamsпараметр (т.е. Http запрос параметр) является строкой, он должен быть написан в одиночных кавычках (т.е. символ ') вокруг значения параметра, чтобы обернуть значение параметра.

function main() {
    var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
    Log(ret);
}

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

function main(){
    var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
    Log(ret);
}

Пример вызова без параметраraw:

function main() {
    // For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
    Log(exchange.GetTicker())
    // Switch the trading pair to LTC_BTC      
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.IO("currency", "LTC_BTC");
    Log(exchange.GetTicker());
}

Переключите торговую пару текущей биржи, так что она будет переключать торговую пару, настроенную по кодупри создании торговли в режиме реального времениилипри обратном тестировании.

function main () {
    // exchanges[0] is the first exchange object added when the live trading is created 
    exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
    exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
    exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
    exchange.SetBase("https://api.bitfinex.com");
    exchange.IO("mbase", "https://api-pub.bitfinex.com");
}

Для бирж с разными базовыми адресами для интерфейса тикера и торгового интерфейса, например, Bitfinex Futures имеет два адреса, один для интерфейса тикера и другой для торгового интерфейса.exchange.SetBase("xxx"). Фьючерсы Bitfinex переключаются на общедоступный интерфейс с использованием базового адресаexchange.IO("mbase", "xxx").

I. Для бирж, ориентированных на криптовалюты, другие вызовы интерфейсов API, которые не являются единообразными, с параметромkУстановлено на"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : Параметр является типом строки, заполните тип запросаPOST, GET, и т.д.
  • ресурс: Параметр имеет тип строки и заполняет путь запроса; он поддерживает использование полных путей запроса, см. справочный пример для деталей.
  • params: Параметр представляет собой тип строки, заполненный параметрами запроса, закодированныйURL.
  • raw: параметр является параметром строки raw и может быть пропущен.

Вexchange.IO("api", httpMethod, resource, params, raw)вызов функции будет получать доступ к интерфейсу обмена и возвращает null, если вызов не удастся и произойдет ошибка. Только реальная торговля поддерживает звонкиexchange.IO("api", httpMethod, resource, params, raw) function.

II. Для переключения торговых пар параметрkУстановлено на"currency":

exchange.IO("currency", currency)
  • currency: Параметр представляет собой тип строки с единым форматами верхних букв, используя подчерк для разделенияbaseCurrencyотquoteCurrency, например:BTC_USDT.

    1. Система обратного тестирования теперь поддерживает переключение торговых пар (только для цифровых валют спотовых обменных объектов), при обратном тестировании, вы должны обратить внимание, что вы можете переключаться только на торговые пары с той же номинальной валютой, например, текущая торговая параETH_BTCМожно только переключиться наLTC_BTC, не кLTC_USDT.
    2. Для фьючерсных контрактов на криптовалюты объект биржи переключает торговые пары, и код контракта должен быть повторно установлен, чтобы определить, какой контракт будет торговаться.
    3. Использование функции {@fun/Account/exchange.SetCurrency exchange.SetCurrency} для переключения торговых пар точно так же, как использованиеexchange.IO("currency", currency)чтобы сменить торговые пары.

III. Используется для переключения на режим учетной записи с объектом левериджного воздействия криптовалютной спотовой биржи:

  • ПараметрkУстановлено на"trade_margin"Для размещения ордеров и получения активов счета будет доступ к интерфейсу спотового левериджа биржи. Если биржа проводит различие между полной маржой и изолированной маржой при спотовом рычаге, используется:exchange.IO("trade_super_margin")перейти на полную маржу для счета с кредитным плечом, иexchange.IO("trade_margin")перейти на изолированную маржу для счета с кредитным плечом.
  • ПараметрkУстановлено на"trade_normal"перейти на обычный режим спотового счета.

Спотовые биржи, поддерживающие переключение между моделями счетов с кредитным плечом:

Обмены Особые замечания
ОКX Торговые пары в режиме учетного счета с кредитным плечом отличаются от обычных, некоторые торговые пары могут их не иметь.exchange.IO("trade_super_margin")перейти на полную позицию для счетов с кредитным плечом и использоватьexchange.IO("trade_margin")Использоватьtrade_normalИспользоватьexchange.IO("tdMode", "cross")для прямого указания режима использования кредитного плеча.
Хьюби Торговые пары с использованием рычага на счетах отличаются от обычных, некоторые торговые пары могут их не иметь.trade_marginперейти на позицию счета с кредитным плечом по позициям, использоватьtrade_super_marginИспользоватьtrade_normalперейти на обычный режим "валюта-валюта".
Binance Режим счета с использованием кредитного плеча делится на позицию по позиции и полную позицию, использованиеtrade_marginчтобы переключиться на положение по положению, использоватьtrade_super_marginперейти на полное положение, использоватьtrade_normalперейти на обычный режим "валюта-валюта".
Ворота Режим счета с использованием кредитного плеча делится на позицию по позиции и полную позицию, использованиеtrade_marginчтобы переключиться на положение по положению, использоватьtrade_super_marginперейти на полное положение, использоватьtrade_normalперейти на обычный режим "валюта-валюта".
AscendEx Использованиеexchange.IO("trade_margin")перейти на режим счета с кредитным плечом иexchange.IO("trade_normal")чтобы вернуться в обычный режим учетной записи.
Ух ты! Использованиеexchange.IO("trade_margin")перейти на режим счета с кредитным плечом иexchange.IO("trade_normal")чтобы вернуться в обычный режим учетной записи.
CoinEx Использованиеexchange.IO("trade_margin")перейти на режим счета с кредитным плечом иexchange.IO("trade_normal")чтобы вернуться в обычный режим учетной записи.

IV. Другие функции переключения:Посмотрите наexchange.IO()функция дляДругие функции переключенияв руководстве пользователя.

{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}

exchange.SetRate exchange.Log