Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1.  
  2. import quickfix as fix
  3. import time
  4.  
  5.  
  6. print('Hello.... Starting')
  7.  
  8.  
  9. class Application(fix.Application):
  10. orderID = 0
  11. execID = 0
  12.  
  13.  
  14. def onCreate(self, sessionID):
  15. print('SESSION ID: ',sessionID)
  16. self.sessionID = sessionID
  17. return
  18.  
  19.  
  20. def onLogon(self, sessionID):
  21.  
  22. #print("Successful Logon to session '{}'.".format(sessionID.toString()))
  23. print('SessionID: ', sessionID)
  24. print('Self.SessionID: ', self.sessionID)
  25. return
  26.  
  27.  
  28. def onLogout(self, sessionID):
  29. return
  30.  
  31. def toAdmin(self,message, sessionID):
  32. msgType = fix.MsgType().getField()
  33. message.getHeader().getField(msgType)
  34. if (msgType == fix.MsgType_Logon):
  35. print('Logging On')
  36. username = fix.Username('BANTANDTS')
  37. mypass = fix.Password('12345678')
  38. mycompid = fix.TargetSubID('TTDEV17BO')
  39. message.setField(username)
  40. message.setField(mypass)
  41. message.setField(mycompid)
  42.  
  43.  
  44. def fromAdmin(self,message,sessionID):
  45. TradeID = fix.TradingSessionID
  46. message.getField(TradeID)
  47. print("Received the Admin following message: '{}'".format(message))
  48. print(message.getField(TradeID))
  49. return
  50.  
  51.  
  52. def toApp(self, message, sessionID):
  53. return
  54.  
  55.  
  56. def fromApp(self, message, sessionID):
  57. msgType = message.getHeader().getField(fix.MsgType().getField())
  58.  
  59.  
  60. print("Received the following message: '{}'.".format(sessionID.toString()))
  61. symbol = fix.Symbol()
  62. side = fix.Side()
  63. ordType = fix.OrdType() #2:limit, 4:stop limit 8:cross order, B:limit on close, O LSM, Q:Market Limit Market, R:Market to limit
  64. #U: best limit, W: limit if touched
  65. orderQty = fix.OrderQty()
  66. price = fix.price()
  67. clOrdID = fix.ClOrdID()
  68. orderID = fix.OrderID()
  69. execType = fix.ExecType() #0:new, 1:partialFill, 2:fill, 4:cancel: 5:replace 6:pending cancel: 8:rejected D:restarted
  70. lastShares = fix.LastShares() #if exectype is 1(partial fill) or 2(fill) this indicates the number of contracts that just filled
  71. #if MultilegReportingType is 2(leg), the value indicates the number of contracts that just filled on the leg of the spread specified by this mesages instrument component bloack
  72. multiLegReportingType = fix.MultiLegReportingType() #1: outright, 2: single leg of a multi leg security 3:Entire multileg security (summary fill)
  73. leavesQty = fix.LeavesQty()
  74. cumQty = fix.CumQty()
  75. ordStatus = fix.OrdStatus() # 1Partially Filled, 2: Filled
  76. tradeDate = fix.TradeDate() #YYYYMMDD
  77. lastPx = fix.LastPx() #decimal
  78. AvgPx = fix.LastPx() #decimal
  79.  
  80.  
  81.  
  82. message.getField( ordType )
  83. message.getField( symbol )
  84. message.getfield( side )
  85. message.getField( orderQty )
  86. message.getField( price )
  87. message.getField( clOrdID )
  88. message.getField( orderQty )
  89. message.getField( price )
  90. message.getField( orderID )
  91. message.getField( execType )
  92. message.getField( lastShares )
  93. message.getField( multiLegReportingType )
  94. message.getField( leavesQty )
  95. message.getField( cumQty )
  96. message.getField( ordStatus )
  97. message.getField( tradeDate )
  98. message.getField( lastPx )
  99. message.getField( AvgPx )
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. def run(self):
  108. self.onCreate(self.sessionID)
  109. self.onLogon(self.sessionID)
  110. self.toAdmin(self.sessionID)
  111. self.fromAdmin(self.sessionID)
  112. self.fromApp(self.sessionID)
  113.  
  114.  
  115.  
  116. def main(config_file):
  117. try:
  118. settings = fix.SessionSettings( config_file )
  119. print('settings: ',settings)
  120. application = Application()
  121. print('application: ',application)
  122. storeFactory = fix.FileStoreFactory(settings)
  123. print('storeFactory: ',storeFactory)
  124. logFactory = fix.FileLogFactory(settings)
  125. print('logFactory: ',logFactory)
  126. initiator = fix.SocketInitiator(application, storeFactory, settings, logFactory)
  127. print('settings: ', initiator)
  128. initiator.start()
  129.  
  130.  
  131. # while condition == true: do something
  132. #acceptor.stop()
  133.  
  134. application.run()
  135.  
  136.  
  137.  
  138. except fix.ConfigError as e:
  139. print(e)
  140.  
  141.  
  142. if __name__=='__main__':
  143. file = "C:\FIX\client.cfg"
  144. main(file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement