Die Ressourcen sind geladen. Beförderung...

exchange.IO

Dieexchange.IO()Funktion wird für andere Schnittstellenanrufe im Zusammenhang mit dem Austauschobjekt verwendet.

Dieexchange.IO()Funktion ruft andere Schnittstellen auf, die mit dem Exchange-Objekt verbunden sind, und gibt bei einem erfolgreichen Anruf die angeforderten Antwortdaten zurück und bei einem fehlgeschlagenen Anruf null zurück. String, number, bool, object, array, null und jeder andere vom System unterstützte Typ

exchange.IO(k,... args)

DiekParameter wird verwendet, um den Anruftyp mit optionalen Werten festzulegen"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifiedund so weiter. k wahr String Erweiterte Parameter gemäß dem spezifischen Anrufszenario,argDurch den polymorphen Mechanismus derexchange.IO()Die Anzahl und Art der Parameter, die für dieexchange.IO()Funktion sind unbestimmt. Arg - Das stimmt. String, number, bool, object, array, null und alle anderen vom System unterstützten Typen

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);
}

Mit Hilfe derexchange.IO("api", httpMethod, resource, params, raw)Aufrufformular derexchange.IO()Die Funktionalität der FMZ-Plattform kann durch die Einreichung eines Antrags auf die Übermittlung von Informationen über die Funktionalität der FMZ-Plattform erweitert werden.POSTAnforderung erfordert nicht, dass Sie sich Sorgen um die Verschlüsselung, Signierung oder Überprüfung der Parameter machen, die bereits von FMZ unten behandelt werden, solange Sie die entsprechenden Parameter ausfüllen.OKX ExchangeFutures-Kontrakte und verwenden Sie den Parameterrawzur Übergabe der Auftragsparameter:

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);
}

Wenn der Schlüsselwert in derparamsParameter (d.h. HTTP-Anfrageparameter) ist eine Zeichenfolge, sie muss in einzelnen Anführungszeichen (d.h. das Symbol ') um den Parameterwert geschrieben werden, um den Parameterwert zu umschließen.

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);
}

Es unterstützt die Übergabe vollständiger URL-Parameter, die den Betrieb des Umschaltens der Basisadresse (Aufrufen der URL-Adresse) weglassen können.exchange.SetBase()Funktion).

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);
}

Beispiel für einen Aufruf ohne Parameterraw:

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());
}

Wechseln Sie das Handelspaar des aktuellen Austauschs, so dass es das Handelspaar durch Code konfiguriert wechselnbei der Schaffung von Live-Handelsgeschäftenoderbei 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");
}

Für Börsen mit unterschiedlichen Basisadressen für die Tickerschnittstelle und die Handelsschnittstelle haben Bitfinex Futures beispielsweise zwei Adressen, eine für die Tickerschnittstelle und die andere für die Handelsschnittstelle.exchange.SetBase("xxx"). Bitfinex Futures wechseln öffentliche Schnittstelle Basisadresse mitexchange.IO("mbase", "xxx").

I. Für kryptogeldzentrierte Börsen andere API-Schnittstellenanrufe, die nicht einheitlich verkapselt sind, mit Parameterkauf"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod: Der Parameter ist ein Zeichenfolge-Typ, füllen Sie den Anforderungstyp einPOST, GET, usw.
  • Ressource: Der Parameter ist String und füllt den Anforderungspfad aus. Er unterstützt die Verwendung vollständiger Anforderungspfade, siehe das Referenzbeispiel für Details.
  • Parameter: Der Parameter ist ein Zeichenfolge-Typ, gefüllt mit Anforderungsparametern, kodiert mitURL.
  • raw: Der Parameter ist der Parameter der Rohstring und kann ausgelassen werden.

Dieexchange.IO("api", httpMethod, resource, params, raw)Funktionsanruf wird auf die Exchange-Schnittstelle zugreifen und null zurückgeben, wenn der Anruf fehlschlägt und ein Fehler auftritt. Nur der echte Handel unterstützt die Anrufung derexchange.IO("api", httpMethod, resource, params, raw) function.

II. Bei Wechseln von Handelsparen wird der Parameterkist auf"currency":

exchange.IO("currency", currency)
  • Währung: Der Parameter ist ein Zeichenkettentyp mit einem einheitlichen Großbuchstabenformat, bei dem ein Unterstrich verwendet wird, um zu trennenbaseCurrencyvonquoteCurrency, wie zum BeispielBTC_USDT.

    1. Das Backtesting-System unterstützt jetzt das Wechseln von Handelsparen (nur für digitale Währung Spot-Austausch-Objekte), beim Backtesting müssen Sie darauf achten, dass Sie nur auf Handelspare mit der gleichen Währung wechseln können, zum Beispiel das aktuelle Handelspaar istETH_BTCkann nur aufLTC_BTC, nicht zuLTC_USDT.
    2. Für Kryptowährungs-Futures-Kontrakte wechselt das Austauschobjekt die Handelspare und der Vertragscode muss erneut festgelegt werden, um festzustellen, welcher Vertrag gehandelt werden soll.
    3. Die Verwendung der {@fun/Account/exchange.SetCurrency exchange.SetCurrency} Funktion zum Wechseln von Handelspaaren ist genau das gleiche wie die Verwendungexchange.IO("currency", currency)um Handelspare zu wechseln.

III. Wird verwendet, um den Leveraged-Konto-Modus des Kryptowährungs-Spot-Austauschobjekts zu wechseln:

  • Der Parameterkist auf"trade_margin"Die Angabe von Aufträgen und der Erwerb von Kontovermögen erfolgt über die Spot-Leveraged-Schnittstelle der Börse. Wenn die Börse bei Spot-Leverage zwischen voller Marge und isolierter Marge unterscheidet, wird folgendes verwendet:exchange.IO("trade_super_margin")die Umstellung auf die volle Marge für das Hebelkonto undexchange.IO("trade_margin")Umstellung auf eine isolierte Marge für das Hebelkonto.
  • Parameterkist auf"trade_normal"Zurück zum normalen Spotkonto-Modus.

Spotbörsen, die den Wechsel zwischen Leveraged-Konto-Modellen unterstützen:

Auswechslungen Besondere Bemerkungen
OKX Handelspaare im Hebelkonto-Modus unterscheiden sich von normalen, einige Handelspaare haben sie möglicherweise nicht.exchange.IO("trade_super_margin")zur Umstellung auf die volle Position für Hebelkonten und zur Verwendungexchange.IO("trade_margin")Sie können auch eine andere Anlage verwenden.trade_normalSie können die Tabelle in einem anderen Modus verwenden, um in den normalen Spotmodus zu wechseln.exchange.IO("tdMode", "cross")um die Hebelwirkung direkt anzugeben.
Weiß nicht. Bei Huobi gibt es eine Reihe von Handelspaaren, bei denen es sich um die vollständigen Positionen und die Positionen nach Positionen handelt.trade_marginzur Umstellung auf Hebelkontoposition nach Position, Verwendungtrade_super_marginUm auf Hebelwirkung zu wechseln.trade_normalzum normalen Währungs-Währungs-Modus wechseln.
Binance Der Leveraged-Konto-Modus wird in Position nach Position und Vollposition, Verwendungtrade_marginUm von Position zu Position zu wechseln, verwendentrade_super_marginUm in die volle Position zu wechseln, verwenden Sietrade_normalzum normalen Währungs-Währungs-Modus wechseln.
Schnittstelle Der Leveraged-Konto-Modus wird in Position nach Position und Vollposition, Verwendungtrade_marginUm von Position zu Position zu wechseln, verwendentrade_super_marginUm in die volle Position zu wechseln, verwenden Sietrade_normalzum normalen Währungs-Währungs-Modus wechseln.
AscendEx Verwendungexchange.IO("trade_margin")zur Umstellung auf einen Hebelkonto undexchange.IO("trade_normal")Zurück zum normalen Konto-Modus.
Wo ist er? Verwendungexchange.IO("trade_margin")zur Umstellung auf einen Hebelkonto undexchange.IO("trade_normal")Zurück zum normalen Konto-Modus.
CoinEx Verwendungexchange.IO("trade_margin")zur Umstellung auf den Leveraged-Konto-Modus undexchange.IO("trade_normal")Zurück zum normalen Konto-Modus.

IV. Sonstige Schaltfunktionen:Schauen Sie sich das an.exchange.IO()Funktion fürAndere Schaltfunktionenin der Benutzeranleitung.

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

exchange.SetRate exchange.Log