Esempio n. 1
0
 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)
Esempio n. 2
0
 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))
Esempio n. 3
0
 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
Esempio n. 4
0
 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)
Esempio n. 5
0
 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