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 )
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
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 )
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
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 ) )
def create_datadictionary(spec): if not spec: return fix.DataDictionary() else: return fix.DataDictionary(spec)
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"))
def setUp(self): self.object = fix.DataDictionary()
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 ) )