En la carga de los recursos... Cargando...

exchange.Encode

Elexchange.Encode()La función se utiliza para los cálculos de cifrado de firmas.

Elexchange.Encode()La función devuelve el valor de codificación de hash calculado. la cuerda

exchange.Encode ((algo, inputFormat, outputFormat, datos) exchange.Encode ((algo, inputFormat, outputFormat, datos, claveFormat, clave)

El parámetroalgoes el algoritmo utilizado para el cálculo de codificación. Los ajustes compatibles son: raw (sin algoritmo utilizado), 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, blake2b.512, blake2s.128, blake2s.256.algoTambién admite: text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, para codificar y decodificar cadenas.algotambién admite: ed25519 algoritmo. admite el uso de diferentes algoritmos de hash, por ejemplo, el parámetroalgopuede escribirse como ed25519.md5, ed25519.sha512, etc.ed25519.seedel cálculo. algo verdadero la cuerda Se utiliza para especificar el formato de datos deldatael parámetro.inputFormatraw significa que los datos son datos en bruto, hex significa que los datos sonhexcodificado, base64 significa que los datos estánbase64codificado, y string significa que los datos son una cadena. EntradaFormato verdadero la cuerda Se utiliza para especificar el formato de datos de salida.outputFormatParámetro admite los siguientes ajustes: raw, hex, base64, string. raw significa que los datos son datos en bruto, hex significa que los datos sonhexcodificado, base64 significa que los datos estánbase64codificado, y string significa que los datos son una cadena. ProducciónFormato verdadero la cuerda El parámetrodataes los datos a tratar. datos verdadero la cuerda Se utiliza para especificar el formato de datos delkeyel parámetro.keyraw significa que los datos son datos en bruto, hex significa que los datos sonhexcodificado, base64 significa que los datos estánbase64codificado, y string significa que los datos son una cadena. claveFormato falsos la cuerda ElkeyParámetro se utiliza para especificar la clave utilizada en el cálculo de la firma, y se puede utilizar como una cadena de texto plano."{{accesskey}}", "{{secretkey}}"para referirse a laaccessKeyysecretKeyconfigurado en el objeto de intercambio {@var/EXCHANGE exchange}. llave falsos la cuerda

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"];
        }
    }
}

Ejemplo de empuje de cambio de posición de BitMEX (protocolo wss):

Sólo el comercio real apoya la llamadaexchange.Encode()La función"{{accesskey}}", "{{secretkey}}"Las referencias sólo son válidas cuando elexchange.Encode()La función se utiliza.

¿Qué es lo que está pasando?

exchange.Log exchange.Go