В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)
POST
, GET
, и т.д.URL
.В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
.
ETH_BTC
Можно только переключиться наLTC_BTC
, не кLTC_USDT
.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