Просмотр исходного кода

night works - added new package to handle option engine stuff

esurfer 9 лет назад
Родитель
Сommit
bf89f35f71
4 измененных файлов с 59 добавлено и 38 удалено
  1. 11 36
      src/comms/ibc/gw_ex2.py
  2. 3 2
      src/comms/tws_protocol_helper.py
  3. 0 0
      src/rethink/__init__.py
  4. 45 0
      src/rethink/analytics_engine.py

+ 11 - 36
src/comms/ibc/gw_ex2.py

@@ -317,26 +317,7 @@ class OCConsumer(Subscriber, AbstractGatewayListener):
         AbstractGatewayListener.__init__(self, name)
         
     
-    def get_id_contracts(self, db=False):
-        if db:
-            try:
-                id_contracts = json.loads(self.rs.get(self.subscription_key))
-                
-                def utf2asc(x):
-                    return x if isinstance(x, unicode) else x
-                
-                return map(lambda x: (x[0], ContractHelper.kvstring2contract(utf2asc(x[1]))), id_contracts)
-            except TypeError:
-                logging.error('SubscriptionManager:get_id_contracts. Exception when trying to get id_contracts from redis ***')
-                return None
-        else:
-            return map(lambda x: (x[0], x[1]), 
-                                list(self.idContractMap['id_contract'].iteritems()))
 
-    # return id:contract_strings
-    def get_id_kvs_contracts(self, db):
-        return map(lambda x:(x[0], ContractHelper.contract2kvstring(x[1])), self.get_id_contracts(db))    
-    
     def dump(self):
             #print ', '.join('[%s:%s]' % (k, v['ticker_id'])) 
         logging.debug('OCConsumer-symbols: [Key: Ticker ID: # options objects]: ---->\n%s' % (',\n'.join('[%s:%d:%d]' % (k, v['ticker_id'],len(v['syms'])) for k,v in self.symbols.iteritems())))
@@ -379,24 +360,18 @@ class OCConsumer(Subscriber, AbstractGatewayListener):
 
 
     def get_id_contracts(self, message_value):
-        if db:
-            try:
-                id_contracts = json.loads(self.rs.get(self.subscription_key))
-                
-                def utf2asc(x):
-                    return x if isinstance(x, unicode) else x
-                
-                return map(lambda x: (x[0], ContractHelper.kvstring2contract(utf2asc(x[1]))), id_contracts)
-            except TypeError:
-                logging.error('SubscriptionManager:get_id_contracts. Exception when trying to get id_contracts from redis ***')
-                return None
-        else:
-            return map(lambda x: (x[0], x[1]), 
-                                list(self.idContractMap['id_contract'].iteritems()))
+        try:
+            id_contracts = json.loads(message_value)
+            
+            def utf2asc(x):
+                return x if isinstance(x, unicode) else x
+            
+            return map(lambda x: (x[0], ContractHelper.kvstring2contract(utf2asc(x[1]))), id_contracts)
+        except TypeError:
+            logging.error('SubscriptionManager:get_id_contracts. Exception when trying to get id_contracts from redis ***')
+            return None
+
 
-    # return id:contract_strings
-    def get_id_kvs_contracts(self, ):
-        return map(lambda x:(x[0], ContractHelper.contract2kvstring(x[1])), self.get_id_contracts(db))
     
     
     

+ 3 - 2
src/comms/tws_protocol_helper.py

@@ -20,8 +20,9 @@ class TWS_Protocol:
     gatewayMethods = ('gw_req_subscriptions',)
     gatewayEvents = ('gw_subscriptions', 'gw_subscription_changed')
     
-    oceMethods = ()
-    oceEvents = ('optionAnalytics','optionsSnapshot')
+    aeMethods = ('ae_req_greeks')
+    aeEvents = ('ae_req_ack', 'ae_greeks','ae_greeks_snapshot')
+    
     
     
     

+ 0 - 0
src/rethink/__init__.py


+ 45 - 0
src/rethink/analytics_engine.py

@@ -0,0 +1,45 @@
+import logging
+import json
+from comms.ibc.base_client_messaging import AbstractGatewayListener
+
+
+
+
+
+class AnalyticsEngine(AbstractGatewayListener):
+    
+    
+    def __init__(self, name, kwargs):
+        pass
+    
+    
+    def ae_req_greeks(self):
+        pass
+    
+    
+    def gw_subscription_changed(self, event, message_value):
+        logging.info('MessageListener:%s. val->[%s]' % (event, message_value))
+ 
+ 
+            
+    def gw_subscriptions(self, event, message_value):
+        logging.info('MessageListener:%s. val->[%s]' % (event, message_value))
+        items = json.loads(message_value)
+        
+        
+    def tickPrice(self, event, message_value):   
+        
+        #'value': '{"tickerId": 0, "size": 3, "field": 3}'
+        items = json.loads(message_value)
+        tid = items['tickerId']
+
+        try:
+            contract_key = self.tickers[tid]
+            #print contract_key
+            map(lambda e: e.set_tick_value(items['field'], items['price']), self.symbols[contract_key]['syms'])
+        except KeyError:
+            pass
+
+ 
+    def error(self, event, message_value):
+        logging.info('MessageListener:%s. val->[%s]' % (event, message_value))