Python FIX API — нет ответа при входе в систему

Я пытался настроить подключение к 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

person TheOdeexs    schedule 13.01.2018    source источник
comment
У меня такая же проблема. Насколько я понимаю, для подключения к FIX API необходимо подключаться не к локальному хосту, а к GDAX с помощью s.connect(("fix.gdax.com", 4198)). Пожалуйста, дайте мне знать, если это что-то для вас.   -  person Arda Arslan    schedule 08.02.2018
comment
Вам удалось найти решение?   -  person SiberianGuy    schedule 27.02.2018
comment
@ArdaArslan да, это выглядит как очевидная проблема. Он пытается соединиться с самим собой. Сначала я подумал, что, возможно, он использует местный движок, например quickfix. Но это самая первая ночь, когда я узнаю о протоколе FIX API, поэтому я собираюсь попробовать это самостоятельно с помощью Simplefix в ближайшие несколько дней. Я, вероятно, обязательно сообщу об этом ветке, так как это одна из немногих, где я могу найти поддержку.   -  person greenhouse    schedule 15.09.2018