Beispiel #1
0
 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))
Beispiel #2
0
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)
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #7
0
 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())
Beispiel #8
0
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())
Beispiel #9
0
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())
Beispiel #10
0
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))
Beispiel #11
0
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))
Beispiel #12
0
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', '|'))
Beispiel #13
0
 def test_utcts_default(self):
     """Test UTCTimestamp with no supplied timestamp value"""
     msg = FixMessage()
     msg.append_utc_timestamp(52)
     self.assertIsNotNone(msg.get(52))
Beispiel #14
0
 def test_utcts_explicit_none(self):
     """Test UTCTimestamp with explicit None timestamp value"""
     msg = FixMessage()
     msg.append_utc_timestamp(52, None)
     return
Beispiel #15
0
 def test_utcts_default(self):
     """Test UTCTimestamp with no supplied timestamp value"""
     msg = FixMessage()
     msg.append_utc_timestamp(52)
     return
Beispiel #16
0
 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))
Beispiel #17
0
 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))