Les ressources ont été chargées... Je charge...

exchange.Encode

Leexchange.Encode()fonction est utilisée pour les calculs de chiffrement de signature.

Leexchange.Encode()la fonction renvoie le codage de la valeur de hachage calculée. chaîne

L'échange.Encode ((algo, entréeFormat, sortieFormat, données) Le code de l'appareil est le code de l'appareil.

Le paramètrealgoest l'algorithme utilisé pour le calcul du codage. Les paramètres pris en charge sont: raw (pas d'algorithme utilisé), sign, signTx, md4, md5, sha256, sha512, sha1, keccak256, sha3.224, sha3.256, sha3.384, sha3.512, sha3.keccak256, sha3.keccak512, sha512.384, sha512.256, sha512.224, emd160, ripke2b.256, blake2b.512, blake2s.128, blake2s.256.algoIl prend également en charge: text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, pour le codage et le décodage des chaînes.algosupporte également: ed25519 algorithme. Il supporte l'utilisation de différents algorithmes de hachage, par exemple le paramètrealgopeut être écrit comme ed25519.md5, ed25519.sha512, etc.ed25519.seedle calcul. quelque chose vrai chaîne Utilisé pour spécifier le format de données dudataParamètre.inputFormatle paramètre peut être défini sur l'un des paramètres suivants: raw, hex, base64, et string. raw signifie que les données sont des données brutes, hex signifie que les données sonthexcodé, base64 signifie que les données sontbase64encodé, et string signifie que les données sont une chaîne. Le format d'entrée vrai chaîne Utilisé pour spécifier le format des données de sortie.outputFormatparamètre prend en charge les paramètres suivants: raw, hex, base64, string. raw signifie que les données sont des données brutes, hex signifie que les données sonthexcodé, base64 signifie que les données sontbase64encodé, et string signifie que les données sont une chaîne. SortieFormat vrai chaîne Le paramètredataest les données à traiter. données vrai chaîne Utilisé pour spécifier le format de données dukeyParamètre.keyle paramètre peut être défini sur l'un des paramètres suivants: raw, hex, base64, et string. raw signifie que les données sont des données brutes, hex signifie que les données sonthexcodé, base64 signifie que les données sontbase64encodé, et string signifie que les données sont une chaîne. Le format faux chaîne Lekeyparamètre est utilisé pour spécifier la clé utilisée dans le calcul de la signature, et il peut être utilisé comme une chaîne de texte brut."{{accesskey}}", "{{secretkey}}"pour faire référence à laaccessKeyetsecretKeyconfiguré dans l'objet d'échange {@var/EXCHANGE exchange}. clé faux chaîne

function main() {
    var APIKEY = "your Access Key(Bitmex API ID)"
    var expires = parseInt(Date.now() / 1000) + 10
    var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    var client = Dial("wss://www.bitmex.com/realtime", 60)
    var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
    var pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while (true) {
        bitmexData = client.read()
        if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
            Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
            pos = parseInt(bitmexData.data[0].currentQty)
        }
    }
}
import time
def main():
    APIKEY = "your Access Key(Bitmex API ID)"
    expires = int(time.time() + 10)
    signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    client = Dial("wss://www.bitmex.com/realtime", 60)
    auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
    pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while True:
        bitmexData = json.loads(client.read())
        if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:   
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
            pos = bitmexData["data"][0]["currentQty"]
void main() {
    auto APIKEY = "your Access Key(Bitmex API ID)";
    auto expires = Unix() + 10;
    auto signature = exchange.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{secretkey}}");
    
    auto client = Dial("wss://www.bitmex.com/realtime", 60);
    json auth = R"({"args": [], "op": "authKeyExpires"})"_json;            

    auth["args"].push_back(APIKEY);
    auth["args"].push_back(expires);
    auth["args"].push_back(signature);
    auto pos = 0;
    client.write(auth.dump());
    client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
    while(true) {
        auto bitmexData = json::parse(client.read());
        if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
            Log("test");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

Exemple de modification de position de BitMEX (protocole wss):

Seul le commerce réel soutient l'appelexchange.Encode()La fonction"{{accesskey}}", "{{secretkey}}"Les références ne sont valables que lorsque leexchange.Encode()fonction est utilisée.

{@var/EXCHANGE échange}, {@fun/Global/Encode Encode}

exchange.Log exchange.Go