Initial commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
from enum import IntEnum
|
||||
|
||||
|
||||
class ErrCode(IntEnum):
|
||||
# chan err
|
||||
_CHAN_ERR_BEGIN = 0
|
||||
COMMON_ERROR = 1
|
||||
SRC_DATA_NOT_FOUND = 3
|
||||
SRC_DATA_TYPE_ERR = 4
|
||||
PARA_ERROR = 5
|
||||
EXTRA_KLU_ERR = 6
|
||||
SEG_END_VALUE_ERR = 7
|
||||
SEG_EIGEN_ERR = 8
|
||||
BI_ERR = 9
|
||||
COMBINER_ERR = 10
|
||||
PLOT_ERR = 11
|
||||
MODEL_ERROR = 12
|
||||
SEG_LEN_ERR = 13
|
||||
ENV_CONF_ERR = 14
|
||||
UNKNOWN_DB_TYPE = 15
|
||||
FEATURE_ERROR = 16
|
||||
CONFIG_ERROR = 17
|
||||
SRC_DATA_FORMAT_ERROR = 18
|
||||
_CHAN_ERR_END = 99
|
||||
|
||||
# Trade Error
|
||||
_TRADE_ERR_BEGIN = 100
|
||||
SIGNAL_EXISTED = 101
|
||||
RECORD_NOT_EXIST = 102
|
||||
RECORD_ALREADY_OPENED = 103
|
||||
QUOTA_NOT_ENOUGH = 104
|
||||
RECORD_NOT_OPENED = 105
|
||||
TRADE_UNLOCK_FAIL = 106
|
||||
PLACE_ORDER_FAIL = 107
|
||||
LIST_ORDER_FAIL = 108
|
||||
CANDEL_ORDER_FAIL = 109
|
||||
GET_FUTU_PRICE_FAIL = 110
|
||||
GET_FUTU_LOT_SIZE_FAIL = 111
|
||||
OPEN_RECORD_NOT_WATCHING = 112
|
||||
GET_HOLDING_QTY_FAIL = 113
|
||||
RECORD_CLOSED = 114
|
||||
REQUEST_TRADING_DAYS_FAIL = 115
|
||||
COVER_ORDER_ID_NOT_UNIQUE = 116
|
||||
SIGNAL_TRADED = 117
|
||||
_TRADE_ERR_END = 199
|
||||
|
||||
# KL data Error
|
||||
_KL_ERR_BEGIN = 200
|
||||
PRICE_BELOW_ZERO = 201
|
||||
KL_DATA_NOT_ALIGN = 202
|
||||
KL_DATA_INVALID = 203
|
||||
KL_TIME_INCONSISTENT = 204
|
||||
TRADEINFO_TOO_MUCH_ZERO = 205
|
||||
KL_NOT_MONOTONOUS = 206
|
||||
SNAPSHOT_ERR = 207
|
||||
SUSPENSION = 208 # 疑似停牌
|
||||
STOCK_IPO_TOO_LATE = 209
|
||||
NO_DATA = 210
|
||||
STOCK_NOT_ACTIVE = 211
|
||||
STOCK_PRICE_NOT_ACTIVE = 212
|
||||
_KL_ERR_END = 299
|
||||
|
||||
|
||||
class CChanException(Exception):
|
||||
def __init__(self, message, code=ErrCode.COMMON_ERROR):
|
||||
self.errcode = code
|
||||
self.msg = message
|
||||
Exception.__init__(self, message)
|
||||
|
||||
def is_kldata_err(self):
|
||||
return ErrCode._KL_ERR_BEGIN < self.errcode < ErrCode._KL_ERR_END
|
||||
|
||||
def is_chan_err(self):
|
||||
return ErrCode._CHAN_ERR_BEGIN < self.errcode < ErrCode._CHAN_ERR_END
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
def foo():
|
||||
raise CChanException("XXX", ErrCode.CONFIG_ERROR)
|
||||
|
||||
try:
|
||||
foo()
|
||||
except CChanException as e:
|
||||
print(str(e.errcode))
|
||||
# python3.8 结果为: ErrCode.CONFIG_ERROR
|
||||
# python3.11 结果为:17
|
||||
|
||||
print(e.errcode.name, type(e.errcode.name))
|
||||
Reference in New Issue
Block a user