O recurso está a ser carregado... Carregamento...

exchange.Encode

Oexchange.Encode()A função é utilizada para cálculos de encriptação de assinatura.

Oexchange.Encode()Função que retorna a codificação do valor hash calculado. cordel

exchange.Encode ((algo, inputFormat, outputFormat, dados) exchange.Encode ((algo, inputFormat, outputFormat, dados, chaveFormat, chave)

O parâmetroalgoé o algoritmo usado para o cálculo de codificação. As configurações suportadas são: raw (sem algoritmo usado), 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.algotambém suporta: text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, para codificação e decodificação de strings.algotambém suporta: ed25519 algoritmo. Ele suporta o uso de diferentes algoritmos de hash, por exemplo, o parâmetroalgopode ser escrito como ed25519.md5, ed25519.sha512, etc. Suportaed25519.seedCalculo. algo verdade cordel Utilizado para especificar o formato de dados dodataParâmetro.inputFormatParâmetro pode ser definido para um dos seguintes: raw, hex, base64, e string. raw significa que os dados são dados brutos, hex significa que os dados sãohexcodificado, base64 significa que os dados sãobase64codificado, e string significa que os dados são uma cadeia. inputFormat verdade cordel Utilizado para especificar o formato de dados de saída.outputFormatO parâmetro suporta as seguintes configurações: raw, hex, base64, string.hexcodificado, base64 significa que os dados sãobase64codificado, e string significa que os dados são uma cadeia. outputFormat verdade cordel O parâmetrodatasão os dados a processar. dados verdade cordel Utilizado para especificar o formato de dados dokeyParâmetro.keyParâmetro pode ser definido para um dos seguintes: raw, hex, base64, e string. raw significa que os dados são dados brutos, hex significa que os dados sãohexcodificado, base64 significa que os dados sãobase64codificado, e string significa que os dados são uma cadeia. KeyFormat Falso cordel OkeyParâmetro é usado para especificar a chave usada no cálculo da assinatura, e pode ser usado como uma cadeia de texto simples."{{accesskey}}", "{{secretkey}}"referir-se aoaccessKeyesecretKeyConfigurado no objeto de troca {@var/EXCHANGE exchange}. Chave Falso cordel

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

Exemplo de push de mudança de posição do BitMEX (protocolo wss):

Só o mercado real suporta chamadasexchange.Encode()A"{{accesskey}}", "{{secretkey}}"As referências só são válidas quando oexchange.Encode()função é utilizada.

{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}

exchange.Log exchange.Go