Exemple #1
0
    def test_addGroup(self):
        self.object.setVersion("FIX.4.2")

        group1 = fix.DataDictionary()
        group1.addMsgType("1")
        group2 = fix.DataDictionary()
        group2.addMsgType("2")
        group3 = fix.DataDictionary()
        group3.addMsgType("3")

        self.object.addGroup("A", 100, 101, group1)
        self.object.addGroup("A", 200, 201, group2)
        self.object.addGroup("A", 300, 301, group3)

        d = fix.DataDictionary()
        delim = 0

        result = self.object.getGroup("A", 100, delim, d)
        self.assertEquals(101, result[0])
        self.failUnless(d.isMsgType("1"))

        result = self.object.getGroup("A", 200, delim, d)
        self.assertEquals(201, result[0])
        self.failUnless(d.isMsgType("2"))

        result = self.object.getGroup("A", 300, delim, d)
        self.assertEquals(301, result[0])
        self.failUnless(d.isMsgType("3"))
    def test_setStringWithHeaderGroup(self):
        dataDictionary = fix.DataDictionary( "spec/FIX43.xml" )
        str = "8=FIX.4.3\0019=152\00135=A\00134=125\00149=BUYSIDE\00152=20040916-16:19:18.328\00156=SELLSIDE\001627=2\001628=HOP1\001629=20040916-16:19:18.328\001630=ID1\001628=HOP2\001629=20040916-16:19:18.328\001630=ID2\00110=079\001"

        try:
            self.object.setString( str, True, dataDictionary )
            self.assertEqual( str, self.object.toString() )
        except fix.InvalidMessage as e:
            assert( 0 )
    def test_setStringWithGroup(self):
        dataDictionary = fix.DataDictionary( "spec/FIX43.xml" )
        str = "8=FIX.4.3\0019=199\00135=E\00134=126\00149=BUYSIDE\00150=00303\00152=20040916-16:19:18.328\00156=SELLSIDE\00166=1095350459\00168=2\00173=2\00111=1095350459\00167=1\0011=00303\00155=fred\00154=1\00140=1\00159=3\00111=1095350460\00167=2\0011=00303\00155=fred\00154=1\00140=1\00159=3\001394=3\00110=138\001"

        try:
            self.object.setString( str, True, dataDictionary )
            self.assertEqual( str, self.object.toString() )
        except fix.InvalidMessage as e:
            assert( 0 )
Exemple #4
0
def test_order():
    # _str = "8=FIX.4.4\0019=267\00135=D\00134=1284\00149=N2N\00150=ricky1\00152=20210112-02:47:10.159\00156=FEME\00157=G\001142=MY\0011=B10013\00111=MY011206\00121=1\00138=2\00140=2\00144=3381.000000\00154=1\00155=1004\00159=0\00160=20210112-10:47:00.999\001107=FCPON1\001167=FUT\001204=1\0011028=Y\0011031=Y\0011603=global connect\0011604=3.0\0011605=N2N\0019702=4\0019717=MY011206\00110=118\001"
    _str = "8=FIX.4.4\0019=127\00135=D\00149=CLIENT6\00156=FEME\00111=CLIENT6HEL-Apr211\00121=1\00138=2\00140=2\00144=100\00154=2\00155=HEL-Apr21\00158=2 HEL-Apr21 2@100\00160=20210115-12:29:05\00110=071\001"

    data_dictionary = fix.DataDictionary("spec/FIX42.xml")
    message = Message()

    message.setString(_str, True, data_dictionary)
    # message = Message(_str, data_dictionary, False)
    return message
Exemple #5
0
    def run(self):
        #logon
        logon_message = "8=FIX.4.49=7535=A34=109249=TESTBUY152=20180920-18:24:59.64356=TESTSELL198=0108=6010=178"
        logon = fix44.Logon()
        print("Sending Logon")
        logon.setString(logon_message, True,
                        fix.DataDictionary(r'./fix44.xml'))

        with open('orders.json', 'r') as json_file:
            user_data = json.loads(json_file.read())
            for message in user_data:
                self.onNOS(message)
        return
    def test_embeddedXml(self):
        dataDictionary = fix.DataDictionary( "spec/FIX42.xml" )
        encodedFIXmessage = "8=FIX.4.2\0019=390\00135=8\00134=136\001369=131\00152=20150220-14:40:24.991\00149=CME\00150=G\00156=GGGGGGN\00157=GGG\001143=IL\0011=TEST\0016=0\00111=00000000000000000003\00114=1\00117=64485:M:412850TN0031303\00120=0\00131=208700\00132=1\00137=64227619161\00138=1\00139=2\00140=2\00141=0\00144=208700\00148=147403\00154=1\00155=ES\00159=0\00160=20150220-14:40:24.970\00175=20150220\001107=ESH5\001150=2\001151=0\001167=FUT\001337=TRADE\001375=CME000A\001432=20150220\001442=1\001527=642276191612015022031303\0011028=N\0011057=N\00110=000\001"

        str = "8=FIX.4.2\0019=501\00135=n\00134=158\001369=130\00152=20150220-14:40:24.991\00149=CME\00150=G\00156=QQQQQQN\00157=QQQ\001212=413\001213=" + encodedFIXmessage + "\00110=129\001"

        xmlDataLen = fix.XmlDataLen()
        xmlData = fix.XmlData()
        try:
            self.object.setString( str, True, dataDictionary )
            self.object.getHeader().getField(xmlDataLen)
            self.object.getHeader().getField(xmlData)
            self.assertEqual( 413, xmlDataLen.getValue() )
            self.assertEqual( encodedFIXmessage, xmlData.getValue() )
        except fix.InvalidMessage as e:
            print(e)
            assert( 0 )
Exemple #7
0
    def create(cls, config_filename: str):
        config = parse_config(config_filename)

        rv = cls()

        rv.incoming_messages = Queue()
        rv.outgoing_messages = Queue()

        rv.data_dict = fix.DataDictionary(config['DataDictionary'])
        rv.enums = parse_enums(config['DataDictionary'])
        rv.username = config.get('Username')
        rv.password = config.get('Password')

        settings = fix.SessionSettings(config_filename)
        rv.socket_initiator = fix.SocketInitiator(
            rv, fix.FileStoreFactory(settings), settings,
            fix.FileLogFactory(settings))

        return rv
Exemple #8
0
def send_bat_order():
    step1 = "8=FIX.4.4\0019=142\00135=D\00134=69\00149=N2N\00152=20210206-02:12:04.215\00156=FEME\00111=1612577524199\00121=1\00138=1\00140=2\00144=111.25\00154=1\00155=FMG3-DEC20\00159=0\00160=20210206-02:12:04.212\00110=073\001"
    step2 = "8=FIX.4.4\0019=142\00135=D\00134=70\00149=N2N\00152=20210206-02:13:21.524\00156=FEME\00111=1612577601535\00121=1\00138=1\00140=2\00144=110.15\00154=2\00155=FMG3-MAR21\00159=0\00160=20210206-02:13:21.523\00110=083\001"
    step3 = "8=FIX.4.4\0019=145\00135=D\00134=71\00149=N2N\00152=20210206-02:14:03.572\00156=FEME\00111=1612577643586\00121=1\00138=1\00140=2\00144=1.5\00154=2\00155=FMG3-DEC20-MAR21\00159=0\00160=20210206-02:14:03.572\00110=053\001"
    step4 = "8=FIX.4.4\0019=142\00135=D\00134=72\00149=N2N\00152=20210206-02:17:14.602\00156=FEME\00111=1612577834617\00121=1\00138=1\00140=2\00144=109.95\00154=1\00155=FMG3-JUN21\00159=0\00160=20210206-02:17:14.602\00110=129\001"
    step5 = "8=FIX.4.4\0019=142\00135=D\00134=73\00149=N2N\00152=20210206-02:18:59.381\00156=FEME\00111=1612577939399\00121=1\00138=1\00140=2\00144=109.35\00154=2\00155=FMG3-MAR21\00159=0\00160=20210206-02:18:59.381\00110=153\001"
    
    data_dictionary = fix.DataDictionary("spec/FIX42.xml")
    message = Message()

    message.setString(step1, True, data_dictionary)
    send(message)
    sleep(1)
    message.setString(step2, True, data_dictionary)
    send(message)
    sleep(1)
    message.setString(step3, True, data_dictionary)
    send(message)
    sleep(1)
    message.setString(step4, True, data_dictionary)
    send(message)
    sleep(1)
    def test_setString(self):
        strGood = "8=FIX.4.2\0019=45\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\00110=218\001"
        strNull = "8=FIX.4.2\0019=46\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\000\00110=219\001"
        strTrailingCharacter = "8=FIX.4.2\0019=45\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\00110=218\001 "
        strNoChk = "8=FIX.4.2\0019=45\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\001"
        strBadChk = "8=FIX.4.2\0019=45\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\00110=000\001"
        strBad = "8=FIX.4.2\0019=45\00135=0\00134=3\00149garbled=TW\00152=20000426-12:05:06\00156=ISLD\00110=000\001"
        strBadHeaderOrder = "8=FIX.4.2\00135=0\0019=45\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\00110=218\001"
        strBodyFields = "8=FIX.4.2\0019=60\00135=D\00111=ORDERID\00121=3\00140=2\00154=1\00155=MSFT\00160=19000101-00:00:00\00110=226\001"
        strNoLengthAndChk = "8=FIX.4.2\00135=0\00134=3\00149=TW\00152=20000426-12:05:06\00156=ISLD\001";
        strJunk = "paste your FIX message here, then hit ENTER"
        strEmpty = ""

        try:
            self.object.setString( strGood )
            self.object.setString( strNull )
            self.object.setString( strNoLengthAndChk, False )
        except fix.InvalidMessage as e:
            self.assertTrue( 0 )

        try:
            self.object.setString( strTrailingCharacter )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strNoChk )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strBadChk )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strBad )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strBadHeaderOrder )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strNoLengthAndChk )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strJunk )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        try:
            self.object.setString( strEmpty )
            self.assertTrue(0)
        except fix.InvalidMessage as e:
            self.assertTrue(1)

        dataDictionary = fix.DataDictionary()
        dataDictionary.addHeaderField( 11, False )
        dataDictionary.addTrailerField( 60, False )

        clOrdID = fix.ClOrdID()
        transactTime = fix.TransactTime()
        symbol = fix.Symbol()

        try:
            self.object.setString( strBodyFields, True, dataDictionary )
        except fix.InvalidMessage as e:
            self.assertTrue( 0 )

        assert( self.object.getHeader().isSetField( clOrdID ) )
        assert( self.object.getTrailer().isSetField( transactTime ) )
        assert( self.object.isSetField( symbol ) )
Exemple #10
0
def create_datadictionary(spec):
    if not spec:
        return fix.DataDictionary()
    else:
        return fix.DataDictionary(spec)
Exemple #11
0
from mega_trader import meghdoot
from model import *

parser_handler = logging.handlers.RotatingFileHandler(
    filename="./log/parser.log",
    mode="a",
    maxBytes=5 * 1024 * 1024,
    backupCount=50)
fmt = logging.Formatter("%(asctime)s.%(msecs)03d %(message)s")
parser_handler.setFormatter(fmt)
parser_handler.setLevel(logging.DEBUG)
_parser_logger = logging.getLogger("mega_trader.mt_data_parser")
_parser_logger.propagate = False
_parser_logger.addHandler(parser_handler)

dd = fix.DataDictionary(definitions.FIX50SP02)

begin_string = fix.BeginString()
body_length = fix.BodyLength()
message_type = fix.MsgType()
sender_id = fix.SenderCompID()
target_id = fix.TargetCompID()
msg_seq = fix.MsgSeqNum()
sender_sub_id = fix.SenderSubID()
target_sub_id = fix.TargetSubID()
duplicate_flag = fix.PossDupFlag()
user_req_type = fix.UserRequestType()
gateway_id = fix.MarketID()
orig_sending_time = fix.OrigSendingTime()
sending_time = fix.SendingTime()
on_behalf_id = fix.OnBehalfOfCompID()
 def dd(self):
     settings = self.acceptor.getSessionSettings(self.sessionID)
     return fix.DataDictionary(settings.getString("DataDictionary"))
Exemple #13
0
 def setUp(self):
     self.object = fix.DataDictionary()
Exemple #14
0
		except fix.InvalidMessage, e:
			self.failUnless(1)

		try:
			self.object.setString( strJunk )
			self.failUnless(0)
		except fix.InvalidMessage, e:
			self.failUnless(1)

		try:
			self.object.setString( strEmpty )
			self.failUnless(0)
		except fix.InvalidMessage, e:
			self.failUnless(1)

		dataDictionary = fix.DataDictionary()
		dataDictionary.addHeaderField( 11, False )
		dataDictionary.addTrailerField( 60, False )

		clOrdID = fix.ClOrdID()
		transactTime = fix.TransactTime()
		symbol = fix.Symbol()

		try:
			self.object.setString( strBodyFields, True, dataDictionary )
		except fix.InvalidMessage, e:
			self.failUnless( 0 )

		assert( self.object.getHeader().isSetField( clOrdID ) )
		assert( self.object.getTrailer().isSetField( transactTime ) )
		assert( self.object.isSetField( symbol ) )