def test_utcts_datetime(self): """Test UTCTimestamp with datetime timestamp values""" msg = FixMessage() t = 1484581872.933458 dt = datetime.datetime.utcfromtimestamp(t) msg.append_utc_timestamp(52, dt) self.assertEqual(fix_str("20170116-15:51:12.933"), msg.get(52))
def logon(n): message = FixMessage() message.append_pair(8, "FIX.4.4") message.append_pair(35, "A") message.append_pair(34, n) message.append_pair(49, price_auth.SenderCompID) message.append_utc_timestamp(52) message.append_pair(56, price_auth.TargetCompID) message.append_pair(98, "0") message.append_pair(141, "Y") message.append_pair(108, "30") message.append_pair(553, price_auth.Username) message.append_pair(554, price_auth.Password) parser.append_buffer(message.encode()) sent = parser.get_message() print("logon2 request ", sent) s.sendall(message.encode()) response = s.recv(5201) parser.append_buffer(response) out = parser.get_message() print("logon response2", out)
def send(self, values: dict) -> None: with self._send_lock: msg = FixMessage() msg.append_pair(simplefix.TAG_BEGINSTRING, 'FIX.4.2') msg.append_pair(simplefix.TAG_SENDER_COMPID, self._sender_id) msg.append_pair(simplefix.TAG_TARGET_COMPID, self._target_id) msg.append_pair(simplefix.TAG_MSGSEQNUM, self._next_send_seq_num) for key, value in values.items(): if isinstance(value, datetime): msg.append_utc_timestamp(key, value) else: msg.append_pair(key, value) if not msg.get(simplefix.TAG_SENDING_TIME): msg.append_utc_timestamp(simplefix.TAG_SENDING_TIME) encoded = msg.encode() self._last_send_time = time.time() self._next_send_seq_num += 1 try: print('send', encoded.replace(b'\x01', b'|')) self._sock.sendall(encoded) except OSError: self.close(clean=False) return if msg.message_type == simplefix.MSGTYPE_LOGON: self._has_session = True
def test_utcts_seconds_only(self): """Test UTCTimestamp formatting of seconds only""" msg = FixMessage() t = 1484581872.933458 msg.append_utc_timestamp(52, t, 0) self.assertEqual(fix_str("20170116-15:51:12"), msg.get(52)) return
def test_utcts_bad_precision(self): """Test UTCTimestamp bad time precision values""" msg = FixMessage() t = 1484581872.933458 with self.assertRaises(ValueError): msg.append_utc_timestamp(52, t, 9) return
def test_utcts_float(self): """Test UTCTimestamp with floating point value""" msg = FixMessage() t = 1484581872.933458 msg.append_utc_timestamp(52, t) self.assertEqual(fix_str("20170116-15:51:12.933"), msg.get(52)) return
def test_remove_not_found(self): """Test removal of non-existent field.""" msg = FixMessage() msg.append_pair(8, b'FIX.4.2') msg.append_pair(35, b'D') msg.append_utc_timestamp(52) self.assertEqual(3, msg.count()) result = msg.remove(9) self.assertIsNone(result) self.assertEqual(3, msg.count())
def heartbeat_msg(n): heartbeat = FixMessage() heartbeat.append_pair(8, "FIX.4.4") heartbeat.append_pair(35, "0") heartbeat.append_pair(34, n) heartbeat.append_pair(49, price_auth.SenderCompID) heartbeat.append_utc_timestamp(52) heartbeat.append_pair(56, price_auth.TargetCompID) heartbeat.append_pair(57, "QUOTE") s.sendall(heartbeat.encode())
def heartbeat_msg(n): heartbeat = FixMessage() heartbeat.append_pair(8, "FIX.4.4") heartbeat.append_pair(35, "0") heartbeat.append_pair(34, n) heartbeat.append_pair(49, trade_auth.SenderCompID) heartbeat.append_utc_timestamp(52) heartbeat.append_pair(56, trade_auth.TargetCompID) heartbeat.append_pair(57, "TRADES") parser.append_buffer(heartbeat.encode()) s.sendall(heartbeat.encode())
def login(n): message = FixMessage() print('UTC', datetime.datetime.utcnow()) print('LOCAL', datetime.datetime.now()) message.append_pair(8, "FIX.4.4") message.append_pair(35, "A") message.append_pair(34, n) message.append_pair(49, trade_auth.SenderCompID) message.append_utc_timestamp(52, None) message.append_pair(56, trade_auth.TargetCompID) message.append_pair(98, "0") message.append_pair(108, "30") message.append_pair(141, "Y") message.append_pair(553, trade_auth.Username) message.append_pair(554, trade_auth.Password) msg = message.encode() print("logon msg", msg) s.sendall(msg) print("logon response", s.recv(7550))
def data_subscribe(n): data = FixMessage() data.append_pair(8, "FIX.4.4") data.append_pair(35, "V") data.append_pair(49, price_auth.SenderCompID) data.append_pair(56, price_auth.TargetCompID) data.append_pair(34, n) data.append_utc_timestamp(52) data.append_pair(262, "2") data.append_pair(263, "1") data.append_pair(264, "1") data.append_pair(265, "0") #1 data.append_pair(146, "1") data.append_pair(55, "EURUSD.spa") data.append_pair(267, "2") data.append_pair(269, "0") data.append_pair(269, "1") sent = data.encode() print("data request ", sent) s.sendall(data.encode()) print(s.recv(price_auth.SocketConnectPort))
def market_order(n, side, price): order = FixMessage() order.append_pair(8, "FIX.4.4") order.append_pair(35, "D") order.append_pair(34, n) order.append_pair(49, trade_auth.SenderCompID) order.append_utc_timestamp(52) order.append_pair(56, trade_auth.TargetCompID) order.append_pair(55, "EURUSD.spa") order.append_pair(54, side) order.append_pair(59, "3") order.append_utc_timestamp(60) order.append_pair(40, "1") order.append_pair(44, price) order.append_pair(38, "10000") order.append_utc_timestamp(11) order_msg = order.encode() print("sent order", order_msg) s.sendall(order_msg) print(str(s.recv(trade_auth.SocketConnectPort)).replace('\\x01', '|'))
def test_utcts_default(self): """Test UTCTimestamp with no supplied timestamp value""" msg = FixMessage() msg.append_utc_timestamp(52) self.assertIsNotNone(msg.get(52))
def test_utcts_explicit_none(self): """Test UTCTimestamp with explicit None timestamp value""" msg = FixMessage() msg.append_utc_timestamp(52, None) return
def test_utcts_default(self): """Test UTCTimestamp with no supplied timestamp value""" msg = FixMessage() msg.append_utc_timestamp(52) return
def test_utcts_explicit_none(self): """Test UTCTimestamp with explicit None timestamp value""" msg = FixMessage() msg.append_utc_timestamp(52, None) self.assertIsNotNone(msg.get(52))
def test_utcts_microseconds(self): """Test UTCTimestamp formatting of microseconds""" msg = FixMessage() t = 1484581872.933458 msg.append_utc_timestamp(52, t, 6) self.assertEqual(fix_str("20170116-15:51:12.933458"), msg.get(52))