Ejemplo n.º 1
0
 def get_open_orders(self, sid=None, accountCode='default'):
     self.log.debug(__name__ + '::get_open_orders')
     accountCode = self.validateAccountCode(accountCode)
     if sid == None:
         ans = {}
         for orderId in self.PORTFOLIO.orderStatusBook:
             if self.PORTFOLIO.orderStatusBook[orderId].status in [
                     'PreSubmitted', 'Submitted'
             ]:
                 tp = self.PORTFOLIO.orderStatusBook[orderId].contract
                 security = from_contract_to_security(tp)
                 security = search_security_in_Qdata(
                     self.qData, security, self.logLevel)
                 if security not in ans:
                     ans[security] = [
                         self.PORTFOLIO.orderStatusBook[orderId]
                     ]
                 else:
                     ans[security].append(
                         self.PORTFOLIO.orderStatusBook[orderId])
         return ans
     else:
         ans = []
         for orderId in self.PORTFOLIO.orderStatusBook:
             if self.PORTFOLIO.orderStatusBook[orderId].status in [
                     'PreSubmitted', 'Submitted'
             ]:
                 tp = self.PORTFOLIO.orderStatusBook[orderId].contract
                 security = from_contract_to_security(tp)
                 security = search_security_in_Qdata(
                     self.qData, security, self.logLevel)
                 if same_security(sid, security):
                     ans.append(self.PORTFOLIO.orderStatusBook[orderId])
         return ans
Ejemplo n.º 2
0
 def count_positions(self, a_security, accountCode='default'):
     self.log.debug(__name__ + '::count_positions')
     accountCode = self.validateAccountCode(accountCode)
     for sec in self.PORTFOLIO.positions:
         if same_security(sec, a_security):
             return self.PORTFOLIO.positions[sec].amount
     return 0
Ejemplo n.º 3
0
 def count_open_orders(self, security='All', accountCode='default'):
     self.log.debug(__name__ + '::count_open_orders')
     accountCode = self.validateAccountCode(accountCode)
     count = 0
     for orderId in self.PORTFOLIO.orderStatusBook:
         if self.PORTFOLIO.orderStatusBook[orderId].status not in [
                 'Filled', 'Cancelled', 'Inactive'
         ]:
             if security == 'All':
                 count += self.PORTFOLIO.orderStatusBook[orderId].amount
             else:
                 tp = self.PORTFOLIO.orderStatusBook[orderId].contract
                 tp = from_contract_to_security(tp)
                 if same_security(tp, security):
                     count += self.PORTFOLIO.orderStatusBook[orderId].amount
     return count
Ejemplo n.º 4
0
 def close_all_positions_except(self, a_security, accountCode='default'):
     self.log.debug(__name__ + '::close_all_positions_except:' +
                    str(a_security))
     accountCode = self.validateAccountCode(accountCode)
     tp = self.PORTFOLIO.positions.keys()
     orderIdList = []
     for security in tp:
         if same_security(a_security, security):
             pass
         else:
             orderId = self.order_target(security,
                                         0,
                                         accountCode=accountCode)
             orderIdList.append(orderId)
     for orderId in orderIdList:
         self.order_status_monitor(orderId, 'Filled')
Ejemplo n.º 5
0
 def build_security_in_positions_old(self,
                                     a_security,
                                     accountCode='default'):
     self.log.notset(__name__ + '::_build_security_in_positions')
     accountCode = self.validateAccountCode(accountCode)
     if self.PORTFOLIO.positions == {}:
         self.PORTFOLIO.positions[a_security] = PositionClass()
         self.log.notset(__name__ + '::_build_security_in_positions: Empty,\
         add a new position ' + str(a_security))
         return
     else:
         # if found, then do nothing
         # else: add it into positions.
         for sec in self.PORTFOLIO.positions:
             if same_security(sec, a_security):
                 return
         self.PORTFOLIO.positions[a_security] = PositionClass()
         self.log.notset(__name__ + '::_build_security_in_positions: Empty,\
         add a new position ' + str(a_security))
         return
Ejemplo n.º 6
0
 def search_security_in_positions_old(self,
                                      a_security,
                                      accountCode='default'):
     self.log.notset(__name__ + '::search_security_in_positions')
     # if positions is empty, add new security, then return
     accountCode = self.validateAccountCode(accountCode)
     if self.PORTFOLIO.positions == {}:
         self.PORTFOLIO.positions[a_security] = PositionClass()
         self.log.notset(
             __name__ +
             '::search_security_in_positions: Empty, add a new position ' +
             str(a_security))
         return a_security
     # search security in positions, if found only one, return,
     foundFlag = 0
     found = {}
     for ct in self.PORTFOLIO.positions:
         if same_security(ct, a_security):
             foundFlag = foundFlag + 1
             found[foundFlag] = ct
     if foundFlag == 1:
         return found[1]
     elif foundFlag == 0:
         # a_security is not in positions,  add it in it
         self.PORTFOLIO.positions[a_security] = PositionClass()
         self.log.notset(
             __name__ +
             '::search_security_in_positions: cannot find one, add a new position '
             + str(a_security))
         return a_security
     else:
         self.log.error(
             __name__ +
             '::search_security_in_positions: EXIT, found too many securities'
         )
         for ct in found:
             self.log.error(str(found[ct]))
         exit()