def trading_B002(runtime): """ price_arr = np.array([[-0.15,-0.13,-0.11,-0.1,-0.07,-0.05], [ 0.05, 0.07, 0.1, 0.11, 0.13, 0.15]]) volume_arr = np.array([[10,6,2,2,4,6], [6,4,2,2,6,10]]) """ price_arr = np.array([[-0.07, -0.05], [0.05, 0.07]]) volume_arr = np.array([[10, 12], [12, 10]]) while True: snapshot = getattr(runtime['snapshots'], 'B002.PSE') last_price = snapshot.last_price bid1 = snapshot.bid_levels[0].price ask1 = snapshot.ask_levels[0].price if runtime['net_B002.PSE'] == 1: buy_trm = dict(zip(price_arr[0, :] + bid1 - 0.02, volume_arr[0, :])) sell_trm = dict( zip(price_arr[1, :] + bid1 - 0.02, volume_arr[1, :])) elif runtime['net_B002.PSE'] == -1: buy_trm = dict(zip(price_arr[0, :] + ask1 + 0.02, volume_arr[0, :])) sell_trm = dict( zip(price_arr[1, :] + bid1 + 0.02, volume_arr[1, :])) else: buy_trm = dict(zip(price_arr[0, :] + last_price, volume_arr[0, :])) sell_trm = dict(zip(price_arr[1, :] + last_price, volume_arr[1, :])) curr_buy_order_info, curr_sell_order_info = func_order_info2level( runtime['order_info'].info['B002.PSE']) #//计算订单更新 order_to_cancel = [] buy_new_orders, tmp = func_calc_order_delta(curr_buy_order_info, buy_trm) order_to_cancel += tmp sell_new_orders, tmp = func_calc_order_delta(curr_sell_order_info, sell_trm) order_to_cancel += tmp buy_new_orders = sorted(buy_new_orders, key=lambda x: x[0], reverse=True) sell_new_orders = sorted(sell_new_orders, key=lambda x: x[0], reverse=True) #//计算下单 maxLen = max(len(buy_new_orders), len(sell_new_orders)) for i in range(maxLen): if runtime['isOpen_B002.PSE']: #//开平仓控制 try: buy_new_order = buy_new_orders[i] broker_stub.new_order( api.TraderRequest_new_order('B002.PSE', 0, 0, buy_new_order[1], buy_new_order[0])) except: pass try: sell_new_order = sell_new_orders[i] broker_stub.new_order( api.TraderRequest_new_order('B002.PSE', 1, 1, sell_new_order[1], sell_new_order[0])) except: pass else: try: buy_new_order = buy_new_orders[i] broker_stub.new_order( api.TraderRequest_new_order('B002.PSE', 0, 1, buy_new_order[1], buy_new_order[0])) except: pass try: sell_new_order = sell_new_orders[i] broker_stub.new_order( api.TraderRequest_new_order('B002.PSE', 1, 0, sell_new_order[1], sell_new_order[0])) except: pass #//进行撤单 for order_id in order_to_cancel: broker_stub.cancel_order(api.TraderRequest_cancel_order(order_id)) print('B002.PSE完成一次操作循环!') runtime['loopCount_B002.PSE'] += 1
request_type=0, order_id=0, side=0, symbol='A000.PSE', volume=1, is_market=True, pos_type=1) TraderRequest_new_order_test = proto_wrapper.TraderRequest_new_order( "A000.PSE", side=0, pos_type=0, volume=1, is_market=False, price=90) response_new_order = broker_stub.new_order(TraderRequest_new_order_test) print(response_new_order) print("##########################################") """ Demo: 撤单 """ TraderRequest_cancel_order = proto_wrapper.TraderRequest_cancel_order( order_id=tuple(response_new_order.orders.orders.keys())[0]) response_cancel_order = broker_stub.cancel_order(TraderRequest_cancel_order) print(response_cancel_order) print("##########################################") """ 获取增量账户信息和完整的账户信息 """ TraderRequest_get_trader_incremental = proto_wrapper.TraderRequest_get_trader_inc( ) response_get_trader_incremental = broker_stub.get_trader( TraderRequest_get_trader_incremental) print(response_get_trader_incremental) print("##########################################") TraderRequest_get_trader_full = proto_wrapper.TraderRequest_get_trader_full() response_get_trader_full = broker_stub.get_trader(