def short(self, symbol, volume=1, price=None, stop=False, limit=False, strategy=None, listener=None): if self.__backtesting: time_ = self.__data[symbol][SymbolsListener.get_by_id( listener).get_time_frame()]['time'][0] else: time_ = time.time() position = self.__current_positions.get(symbol, None) if position and position.type > 0: order = Order(symbol, ORDER_TYPE_SELL, strategy, listener) order.volume_initial = position.volume order.time_setup = int(time_) order.time_setup_msc = int((time_ - int(time_)) * (10**6)) # TODO 这里应该要支持事务性的下单操作 self.send_order(order) if volume == 0: return order = Order(symbol, ORDER_TYPE_SELL, strategy, listener) order.volume_initial = volume order.time_setup = int(time_) order.time_setup_msc = int((time_ - int(time_)) * (10**6)) return self.send_order(order)
def cover(self, symbol, volume=1, price=None, stop=False, limit=False, strategy=None, listener=None): if volume == 0: return position = self.__current_positions.get(symbol,None) order = Order(symbol, ORDER_TYPE_BUY, strategy, listener) if not position or position.type >= 0: return#XXX可能的返回值 order.volume_initial = volume if self.__backtesting: time_ = self.__datas[symbol][SymbolsListener.get_by_id(listener).get_time_frame()]['time'][0] else: time_ = time.time() order.time_setup = int(time_) order.time_setup_msc = int((time_ - int(time_))*(10**6)) return(self.send_order(order))
def __send_order_to_broker(self,order): if self.__backtesting: time_frame = SymbolsListener.get_by_id(order.handle).get_time_frame() time_ = self.__datas[order.symbol][time_frame]["time"][0] order.time_done = int(time_) order.time_done_msc = int((time_-int(time_))*(10**6)) order.volume_current = order.volume_initial deal = Deal(order.symbol, order.strategy, order.handle) deal.volume = order.volume_current deal.time = order.time_done deal.time_msc = order.time_done_msc deal.type = 1-((order.type&1)<<1) #参见ENUM_ORDER_TYPE和ENUM_DEAL_TYPE的定义 deal.price = self.__datas[order.symbol][time_frame]["close"][0] #TODO加入手续费等 order.deal = deal.get_id() deal.order = order.get_id() return([deal],{}) #TODO 市价单成交 else: pass
def cover(self, symbol, volume=1, price=None, stop=False, limit=False, strategy=None, listener=None): if volume == 0: return position = self.__current_positions.get(symbol, None) order = Order(symbol, ORDER_TYPE_BUY, strategy, listener) if not position or position.type >= 0: return # XXX可能的返回值 order.volume_initial = volume if self.__backtesting: time_ = self.__data[symbol][SymbolsListener.get_by_id( listener).get_time_frame()]['time'][0] else: time_ = time.time() order.time_setup = int(time_) order.time_setup_msc = int((time_ - int(time_)) * (10**6)) return self.send_order(order)
def __send_order_to_broker(self, order): if self.__backtesting: time_frame = SymbolsListener.get_by_id( order.handle).get_time_frame() time_ = self.__data[order.symbol][time_frame]["time"][ 0] + time_frame_to_seconds(time_frame) order.time_done = int(time_) order.time_done_msc = int((time_ - int(time_)) * (10**6)) order.volume_current = order.volume_initial deal = Deal(order.symbol, order.strategy, order.handle) deal.volume = order.volume_current deal.time = order.time_done deal.time_msc = order.time_done_msc deal.type = 1 - ( (order.type & 1) << 1) # 参见ENUM_ORDER_TYPE和ENUM_DEAL_TYPE的定义 deal.price = self.__data[order.symbol][time_frame]["close"][0] # TODO加入手续费等 order.deal = deal.get_id() deal.order = order.get_id() return [deal], {} # TODO 市价单成交 else: pass