Пример #1
0
    def pack_req(cls, order_type, code, price, order_id, adjust_limit,
                 sec_mkt_str, trd_env, acc_id, trd_mkt, conn_id):

        from futu.common.pb.Trd_GetMaxTrdQtys_pb2 import Request
        req = Request()
        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        _, req.c2s.orderType = OrderType.to_number(order_type)
        req.c2s.code = code
        req.c2s.price = price
        if order_id is not None:
            req.c2s.orderID = int(order_id)
        if adjust_limit == 0:
            req.c2s.adjustPrice = False
        else:
            req.c2s.adjustPrice = True
            req.c2s.adjustSideAndLimit = adjust_limit

        r, proto_qot_mkt = Market.to_number(sec_mkt_str)
        if not r:
            proto_qot_mkt = Qot_Common_pb2.QotMarket_Unknown

        proto_trd_sec_mkt = QOT_MARKET_TO_TRD_SEC_MARKET_MAP.get(
            proto_qot_mkt, Trd_Common_pb2.TrdSecMarket_Unknown)
        req.c2s.secMarket = proto_trd_sec_mkt

        return pack_pb_req(req, ProtoId.Trd_GetMaxTrdQtys, conn_id)
Пример #2
0
    def pack_req(cls, acc_id_list, conn_id):
        from futu.common.pb.Trd_SubAccPush_pb2 import Request
        req = Request()
        for x in acc_id_list:
            req.c2s.accIDList.append(x)

        return pack_pb_req(req, ProtoId.Trd_SubAccPush, conn_id)
Пример #3
0
    def pack_req(cls, trd_side, order_type, price, qty, code, adjust_limit,
                 trd_env, sec_mkt_str, acc_id, trd_mkt, conn_id, remark):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_PlaceOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        req.c2s.trdSide = TRD_SIDE_MAP[trd_side]
        req.c2s.orderType = ORDER_TYPE_MAP[order_type]
        req.c2s.code = code
        req.c2s.qty = qty
        req.c2s.price = price
        req.c2s.adjustPrice = adjust_limit != 0
        req.c2s.adjustSideAndLimit = adjust_limit
        if remark is not None:
            req.c2s.remark = remark
        proto_qot_mkt = MKT_MAP.get(sec_mkt_str,
                                    Qot_Common_pb2.QotMarket_Unknown)
        proto_trd_sec_mkt = QOT_MARKET_TO_TRD_SEC_MARKET_MAP.get(
            proto_qot_mkt, Trd_Common_pb2.TrdSecMarket_Unknown)
        req.c2s.secMarket = proto_trd_sec_mkt

        return pack_pb_req(req, ProtoId.Trd_PlaceOrder, conn_id, serial_no)
Пример #4
0
    def pack_req(cls, modify_order_op, order_id, price, qty, adjust_limit,
                 trd_env, acc_id, trd_mkt, conn_id, aux_price, trail_type,
                 trail_value, trail_spread):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_ModifyOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        req.c2s.orderID = int(order_id)
        _, req.c2s.modifyOrderOp = ModifyOrderOp.to_number(modify_order_op)
        req.c2s.forAll = False

        if modify_order_op == ModifyOrderOp.NORMAL:
            req.c2s.qty = qty
            req.c2s.price = price
            req.c2s.adjustPrice = adjust_limit != 0
            req.c2s.adjustSideAndLimit = adjust_limit
            if aux_price is not None:
                req.c2s.auxPrice = float(aux_price)
            if trail_type is not None:
                _, req.c2s.trailType = TrailType.to_number(trail_type)
            if trail_value is not None:
                req.c2s.trailValue = float(trail_value)
            if trail_spread is not None:
                req.c2s.trailSpread = float(trail_spread)

        return pack_pb_req(req, ProtoId.Trd_ModifyOrder, conn_id, serial_no)
Пример #5
0
    def pack_req(cls, order_type, code, price, order_id, adjust_limit,
                 sec_mkt_str, trd_env, acc_id, trd_mkt, conn_id):

        from futu.common.pb.Trd_GetMaxTrdQtys_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        req.c2s.orderType = ORDER_TYPE_MAP[order_type]
        req.c2s.code = code
        req.c2s.price = price
        if order_id is not None:
            req.c2s.orderID = int(order_id)
        if adjust_limit == 0:
            req.c2s.adjustPrice = False
        else:
            req.c2s.adjustPrice = True
            req.c2s.adjustSideAndLimit = adjust_limit

        proto_qot_mkt = MKT_MAP.get(sec_mkt_str,
                                    Qot_Common_pb2.QotMarket_Unknown)
        proto_trd_sec_mkt = QOT_MARKET_TO_TRD_SEC_MARKET_MAP.get(
            proto_qot_mkt, Trd_Common_pb2.TrdSecMarket_Unknown)
        req.c2s.secMarket = proto_trd_sec_mkt

        return pack_pb_req(req, ProtoId.Trd_GetAccTradingInfo, conn_id)
Пример #6
0
    def pack_req(cls, order_id, status_filter_list, code, start, end, trd_env,
                 acc_id, trd_mkt, conn_id, refresh_cache):
        """Convert from user request for trading days to PLS request"""
        from futu.common.pb.Trd_GetOrderList_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        if code:
            req.c2s.filterConditions.codeList.append(code)
        if order_id:
            req.c2s.filterConditions.idList.append(int(order_id))

        if start:
            req.c2s.filterConditions.beginTime = start
        if end:
            req.c2s.filterConditions.endTime = end
        if refresh_cache:
            req.c2s.refreshCache = refresh_cache

        if len(status_filter_list):
            for order_status in status_filter_list:
                req.c2s.filterStatusList.append(ORDER_STATUS_MAP[order_status])

        return pack_pb_req(req, ProtoId.Trd_GetOrderList, conn_id)
Пример #7
0
    def pack_req(cls, code_list, conn_id, acc_id, trd_mkt):
        """Convert from user request for place order to PLS request"""
        stock_tuple_list = []
        failure_tuple_list = []
        for stock_str in code_list:
            ret_code, content = split_stock_str(stock_str)
            if ret_code != RET_OK:
                error_str = content
                failure_tuple_list.append((ret_code, error_str))
                continue

            market_code, stock_code = content
            stock_tuple_list.append((market_code, stock_code))

        if len(failure_tuple_list) > 0:
            error_str = '\n'.join([x[1] for x in failure_tuple_list])
            return RET_ERROR, error_str, None

        from futu.common.pb.Trd_GetMarginRatio_pb2 import Request
        req = Request()

        req.c2s.header.trdEnv = 1
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        for market, code in stock_tuple_list:
            stock_inst = req.c2s.securityList.add()
            stock_inst.market = market
            stock_inst.code = code

        return pack_pb_req(req, ProtoId.Trd_GetMarginRatio, conn_id)
Пример #8
0
    def pack_req(cls, user_id, conn_id, trd_category, need_general_sec_acc):
        from futu.common.pb.Trd_GetAccList_pb2 import Request

        req = Request()
        req.c2s.userID = user_id
        _, req.c2s.trdCategory = TrdCategory.to_number(trd_category)
        req.c2s.needGeneralSecAccount = need_general_sec_acc
        return pack_pb_req(req, ProtoId.Trd_GetAccList, conn_id)
Пример #9
0
    def pack_req(cls, acc_id, trd_market, trd_env, conn_id):
        from futu.common.pb.Trd_GetFunds_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_market]

        return pack_pb_req(req, ProtoId.Trd_GetFunds, conn_id)
Пример #10
0
    def pack_req(cls, is_unlock, password_md5, conn_id):
        """Convert from user request for trading days to PLS request"""
        from futu.common.pb.Trd_UnlockTrade_pb2 import Request
        req = Request()
        req.c2s.unlock = is_unlock
        req.c2s.pwdMD5 = password_md5

        return pack_pb_req(req, ProtoId.Trd_UnlockTrade, conn_id)
Пример #11
0
 def pack_req(cls, acc_id, trd_market, trd_env, conn_id, refresh_cache, currency):
     from futu.common.pb.Trd_GetFunds_pb2 import Request
     req = Request()
     _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
     req.c2s.header.accID = acc_id
     _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_market)
     if refresh_cache:
         req.c2s.refreshCache = refresh_cache
     req.c2s.currency = Currency.to_number(currency)[1]
     return pack_pb_req(req, ProtoId.Trd_GetFunds, conn_id)
Пример #12
0
    def pack_req(cls, code, trd_env, acc_id, trd_mkt, conn_id):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_GetOrderFillList_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        if code:
            req.c2s.filterConditions.codeList.append(code)

        return pack_pb_req(req, ProtoId.Trd_GetOrderFillList, conn_id)
Пример #13
0
    def pack_req(cls, trd_side, order_type, price, qty, code, adjust_limit,
                 trd_env, sec_mkt_str, acc_id, trd_mkt, conn_id, remark,
                 time_in_force, fill_outside_rth, aux_price, trail_type,
                 trail_value, trail_spread):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_PlaceOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        _, req.c2s.trdSide = TrdSide.to_number(trd_side)
        _, req.c2s.orderType = OrderType.to_number(order_type)
        req.c2s.code = code
        req.c2s.qty = qty
        req.c2s.price = price
        req.c2s.adjustPrice = adjust_limit != 0
        req.c2s.adjustSideAndLimit = adjust_limit
        if remark is not None:
            req.c2s.remark = remark
        r, proto_qot_mkt = Market.to_number(sec_mkt_str)
        if not r:
            proto_qot_mkt = Qot_Common_pb2.QotMarket_Unknown
        proto_trd_sec_mkt = QOT_MARKET_TO_TRD_SEC_MARKET_MAP.get(
            proto_qot_mkt, Trd_Common_pb2.TrdSecMarket_Unknown)
        req.c2s.secMarket = proto_trd_sec_mkt
        ret, val = TimeInForce.to_number(time_in_force)
        if not ret:
            return RET_ERROR, val, None
        else:
            req.c2s.timeInForce = val
        if aux_price is not None:
            req.c2s.auxPrice = aux_price
        if trail_type is not None:
            ret, val = TrailType.to_number(trail_type)
            if not ret:
                return RET_ERROR, val, None
            else:
                req.c2s.trailType = val
        if trail_value is not None:
            req.c2s.trailValue = trail_value
        if trail_spread is not None:
            req.c2s.trailSpread = trail_spread

        req.c2s.fillOutsideRTH = fill_outside_rth

        return pack_pb_req(req, ProtoId.Trd_PlaceOrder, conn_id, serial_no)
Пример #14
0
    def pack_req(cls, code, start, end, trd_env, acc_id, trd_mkt, conn_id):

        from futu.common.pb.Trd_GetHistoryOrderFillList_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        if code:
            req.c2s.filterConditions.codeList.append(code)

        req.c2s.filterConditions.beginTime = start
        req.c2s.filterConditions.endTime = end

        return pack_pb_req(req, ProtoId.Trd_GetHistoryOrderFillList, conn_id)
Пример #15
0
    def pack_req(cls, code, trd_env, acc_id, trd_mkt, conn_id, refresh_cache):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_GetOrderFillList_pb2 import Request
        req = Request()
        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        if code:
            req.c2s.filterConditions.codeList.append(code)

        if refresh_cache:
            req.c2s.refreshCache = refresh_cache

        return pack_pb_req(req, ProtoId.Trd_GetOrderFillList, conn_id)
Пример #16
0
    def pack_req(cls, trd_env, acc_id, trd_mkt, conn_id):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_ModifyOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        req.c2s.orderID = 0
        req.c2s.modifyOrderOp = MODIFY_ORDER_OP_MAP[ModifyOrderOp.CANCEL]
        req.c2s.forAll = True
        return pack_pb_req(req, ProtoId.Trd_ModifyOrder, conn_id, serial_no)
Пример #17
0
    def pack_req(cls, trd_env, acc_id, trd_mkt, conn_id):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_ModifyOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        req.c2s.orderID = 0
        req.c2s.modifyOrderOp = Trd_Common_pb2.ModifyOrderOp_Cancel
        req.c2s.forAll = True
        return pack_pb_req(req, ProtoId.Trd_ModifyOrder, conn_id, serial_no)
Пример #18
0
    def pack_req(cls, code, pl_ratio_min, pl_ratio_max, trd_env, acc_id,
                 trd_mkt, conn_id):
        """Convert from user request for trading days to PLS request"""
        from futu.common.pb.Trd_GetPositionList_pb2 import Request
        req = Request()
        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]
        if code:
            req.c2s.filterConditions.codeList.append(code)
        if pl_ratio_min is not None:
            req.c2s.filterPLRatioMin = float(pl_ratio_min) / 100.0
        if pl_ratio_max is not None:
            req.c2s.filterPLRatioMax = float(pl_ratio_max) / 100.0

        return pack_pb_req(req, ProtoId.Trd_GetPositionList, conn_id)
Пример #19
0
    def pack_req(cls, code, pl_ratio_min, pl_ratio_max, trd_env, acc_id,
                 trd_mkt, conn_id, refresh_cache):
        """Convert from user request for trading days to PLS request"""
        from futu.common.pb.Trd_GetPositionList_pb2 import Request
        req = Request()
        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)
        if code:
            req.c2s.filterConditions.codeList.append(code)
        if pl_ratio_min is not None:
            req.c2s.filterPLRatioMin = float(pl_ratio_min) / 100.0
        if pl_ratio_max is not None:
            req.c2s.filterPLRatioMax = float(pl_ratio_max) / 100.0
        if refresh_cache:
            req.c2s.refreshCache = refresh_cache

        return pack_pb_req(req, ProtoId.Trd_GetPositionList, conn_id)
Пример #20
0
    def pack_req(cls, status_filter_list, code, start, end, trd_env, acc_id,
                 trd_mkt, conn_id):

        from futu.common.pb.Trd_GetHistoryOrderList_pb2 import Request
        req = Request()
        _, req.c2s.header.trdEnv = TrdEnv.to_number(trd_env)
        req.c2s.header.accID = acc_id
        _, req.c2s.header.trdMarket = TrdMarket.to_number(trd_mkt)

        if code:
            req.c2s.filterConditions.codeList.append(code)

        req.c2s.filterConditions.beginTime = start
        req.c2s.filterConditions.endTime = end

        if status_filter_list:
            for order_status in status_filter_list:
                r, v = OrderStatus.to_number(order_status)
                if r:
                    req.c2s.filterStatusList.append(v)

        return pack_pb_req(req, ProtoId.Trd_GetHistoryOrderList, conn_id)
Пример #21
0
    def pack_req(cls, modify_order_op, order_id, price, qty, adjust_limit,
                 trd_env, acc_id, trd_mkt, conn_id):
        """Convert from user request for place order to PLS request"""
        from futu.common.pb.Trd_ModifyOrder_pb2 import Request
        req = Request()
        serial_no = get_unique_id32()
        req.c2s.packetID.serialNo = serial_no
        req.c2s.packetID.connID = conn_id

        req.c2s.header.trdEnv = TRD_ENV_MAP[trd_env]
        req.c2s.header.accID = acc_id
        req.c2s.header.trdMarket = TRD_MKT_MAP[trd_mkt]

        req.c2s.orderID = int(order_id)
        req.c2s.modifyOrderOp = MODIFY_ORDER_OP_MAP[modify_order_op]
        req.c2s.forAll = False

        if modify_order_op == ModifyOrderOp.NORMAL:
            req.c2s.qty = qty
            req.c2s.price = price
            req.c2s.adjustPrice = adjust_limit != 0
            req.c2s.adjustSideAndLimit = adjust_limit

        return pack_pb_req(req, ProtoId.Trd_ModifyOrder, conn_id, serial_no)
Пример #22
0
    def pack_req(cls, user_id, conn_id):
        from futu.common.pb.Trd_GetAccList_pb2 import Request

        req = Request()
        req.c2s.userID = user_id
        return pack_pb_req(req, ProtoId.Trd_GetAccList, conn_id)