Я использую bash и curl для работы с Kraken API.
Когда я пытаюсь добавить AddOrder, я получаю ответ:
{"error":["EGeneral:Invalid arguments"]}
Когда я использую тот же код, чтобы найтиБаланс, я не получаю сообщение об ошибке.
URL, который я использую, выглядит следующим образом: https://api.kraken.com/0/private/AddOrder?pair=XXBTZUSD&type=buy&ordertype=limit&price=6000&volume=1&userref=1537588642&validate=1
Код выглядит так (с окончательной командой openssl и curl на самомконец):
FUNC="AddOrder"
FN="/tmp/kraken$FUNC.json"
# URL
PRICE=$1
VOL=$2
ORDERTYPE=limit
ID=`date +%s`
URLPATH="/0/private/$FUNC"
URLPATH="$URLPATH?pair=XXBTZUSD&type=buy&ordertype=$ORDERTYPE&price=$PRICE&volume=$VOL&userref=$ID&validate=1"
echo $URLPATH
curlPost $URLPATH $FUNC $FN
curlPost(){
# API Key:
APIKEY=`cat creds.key`
# Private Key:
PRIVATEKEY=`cat creds.private`
URLHOST="https://api.kraken.com"
NONCE=$(date +%s%N)
echo ${1}
echo -n "${1}" > /tmp/kraken.$2.bin
echo -n "${NONCE}nonce=${NONCE}" | openssl sha256 -binary >> /tmp/kraken.$2.bin
PRIVATEKEYHEX=$(echo -n "${PRIVATEKEY}" | base64 -d | hexdump -v -e '/1 "%02X"');
cat /tmp/kraken.$2.bin | openssl sha512 -binary -mac HMAC -macopt hexkey:${PRIVATEKEYHEX} > sign.$2.bin
APISIGN=$(cat sign.$2.bin | base64 -w 0)
curl -X POST -H "Accept: application/json" -H "API-Key: ${APIKEY}" -H "API-Sign: ${APISIGN}" -d "nonce=$NONCE" ${URLHOST}${URLPATH} > $3
}