Я пытался настроить подключение к 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
s.connect(("fix.gdax.com", 4198))
. Пожалуйста, дайте мне знать, если это что-то для вас. - person Arda Arslan   schedule 08.02.2018