API Python FIX - нет ответа на Logon

87
8

Я пытаюсь настроить соединение с FIX API для обмена данными GDAX crpyto, но я не могу правильно войти в систему. Я использую следующий код для генерации сообщения:


import time
import simplefix
import socket
import base64
import hmac
import hashlib
from datetime import datetime

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 4197))

API_KEY = "KEY_GOES_HERE"
PASSPHRASE = "PASSPHRASE_GOES_HERE"
API_SECRET = "SECRET_GOES_HERE"

seq_num = "1"
sendingTime = str(datetime.utcnow()).replace("-","").replace(" ", "-")[:-3]
rawSig = "\x01".join([sendingTime, "A", seq_num, API_KEY, "Coinbase", PASSPHRASE]).encode("utf-8")

hmac_key = base64.b64decode(API_SECRET)
signature = hmac.new(hmac_key, rawSig, hashlib.sha256)
sign_b64 = base64.b64encode(signature.digest()).decode()

msg = simplefix.FixMessage()

msg.append_pair(8, "FIX.4.2")
msg.append_pair(35, "A")
msg.append_pair(49, API_KEY)
msg.append_pair(52, sendingTime)
msg.append_pair(56, "Coinbase")
msg.append_pair(98, "0")
msg.append_pair(108, "30")
msg.append_pair(554, PASSPHRASE)
msg.append_pair(96, sign_b64)
msg.append_pair(8013, "Y")

print(msg.encode())
s.sendall(msg.encode("ascii"))
print(s.recv(4096))


И я получаю 0 байт ответа от сервера. Насколько я могу судить, stunnel работает нормально (успешно подключается и проверяет сертификаты, но отключается после отправки моего сообщения о входе в систему).


Попробовали только с новым ключом API, кодовой фразой и секретом, но безрезультатно.


Для справки, я работал от вопроса, заданного здесь: Как отправить сообщение входа FIX с Python в GDAX, но мне не разрешено комментировать там.


Если у кого есть какие-то идеи, это будет оценено по достоинству. Ниже приведен пример генерируемого сообщения с исправлением, удаленные пароли в сообщении:


8=FIX.4.2\x019=161\x0135=A\x0149=[KEY_REMOVED]\x0152=20180113-18:24:07.889\x0156=Coinbase\x0198=0\x01108=30\x01554=[PASSPHRASE_REMOVED]\x0196=jueSJHoSNQM2BOCN3KM0mgB2/9tXpICbg4amqDKc2wY=\x018013=Y\x0110=053\x01

спросил(а) 2018-01-13T21:28:00+03:00 3 года, 3 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема