Leexchange.IO()
la fonction est utilisée pour d'autres appels d'interface liés à l'objet d'échange.
Leexchange.IO()
La fonction appelle d'autres interfaces liées à l'objet d'échange, renvoyant les données de réponse demandées lors d'un appel réussi et elle renvoie null lors d'un appel raté.
chaîne, nombre, bool, objet, tableau, nul et tout autre type pris en charge par le système
exchange.IO(k,... args)
Lek
paramètre est utilisé pour définir le type d'appel, avec des valeurs facultatives"api"
, "currency"
, "base"
, "trade_margin"
, "trade_normal"
, "public_base"
, "mbase"
, selfTradePreventionMode
, simulate
, cross
, dual
, unified
et ainsi de suite.
K
vrai
chaîne
Paramètres étendus, passés selon le scénario d'appel spécifique,arg
En raison du mécanisme polymorphe de laexchange.IO()
Le nombre et le type de paramètres correspondent aux fonctions de l'appareil.exchange.IO()
Les fonctions sont indéterminées.
arg
vrai
chaîne, nombre, bool, objet, tableau, nul et tout autre type pris en charge par le système
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);
}
En utilisant leexchange.IO("api", httpMethod, resource, params, raw)
Le formulaire d'appelexchange.IO()
Il est nécessaire de comprendre l'interface API de l'échange et de vérifier d'abord la documentation pertinente.POST
la demande ne vous oblige pas à vous soucier du chiffrement, de la signature ou de la vérification des paramètres, qui sont déjà gérés par FMZ en bas, tant que vous remplissez les paramètres correspondants.Échange OKXles contrats à terme, et utiliser le paramètreraw
pour passer les paramètres d'ordre:
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);
}
Si la valeur clé dans leparams
paramètre (par exemple, paramètre de demande HTTP) est une chaîne, il doit être écrit en guillemets simples (par exemple, le symbole ') autour de la valeur du paramètre pour envelopper la valeur du paramètre.
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);
}
Il prend en charge le passage de paramètres d'url complets, ce qui peut omettre l'opération de commutation de l'adresse de base (appelant leexchange.SetBase()
fonction).
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);
}
Exemple d'appel sans paramètreraw
:
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());
}
Modifier la paire de négociation de l'échange actuel, de sorte qu'il changera la paire de négociation configurée par codelors de la création de transactions en directouau backtest.
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");
}
Pour les bourses avec différentes adresses de base pour l'interface ticker et l'interface de trading, par exemple, Bitfinex Futures dispose de deux adresses, l'une pour l'interface ticker et l'autre pour l'interface de trading.exchange.SetBase("xxx")
Les contrats à terme de Bitfinex changent d'adresse de base d'interface publique en utilisantexchange.IO("mbase", "xxx")
.
I. Pour les échanges centrés sur les crypto-monnaies, autres appels d'interface API qui ne sont pas uniformément encapsulés, avec paramètrek
réglé sur"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
, etc.URL
.Leexchange.IO("api", httpMethod, resource, params, raw)
l'appel de fonction accède à l'interface d'échange et renvoie null si l'appel échoue et qu'une erreur se produit.
Seul le commerce réel soutient l'appelexchange.IO("api", httpMethod, resource, params, raw)
function.
II. Pour le changement de paires de négociation, le paramètrek
est réglée sur"currency"
:
exchange.IO("currency", currency)
monnaie : Le paramètre est un type de chaîne avec un format majuscule uniforme, avec un trait de soulignement pour séparerbaseCurrency
dequoteCurrency
, tels queBTC_USDT
.
ETH_BTC
Je peux seulement passer àLTC_BTC
, pas àLTC_USDT
.exchange.IO("currency", currency)
pour changer de paire de négociation.III. Utilisé pour basculer sur le mode de compte à effet de levier de l'objet de l'échange au comptant de crypto-monnaie:
k
est réglée sur"trade_margin"
Pour placer des ordres et obtenir des actifs de compte, vous aurez accès à l'interface à effet de levier au comptant de l'échange.
Si la bourse fait la distinction entre marge totale et marge isolée dans l'effet de levier au comptant, utiliser:exchange.IO("trade_super_margin")
passer à la marge totale pour le compte à effet de levier, etexchange.IO("trade_margin")
de passer à une marge isolée pour le compte à effet de levier.k
est réglée sur"trade_normal"
pour revenir au mode de compte au comptant normal.Échanges au comptant qui prennent en charge le passage entre les modèles de comptes à effet de levier:
Les échanges | Remarques spéciales |
---|---|
- Ça va. | Les paires de trading en mode compte à effet de levier sont différentes des paires normales, certaines paires de trading peuvent ne pas les avoir.exchange.IO("trade_super_margin") passer à la position complète pour les comptes à effet de levier et utiliserexchange.IO("trade_margin") pour passer à la position par position.trade_normal utiliser le dispositif pour passer en mode spot normal.exchange.IO("tdMode", "cross") pour spécifier directement le mode d'effet de levier. |
Huobi est un joueur. | Les paires de trading en mode compte à effet de levier sont différentes des paires normales, certaines paires de trading peuvent ne pas les avoir.trade_margin pour passer à un compte d'effet de levier position par position, utilisertrade_super_margin pour passer à la position complète du compte à effet de levier.trade_normal pour passer au mode monnaie-monnaie normal. |
Binance | Le mode de compte à effet de levier est divisé en position par position et position totale, utilisationtrade_margin pour passer à position par position, utilisertrade_super_margin pour passer à la position complète, utilisertrade_normal pour passer au mode monnaie-monnaie normal. |
La porte | Le mode de compte à effet de levier est divisé en position par position et position totale, utilisationtrade_margin pour passer à position par position, utilisertrade_super_margin pour passer à la position complète, utilisertrade_normal pour passer au mode monnaie-monnaie normal. |
AscendEx | Utilisationexchange.IO("trade_margin") de passer au mode de compte à effet de levier etexchange.IO("trade_normal") pour revenir au mode de compte normal. |
Je vous en prie! | Utilisationexchange.IO("trade_margin") de passer au mode de compte à effet de levier etexchange.IO("trade_normal") pour revenir au mode de compte normal. |
CoinEx | Utilisationexchange.IO("trade_margin") de passer au mode de compte à effet de levier etexchange.IO("trade_normal") pour revenir au mode de compte normal. |
IV. Autres fonctions de commutationRegardez leexchange.IO()
fonction pourAutres fonctions de commutationdans le guide de l'utilisateur.
{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}
exchange.SetRate exchange.Log