def buy(self, direction, price, quantity, price_type='LMT', contract=None): """ 开仓。 :param str/int direction: 下单方向。多头 - 'long' / 1 ;空头 - 'short' / 2 :param float price: 价格。 :param int quantity: 数量。 :param str/int price_type: 下单价格类型。限价单 - 'lmt' / 1;市价单 - 'mkt' / 2 """ contract = None con = Contract(contract) if contract else self._main_contract self._orders.append( Order(self.datetime, con, PriceType.arg_to_type(price_type), TradeSide.KAI, Direction.arg_to_type(direction), float(price), quantity))
def sell(self, direction, price, quantity, price_type='MKT', contract=None): """ 平仓。 :param str/int direction: 下单方向。多头 - 'long' / 1 ;空头 - 'short' / 2 :param float price: 价格。 :param int quantity: 数量。 :param str/int price_type: 下单价格类型。限价单 - 'lmt' / 1;市价单 - 'mkt' / 2 """ con = Contract(contract) if contract else self._main_contract self._orders.append(Order( self.datetime, con, PriceType.arg_to_type(price_type), TradeSide.PING, Direction.arg_to_type(direction), float(price), quantity ))
if __name__ == '__main__': try: begin_dt, end_dt = None, None pcon = pcontract('IF000.SHFE', '10.Minute') #pcon = stock('600848') # 通过tushare下载股票数据 simulator = ExecuteUnit([pcon, pcon], begin_dt, end_dt) algo = DemoStrategy(simulator) algo = DemoStrategy(simulator) #algo2 = DemoStrategy(simulator) simulator.run() for deal in algo.blotter.deal_positions: # code... print "----------------" print("开仓时间: %s;成交价格: %f;买卖方向: %s;成交量: %d;") % \ (deal.open_datetime, deal.open_price, Direction.type_to_str(deal.direction), deal.quantity) print("平仓时间: %s;成交价格: %f;买卖方向: %s;成交量: %d;盈亏: %f;") % \ (deal.close_datetime, deal.close_price, Direction.type_to_str(deal.direction), deal.quantity, deal.profit()) # 显示回测结果 plotting.plot_result(simulator.data[pcon], algo._indicators, algo.blotter.deal_positions, algo.blotter) #plotting.plot_result(simulator.data[pcon], #algo2._indicators, #algo2.blotter.deal_positions, #algo2.blotter) except Exception, e: