Sample code for 30+ languages & platforms
Tcl

Bitfinex v2 REST Submit Order

See more Bitfinex v2 REST Examples

Submit an order.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set http [new_CkHttp]

set crypt [new_CkCrypt2]

set apiPath "v2/auth/w/order/submit"
set apiKey "MY_API_KEY"
set apiSecret "MY_API_SECRET"

set dt [new_CkDateTime]

CkDateTime_SetFromCurrentSystemTime $dt

set sbNonce [new_CkStringBuilder]

CkStringBuilder_Append $sbNonce [CkDateTime_getAsUnixTimeStr $dt 0]
CkStringBuilder_Append $sbNonce "000"
set nonce [CkStringBuilder_getAsString $sbNonce]

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "type" "LIMIT"
CkJsonObject_UpdateString $json "symbol" "tBTCUSD"
CkJsonObject_UpdateString $json "price" "15"
CkJsonObject_UpdateString $json "amount" "0.001"
CkJsonObject_UpdateInt $json "flags" 0
set body [CkJsonObject_emit $json]

set sbSignature [new_CkStringBuilder]

CkStringBuilder_Append $sbSignature "/api/"
CkStringBuilder_Append $sbSignature $apiPath
CkStringBuilder_Append $sbSignature $nonce
CkStringBuilder_Append $sbSignature $body

CkCrypt2_put_EncodingMode $crypt "hex_lower"
CkCrypt2_put_HashAlgorithm $crypt "sha384"
CkCrypt2_put_MacAlgorithm $crypt "hmac"
CkCrypt2_SetMacKeyString $crypt $apiSecret

set sig [CkCrypt2_macStringENC $crypt [CkStringBuilder_getAsString $sbSignature]]

CkHttp_SetRequestHeader $http "bfx-apikey" $apiKey
CkHttp_SetRequestHeader $http "bfx-signature" $sig
CkHttp_SetRequestHeader $http "bfx-nonce" $nonce

set resp [new_CkHttpResponse]

set success [CkHttp_HttpStr $http "POST" "https://api.bitfinex.com/v2/auth/w/order/submit" $body "utf-8" "application/json" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkCrypt2 $crypt
    delete_CkDateTime $dt
    delete_CkStringBuilder $sbNonce
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbSignature
    delete_CkHttpResponse $resp
    exit
}

puts "Response body:"
puts [CkHttpResponse_bodyStr $resp]

delete_CkHttp $http
delete_CkCrypt2 $crypt
delete_CkDateTime $dt
delete_CkStringBuilder $sbNonce
delete_CkJsonObject $json
delete_CkStringBuilder $sbSignature
delete_CkHttpResponse $resp