示例#1
0
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
示例#2
0
                                                   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(