

class Direction():
    """
    Direction of order/trade/position.
    '1'	买入
    '2'	卖出
    '3'	债券买入
    '4'	债券卖出
    '5'	融资(正)回购
    '6'	融券(逆)回购
    '9'	配股（配债）认购
    'A'	债转股
    'B'	债回售
    'C'	申购	股票(新股/增发)/可转债申购
    'D'	基金认购	ETF/LOF
    'G'	转托管	深圳转托管席位/上海LOF场内转场外
    'P'	ETF申购
    'Q'	ETF赎回
    'R'	行权认购	股票期权
    'S'	行权认沽	股票期权
    'T'	提交质押
    'U'	转回质押
    'V'	买入开仓
    'W'	卖出平仓
    'X'	卖出开仓
    'Y'	买入平仓
    'm'	基金分拆
    'n'	基金合并
    'p'	开基申购	LOF
    'q'	开基赎回	LOF
    'r'	债券认购	场内债券分销买入
    '15'	正回购	协议回购
    '16'	逆回购	协议回购
    '17'	正回购到期	协议回购
    '18'	逆回购到期	协议回购
    '26'	正回购换券	协议回购，暂不支持
    '27'	逆回购换券	协议回购，暂不支持
    '28'	正回购被换券	协议回购，暂不支持
    '29'	逆回购被换券	协议回购，暂不支持
    '30'	正回购续做	协议回购
    '31'	逆回购续做	协议回购
    '35'	正回购解除质押	协议回购，仅上交所支持
    '36'	逆回购解除质押	协议回购，仅上交所支持
    '37'	正回购提前到期	协议回购
    '38'	逆回购提前到期	协议回购
    '39'	正回购延期购回	协议回购，仅深交所支持
    '40'	逆回购延期购回	协议回购，仅深交所支持
    '67'	标的券锁定	股票期权
    '68'	标的券解锁	股票期权
    '['	融券卖出	融资融券
    ']'	买券还券	融资融券
    '`'	直接还款	融资融券
    '~'	直接还券	融资融券
    '{'	融资买入	融资融券
    '}'	卖券还款	融资融券
    '('	担保券交存	融资融券
    ')'	担保券提取	融资融券
    """
    BUY = '1'
    SELL = '2'


class OrderType():
    """
    '0'	限价;限价盘(零股)(港股通)
    '1'	任意价(期货);市价剩余转限价（上交所股票期权）
    '2'	竞价限价盘(港股通);市价剩余撤消（上交所股票期权）
    '3'	FOK限价（上交所股票期权）
    '4'	增强限价盘(港股通);FOK市价（上交所股票期权）
    'a'	五档即成剩撤（上交所市价）
    'b'	五档即成剩转（上交所市价）
    'A'	五档即成剩撤（深交所市价）
    'C'	即成剩撤（深交所市价）
    'D'	对手方最优（深交所市价，上交所科创板市价）
    'E'	本方最优（深交所市价，上交所科创板市价）
    'F'	全额成或撤（深交所市价）
    'H'	意向申报
    'I'	定价申报
    'J'	成交申报/约定成交申报	上交所为成交申报，深交所为约定成交申报
    'K'	点击成交申报
    'P'	收盘价定价申报
    'Q'	日均价定价申报
    'R'	现金申赎	深交所RTGS模式使用
    'S'	实物申赎	深交所RTGS模式使用
    'c'	无条件确定报价申报
    'd'	最优价市价成交申报	暂不支持
    'e'	可转确定报价成交申报	暂不支持
    'f'	指定对手方报价申报
    'g'	成交申报
    'h'	最优价限价成交申报	暂不支持
    """


class Exchange():
    """
    Exchange.
    """
    SSE = "1"    # 上交所 Shanghai Stock Exchange
    SZSE = "2"   # 深交所 Shenzhen Stock Exchange
    SHFE = "3"   # 上期所 Shanghai Futures Exchange
    CZCE = "4"   # 郑商所 Zhengzhou Commodity Exchange
    CFFEX = "7"  # 中金所 China Financial Futures Exchange
    DCE = "9"    # 大商所 Dalian Commodity Exchange
    INE = "k"    # 能源期货交易所 Shanghai International Energy Exchange
    GZEX = "j"   # 股转市场
    HSHGT = "n"  # 港股通（沪）
    HSZGT = "o"  # 港股通（深）


class ServiceType():
    """业务标识"""
    NORMAL = 1          # 标准业务，股票，债券，基金买卖；新股，新债申购；港股通；质押式回购；基金申赎
    SEC_MARGIN_TRD = 2   # 融资融券
    OPTION = 3          # 期权业务
    SH_BLOCK_TRD = 4     # 上交所大宗交易，需要LIC512203授权
    SH_FIX_BENEFIT = 5   # 上交所固定收益，需要LIC512203授权
    SZ_COMPREHENSIVE = 6    # 深交所综合协议，需要LIC512203授权
    FUTURE = 7              # 期货业务，需要LIC512203授权
    SCI_TECH_BOARD = 8     # 上交所科创板股票交易，需要LIC512203授权
    SH_BLOCK_TRD_FOR_SCI_TECH = 9    # 大宗交易上交所科创板股票交易，需要LIC512203授权


class OrderState():
    """委托状态"""
    UNDECLARE = '1'         # 未报
    WAIT_DECLARING = '2'    # 待报
    DECLARING = '3'         # 正报
    DECLARED = '4'          # 已报
    INVALID = '5'           # 废单
    PARTIAL_DEALT = '6'     # 部成
    ALL_DEALT = '7'         # 已成
    PARTIAL_CANCELED = '8'  # 部撤
    ALL_CANCELED = '9'      # 已撤
    WAIT_CANCELED = 'a'     # 待撤
    UNAPPROVED = 'b'        # 未审批
    DENIED = 'c'            # 审批拒绝
    WITHDRAW = 'd'          # 未审批即撤销


POSITION_COLUMN_NAMES = [
    "证券公司",
    "资金账户",
    "账户类型",
    "证券代码",
    "证券名称",
    "证券类别",
    "最新价",
    "成本价",
    "产品编号",
    "产品名称",
    "单元编号",
    "单元名称",
    "持仓数量",
    "当前成本",
    "可用数量",
    "持仓市值(净价)",
    "持仓市值(全价)",
    "债券利息",
    "交易市场",
    "币种",
    "当日实现盈亏",
    "累计实现盈亏",
    "浮动盈亏",
    "浮盈率(%)",
    "盈亏率(%)",
    "投资类型",
    "股东",
    "当日买入数量",
    "当日卖出数量",
    "当日买金额",
    "当日卖金额",
    "当日涨跌幅(%)",
    "保本价",
    "全价成本",
    "柜台成本",
    "柜台盈亏",
    "总股本"
]

ORDER_RESULT_COLUMN_NAMES = [
    "产品代码",
    "单元编号",
    "组合编号",
    "股东代码",
    "交易市场",
    "证券代码",
    "委托方向",
    "委托价格类型",
    "委托价格",
    "委托数量",
    "第三方系统自定义号",
    "委托序号",
    "委托失败代码",
    "失败原因",
    "处理标志",
    "备用字段",
    "委托金额",
    "特殊标识",
    "业务标识"
]

STOCK_FOR_BUY_COLUMN_NAMES = [
    "证券代码",
    "证券名称",
    "权重",
    "交易所"
]
