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ètrealgo
est l'algorithme utilisé pour le calcul du codage. Les paramètres pris en charge sont: algo
Il prend également en charge: algo
supporte également: algo
peut être écrit comme ed25519.seed
le calcul.
quelque chose
vrai
chaîne
Utilisé pour spécifier le format de données dudata
Paramètre.inputFormat
le paramètre peut être défini sur l'un des paramètres suivants: hex
codé, base64
encodé, et outputFormat
paramètre prend en charge les paramètres suivants: hex
codé, base64
encodé, et data
est les données à traiter.
données
vrai
chaîne
Utilisé pour spécifier le format de données dukey
Paramètre.key
le paramètre peut être défini sur l'un des paramètres suivants: hex
codé, base64
encodé, et key
paramè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 à laaccessKey
etsecretKey
configuré 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