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: algo
também suporta: algo
também suporta: algo
pode ser escrito como ed25519.seed
Calculo.
algo
verdade
cordel
Utilizado para especificar o formato de dados dodata
Parâmetro.inputFormat
Parâmetro pode ser definido para um dos seguintes: hex
codificado, base64
codificado, e outputFormat
O parâmetro suporta as seguintes configurações: hex
codificado, base64
codificado, e data
são os dados a processar.
dados
verdade
cordel
Utilizado para especificar o formato de dados dokey
Parâmetro.key
Parâmetro pode ser definido para um dos seguintes: hex
codificado, base64
codificado, e key
Parâ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 aoaccessKey
esecretKey
Configurado 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