IbHandler.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:IbHandler 作者: muennix 项目源码 文件源码
def adjust_limits(self):
        self.logger.info("adjust_limits: checking midpoint limits")
        current_time = datetime.datetime.today()
        for orderid in self.openorders.keys():
            if self.openorders[orderid].adjust_periodical == True and orderid in self.__MapToExecuteOrderID:
                if (current_time - self.openorders[orderid].last_adjust).total_seconds() > self.limit_adjust_interval*0.9:

                    contract = self.openorders[orderid].contract
                    if (current_time - self.openorders[orderid].placed_date) >= self.max_adjust_time:
                        self.openorders[orderid].ba_offset = 0
                        self.logger.info("adjust_limits: %s setting ba_offset to zero because max_adjust_time as passed",self.openorders[orderid].contract.m_symbol)

                    midpoint = self._calc_midpoint(self.openorders[orderid].bid,self.openorders[orderid].ask,self.openorders[orderid].ba_offset,self.openorders[orderid].action,oderid=orderid)
                    self.logger.debug("midpoint %s", midpoint)
                    if midpoint is not None:

                        order = makeStkOrder(self.openorders[orderid].vollume, self.openorders[orderid].action, self._account, ordertype=self.openorders[orderid].ordertype)
                        order.m_lmtPrice = midpoint

                        exec_orderid = self.__MapToExecuteOrderID[orderid]
                        self.con.placeOrder(exec_orderid,contract,order)
                        self.openorders[orderid].last_adjust = datetime.datetime.today()
                        self.openorders[orderid].limitprice = order.m_lmtPrice
                        self.logger.info("adjust_limits: Updated %s order with id %s to %s (bid: %s / ask: %s)",self.openorders[orderid].contract.m_symbol, orderid, order.m_lmtPrice, self.openorders[orderid].bid, self.openorders[orderid].ask)

        #reschedule the timer
        if len(self.openorders.keys()) > 0:
            self.adjist_limits_thread = Timer(self.limit_adjust_interval, self.adjust_limits, ()).start()
        else:
            self.adjist_limits_thread = None
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号