18 Jan 2018
Все примеры работают с go version go1.9.2 linux/amd64
Работа с API для торгов
Получение своего баланса
Прежде всего для работы с api торгов нужно создать пару Ключ - Секрет на странице https://yobit.io/ru/api/keys/
Все будет немного сложнее, чем в предыдущем примере. Именно авторизация на бирже и подпись параметров вызвали у меня больше всего вопросов. Потому-то и хочется оставить рабочий код здесь.
Для начала каждый запрос нам нужно будет подписывать. И чтобы запросы (и подписи) отличались, биржа требует указывать каждый раз параметр nonce в виде целого числа в диапазоне 1..2147483646. При чем в каждом следующем запросе это число должно быть больше, чем в предыдущем. Для обнуления нужно создать новый ключ.
Для получения параметра nonce напишем отдельную функцию, чтобы мы могли пользоваться им даже после рестарта приложения:
import (
"io/ioutil"
"strconv"
)
func GetNonce(key string) (nonce int, err error) {
nonceFileName := "nonce." + key[0:8] + ".txt"
nonceBytes, err := ioutil.ReadFile(nonceFileName)
if err == nil {
nonce, _ = strconv.Atoi(string(nonceBytes))
}
nonce++
err = ioutil.WriteFile(nonceFileName, []byte(strconv.Itoa(nonce)), 0644)
return
}
Для того, чтобы хранить параметр для каждого ключа отдельно, используем часть ключа как часть имени файла.