exchange.Encode


```exchange.Encode()```函数返回计算出来的哈希值编码。
string

exchange.Encode(algo, inputFormat, outputFormat, data)
exchange.Encode(algo, inputFormat, outputFormat, data, keyFormat, key)

参数```algo```为编码计算时使用的算法。 支持设置为:"raw"(不使用算法),"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","ripemd160","blake2b.256","blake2b.512","blake2s.128","blake2s.256"。 参数```algo```也支持:"text.encoder.utf8","text.decoder.utf8","text.encoder.gbk","text.decoder.gbk",对字符串编码、解码。 参数```algo```也支持:"ed25519"算法。支持使用不同的哈希算法,例如参数```algo```可写为"ed25519.md5"、"ed25519.sha512"等。支持```ed25519.seed```计算。
algo
true
string
用于指定```data```参数的数据格式。```inputFormat```参数支持设置为:"raw","hex","base64","string"其中之一。 "raw"表示数据为原始数据,"hex"表示数据为```hex```编码,"base64"表示数据为```base64```编码,"string"表示数据为字符串。
inputFormat
true
string
用于指定输出的数据格式。 ```outputFormat```参数支持设置为:"raw","hex","base64","string"其中之一。 "raw"表示数据为原始数据,"hex"表示数据为```hex```编码,"base64"表示数据为```base64```编码,"string"表示数据为字符串。
outputFormat
true
string
参数```data```为所要处理的数据。
data
true
string
用于指定```key```参数的数据格式。 ```key```参数支持设置为:"raw","hex","base64","string"其中之一。 "raw"表示数据为原始数据,"hex"表示数据为```hex```编码,"base64"表示数据为```base64```编码,"string"表示数据为字符串。
keyFormat
false
string
```key```参数用于指定签名计算时使用的密钥,可以使用明文字符串。 也可以使用```"{{accesskey}}"```、```"{{secretkey}}"```代指{@var/EXCHANGE exchange}交易所对象中配置的```accessKey```和```secretKey```。
key
false
string

```javascript
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("测试");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

BitMEX仓位变化推送(wss协议)例子:

仅实盘支持调用exchange.Encode()函数。 "{{accesskey}}""{{secretkey}}"的引用方式仅在exchange.Encode()函数使用时有效。

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