diff --git a/vn.strategy/README.md b/vn.strategy/README.md new file mode 100644 index 00000000..82216116 --- /dev/null +++ b/vn.strategy/README.md @@ -0,0 +1,11 @@ +#vn.strategy介绍 + +##2015/5/21 + +该模块主要包含了一个适用于CTA类策略(时间序列型)的策略引擎和策略模板。 + +目前尚未完成,仅供参考。 + + + + diff --git a/vn.strategy/strategyEngine.py b/vn.strategy/strategyEngine.py new file mode 100644 index 00000000..29bda713 --- /dev/null +++ b/vn.strategy/strategyEngine.py @@ -0,0 +1,604 @@ +# encoding: UTF-8 + +from datetime import datetime + +from pymongo import Connection +from pymongo.errors import * + +from eventEngine import * + + +# 常量定义 +OFFSET_OPEN = '0' # 开仓 +OFFSET_CLOSE = '1' # 平仓 + +DIRECTION_BUY = '0' # 买入 +DIRECTION_SELL = '1' # 卖出 + +PRICETYPE_LIMIT = '2' # 限价 + + + +######################################################################## +class Tick: + """Tick数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.openPrice = 0 # OHLC + self.highPrice = 0 + self.lowPrice = 0 + self.lastPrice = 0 + + self.volume = 0 # 成交量 + self.openInterest = 0 # 持仓量 + + self.upperLimit = 0 # 涨停价 + self.lowerLimit = 0 # 跌停价 + + self.time = '' # 更新时间和毫秒 + self.ms= 0 + + self.bidPrice1 = 0 # 深度行情 + self.bidPrice2 = 0 + self.bidPrice3 = 0 + self.bidPrice4 = 0 + self.bidPrice5 = 0 + + self.askPrice1 = 0 + self.askPrice2 = 0 + self.askPrice3 = 0 + self.askPrice4 = 0 + self.askPrice5 = 0 + + self.bidVolume1 = 0 + self.bidVolume2 = 0 + self.bidVolume3 = 0 + self.bidVolume4 = 0 + self.bidVolume5 = 0 + + self.askVolume1 = 0 + self.askVolume2 = 0 + self.askVolume3 = 0 + self.askVolume4 = 0 + self.askVolume5 = 0 + + +######################################################################## +class Trade: + """成交数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.orderRef = '' # 报单号 + self.tradeID = '' # 成交编号 + + self.direction = None # 方向 + self.offset = None # 开平 + self.price = 0 # 成交价 + self.volume = 0 # 成交量 + + +######################################################################## +class Order: + """报单数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.orderRef = '' # 报单编号 + + self.direction = None # 方向 + self.offset = None # 开平 + self.price = 0 # 委托价 + self.volumeOriginal = 0 # 报单量 + self.volumeTraded = 0 # 已成交数量 + + self.insertTime = '' # 报单时间 + self.cancelTime = '' # 撤单时间 + + self.frontID = 0 # 前置机编号 + self.sessionID = 0 # 会话编号 + + self.status = '' # 报单状态代码 + + +######################################################################## +class StopOrder: + """ + 停止单对象 + 用于实现价格突破某一水平后自动追入 + 即通常的条件单和止损单 + """ + + #---------------------------------------------------------------------- + def __init__(self, symbol, direction, offset, price, volume, strategy): + """Constructor""" + self.symbol = symbol + self.direction = direction + self.offset = offset + self.price = price + self.volume = volume + self.strategy = strategy + + +######################################################################## +class StrategyEngine(object): + """策略引擎""" + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine): + """Constructor""" + self.__eventEngine = eventEngine + self.mainEngine = mainEngine + + # 获取代表今日的datetime + t = datetime.today() + self.today = t.replace(hour=0, minute=0, second=0, microsecond=0) + + # 保存所有报单数据的字典 + self.__dictOrder = {} + + # 保存策略对象的字典 + # key为策略名称 + # value为策略对象 + self.dictStrategy = {} + + # 保存合约代码和策略对象映射关系的字典 + # key为合约代码 + # value为交易该合约的策略列表 + self.__dictSymbolStrategy = {} + + # 保存报单编号和策略对象映射关系的字典 + # key为报单编号 + # value为策略对象 + self.__dictOrderRefStrategy = {} + + # 保存合约代码和相关停止单的字典 + # key为合约代码 + # value为该合约相关的停止单列表 + self.__dictStopOrder = {} + + # MongoDB数据库相关 + self.__mongoConnected = False + self.__mongoConnection = None + self.__mongoTickDB = None + + # 调用函数 + self.__connectMongo() + self.createStrategy() + self.__registerEvent() + + #---------------------------------------------------------------------- + def createStrategy(self): + """创建策略""" + pass + + #---------------------------------------------------------------------- + def __connectMongo(self): + """连接MongoDB数据库""" + try: + self.__mongoConnection = Connection() + self.__mongoConnected = True + self.__mongoTickDB = self.__mongoConnection['TickDB'] + self.writeLog(u'策略引擎连接MongoDB成功') + except ConnectionFailure: + self.writeLog(u'策略引擎连接MongoDB失败') + + #---------------------------------------------------------------------- + def __recordTick(self, data): + """将Tick数据插入到MongoDB中""" + if self.__mongoConnected: + symbol = data['InstrumentID'] + data['date'] = self.today + self.__mongoTickDB[symbol].insert(data) + + #---------------------------------------------------------------------- + def loadTick(self, symbol, dt): + """从MongoDB中读取Tick数据""" + if self.__mongoConnected: + collection = self.__mongoTickDB[symbol] + cx = collection.find({'date':{'$gte':dt}}) + return cx + else: + return None + + #---------------------------------------------------------------------- + def __updateMarketData(self, event): + """行情更新""" + data = event.dict_['data'] + symbol = data['InstrumentID'] + + # 检查是否存在交易该合约的策略 + if symbol in self.__dictSymbolStrategy: + # 创建TICK数据对象并更新数据 + tick = Tick(symbol) + + tick.openPrice = data['OpenPrice'] + tick.highPrice = data['HighestPrice'] + tick.lowPrice = data['LowestPrice'] + tick.lastPrice = data['LastPrice'] + + tick.volume = data['Volume'] + tick.openInterest = data['OpenInterest'] + + tick.upperLimit = data['UpperLimitPrice'] + tick.lowerLimit = data['LowerLimitPrice'] + + tick.time = data['UpdateTime'] + tick.ms = data['UpdateMillisec'] + + tick.bidPrice1 = data['BidPrice1'] + tick.bidPrice2 = data['BidPrice2'] + tick.bidPrice3 = data['BidPrice3'] + tick.bidPrice4 = data['BidPrice4'] + tick.bidPrice5 = data['BidPrice5'] + + tick.askPrice1 = data['AskPrice1'] + tick.askPrice2 = data['AskPrice2'] + tick.askPrice3 = data['AskPrice3'] + tick.askPrice4 = data['AskPrice4'] + tick.askPrice5 = data['AskPrice5'] + + tick.bidVolume1 = data['BidVolume1'] + tick.bidVolume2 = data['BidVolume2'] + tick.bidVolume3 = data['BidVolume3'] + tick.bidVolume4 = data['BidVolume4'] + tick.bidVolume5 = data['BidVolume5'] + + tick.askVolume1 = data['AskVolume1'] + tick.askVolume2 = data['AskVolume2'] + tick.askVolume3 = data['AskVolume3'] + tick.askVolume4 = data['AskVolume4'] + tick.askVolume5 = data['AskVolume5'] + + # 首先检查停止单是否需要发出 + self.__processStopOrder(tick) + + # 将该TICK数据推送给每个策略 + for strategy in self.__dictSymbolStrategy[symbol]: + strategy.onTick(tick) + + # 将数据插入MongoDB数据库,实盘建议另开程序记录TICK数据 + self.__recordTick(data) + + #---------------------------------------------------------------------- + def __processStopOrder(self, tick): + """处理停止单""" + symbol = tick.symbol + lastPrice = tick.lastPrice + upperLimit = tick.upperLimit + lowerLimit = tick.lowerLimit + + # 如果当前有该合约上的止损单 + if symbol in self.__dictStopOrder: + # 获取止损单列表 + listSO = self.__dictStopOrder[symbol] # SO:stop order + + # 准备一个空的已发止损单列表 + listSent = [] + + for so in listSO: + # 如果是买入停止单,且最新成交价大于停止触发价 + if so.direction == DIRECTION_BUY and lastPrice >= so.price: + # 以当日涨停价发出限价单买入 + ref = self.sendOrder(symbol, DIRECTION_BUY, so.offset, + upperLimit, so.volume, strategy) + + # 触发策略的止损单发出更新 + so.strategy.onStopOrder(ref) + + # 将该止损单对象保存到已发送列表中 + listSent.append(so) + + # 如果是卖出停止单,且最新成交价小于停止触发价 + elif so.direction == DIRECTION_SELL and lastPrice <= so.price: + ref = self.sendOrder(symbol, DIRECTION_SELL, so.offset, + lowerLimit, so.volume, strategy) + + so.strategy.onStopOrder(ref) + + listSent.append(so) + + # 从停止单列表中移除已经发单的停止单对象 + if listSent: + for so in listSent: + listSO.remove(so) + + # 检查停止单列表是否为空,若为空,则从停止单字典中移除该合约代码 + if not listSO: + del self.__dictStopOrder[symbol] + + #---------------------------------------------------------------------- + def __updateOrder(self, event): + """报单更新""" + data = event.dict_['data'] + orderRef = data['OrderRef'] + + # 检查是否存在监听该报单的策略 + if orderRef in self.__dictOrderRefStrategy: + + # 创建Order数据对象 + order = Order(data['InstrumentID']) + + order.orderRef = data['OrderRef'] + order.direction = data['Direction'] + order.offset = data['ComboOffsetFlag'] + + order.price = data['LimitPrice'] + order.volumeOriginal = data['VolumeTotalOriginal'] + order.volumeTraded = data['VolumeTraded'] + order.insertTime = data['InsertTime'] + order.cancelTime = data['CancelTime'] + order.frontID = data['FrontID'] + order.sessionID = data['SessionID'] + + order.status = data['OrderStatus'] + + # 推送给策略 + strategy = self.__dictOrderRefStrategy[orderRef] + strategy.onOrder(order) + + # 记录该Order的数据 + self.__dictOrder[orderRef] = data + + #---------------------------------------------------------------------- + def __updateTrade(self, event): + """成交更新""" + data = event.dict_['data'] + orderRef = data['OrderRef'] + + if orderRef in self.__dictOrderRefStrategy: + + # 创建Trade数据对象 + trade = Trade(data['InstrumentID']) + + trade.orderRef = orderRef + trade.tradeID = data['TradeID'] + trade.direction = data['Direction'] + trade.offset = data['OffsetFlag'] + + trade.price = data['Price'] + trade.volume = data['Volume'] + + # 推送给策略 + strategy = self.__dictOrderRefStrategy[orderRef] + strategy.onTrade(trade) + + #---------------------------------------------------------------------- + def sendOrder(self, symbol, direction, offset, price, volume, strategy): + """ + 发单(仅允许限价单) + symbol:合约代码 + direction:方向,DIRECTION_BUY/DIRECTION_SELL + offset:开平,OFFSET_OPEN/OFFSET_CLOSE + price:下单价格 + volume:下单手数 + strategy:策略对象 + """ + contract = self.mainEngine.selectInstrument(symbol) + + if contract: + ref = self.mainEngine.sendOrder(symbol, + contract['ExchangeID'], + price, + PRICETYPE_LIMIT, + volume, + direction, + offset) + + self.__dictOrderRefStrategy[ref] = strategy + + return ref + + #---------------------------------------------------------------------- + def cancelOrder(self, orderRef): + """ + 撤单 + """ + order = self.__dictOrder[orderRef] + symbol = order['InstrumentID'] + contract = self.mainEngine.selectInstrument(symbol) + + if contract: + self.mainEngine.cancelOrder(symbol, + contract['ExchangeID'], + orderRef, + order['FrontID'], + order['SessionID']) + + #---------------------------------------------------------------------- + def __registerEvent(self): + """注册事件监听""" + self.__eventEngine.register(EVENT_MARKETDATA, self.__updateMarketData) + self.__eventEngine.register(EVENT_ORDER, self.__updateOrder) + self.__eventEngine.register(EVENT_TRADE ,self.__updateTrade) + + #---------------------------------------------------------------------- + def writeLog(self, log): + """写日志""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def registerStrategy(self, symbol, strategy): + """注册策略对合约TICK数据的监听""" + # 尝试获取监听该合约代码的策略的列表,若无则创建 + try: + listStrategy = self.__dictSymbolStrategy[symbol] + except KeyError: + listStrategy = [] + self.__dictSymbolStrategy[symbol] = listStrategy + + # 防止重复注册 + if strategy not in listStrategy: + listStrategy.append(strategy) + + #---------------------------------------------------------------------- + def placeStopOrder(self, symbol, direction, offset, price, volume, strategy): + """ + 下停止单(运行于本地引擎中) + 注意这里的price是停止单的触发价 + """ + # 创建止损单对象 + so = StopOrder(symbol, direction, offset, price, volume, strategy) + + # 获取该合约相关的止损单列表 + try: + listSO = self.__dictStopOrder[symbol] + except KeyError: + listSO = [] + self.__dictStopOrder[symbol] = listSO + + # 将该止损单插入列表中 + listSO.append(so) + + return so + + #---------------------------------------------------------------------- + def cancelStopOrder(self, so): + """撤销停止单""" + symbol = so.symbol + + try: + listSO = self.__dictStopOrder[symbol] + + if so in listSO: + listSO.remove(so) + + if not listSO: + del self.__dictStopOrder[symbol] + except KeyError: + pass + + +######################################################################## +class SimpleStrategyTemplate(object): + """简易策略模板""" + + #---------------------------------------------------------------------- + def __init__(self, name, symbol, engine): + """Constructor""" + self.name = name # 策略名称(注意唯一性) + self.__engine = engine # 策略引擎对象 + self.symbol = symbol # 策略交易的合约 + + self.trading = False # 策略是否启动交易 + + #---------------------------------------------------------------------- + def onTick(self, tick): + """行情更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onTrade(self, trade): + """交易更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onOrder(self, order): + """报单更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onStopOrder(self, orderRef): + """停止单更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def start(self): + """ + 启动交易 + 这里是最简单的改变self.trading + 有需要可以重新实现更复杂的操作 + """ + self.trading = True + + #---------------------------------------------------------------------- + def stop(self): + """ + 停止交易 + 同上 + """ + self.trading = False + + #---------------------------------------------------------------------- + def __buy(self, price, volume, stopOrder=False): + """买入开仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_BUY, + OFFSET_OPEN, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_BUY, + OFFSET_OPEN, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __cover(self, price, volume, StopOrder=False): + """买入平仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_BUY, + OFFSET_CLOSE, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_BUY, + OFFSET_CLOSE, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __sell(self, price, volume, stopOrder=False): + """卖出平仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_SELL, + OFFSET_CLOSE, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_SELL, + OFFSET_CLOSE, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __short(self, price, volume, stopOrder=False): + """卖出开仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_SELL, + OFFSET_OPEN, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_SELL, + OFFSET_OPEN, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __cancelOrder(self, orderRef): + """撤单""" + self.__engine.cancelOrder(orderRef) + + #---------------------------------------------------------------------- + def __cancelStopOrder(self, so): + """撤销停止单""" + self.__engine.cancelStopOrder(so) + + \ No newline at end of file diff --git a/vn.strategy/strategydemo/ctp_data_type.py b/vn.strategy/strategydemo/ctp_data_type.py new file mode 100644 index 00000000..9b7a4ecf --- /dev/null +++ b/vn.strategy/strategydemo/ctp_data_type.py @@ -0,0 +1,6263 @@ +# encoding: UTF-8 + +defineDict = {} +typedefDict = {} + +#////////////////////////////////////////////////////////////////////// +#@system 新一代交易所系统 +#@company 上海期货信息技术有限公司 +#@file ThostFtdcUserApiDataType.h +#@brief 定义了客户端接口使用的业务数据类型 +#@history +#20060106 赵鸿昊 创建该文件 +#////////////////////////////////////////////////////////////////////// + + + +#////////////////////////////////////////////////////////////////////// +#TFtdcTraderIDType是一个交易所交易员代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTraderIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDType是一个投资者代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerIDType是一个经纪公司代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBrokerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerAbbrType是一个经纪公司简称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBrokerAbbrType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerNameType是一个经纪公司名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBrokerNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeInstIDType是一个合约在交易所的代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeInstIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderRefType是一个报单引用类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrderRefType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParticipantIDType是一个会员代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParticipantIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserIDType是一个用户代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordType是一个密码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPasswordType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDType是一个交易编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClientIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDType是一个合约代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstrumentIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarketIDType是一个市场代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMarketIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductNameType是一个产品名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProductNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeIDType是一个交易所代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeNameType是一个交易所名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeAbbrType是一个交易所简称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeAbbrType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeFlagType是一个交易所标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMacAddressType是一个Mac地址类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMacAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemIDType是一个系统编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSystemIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangePropertyType是一个交易所属性类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_EXP_Normal"] = '0' +#根据成交生成报单 +defineDict["THOST_FTDC_EXP_GenOrderByTrade"] = '1' + +typedefDict["TThostFtdcExchangePropertyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDateType是一个日期类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeType是一个时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLongTimeType是一个长时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLongTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentNameType是一个合约名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstrumentNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementGroupIDType是一个结算组代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSettlementGroupIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSysIDType是一个报单编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrderSysIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeIDType是一个成交编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommandTypeType是一个DB命令类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommandTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIPAddressType是一个IP地址类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIPAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIPPortType是一个IP端口类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIPPortType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductInfoType是一个产品信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProductInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProtocolInfoType是一个协议信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProtocolInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessUnitType是一个业务单元类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBusinessUnitType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDepositSeqNoType是一个出入金流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDepositSeqNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIdentifiedCardNoType是一个证件号码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIdentifiedCardNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIdCardTypeType是一个证件类型类型 +#////////////////////////////////////////////////////////////////////// +#组织机构代码 +defineDict["THOST_FTDC_ICT_EID"] = '0' +#中国公民身份证 +defineDict["THOST_FTDC_ICT_IDCard"] = '1' +#军官证 +defineDict["THOST_FTDC_ICT_OfficerIDCard"] = '2' +#警官证 +defineDict["THOST_FTDC_ICT_PoliceIDCard"] = '3' +#士兵证 +defineDict["THOST_FTDC_ICT_SoldierIDCard"] = '4' +#户口簿 +defineDict["THOST_FTDC_ICT_HouseholdRegister"] = '5' +#护照 +defineDict["THOST_FTDC_ICT_Passport"] = '6' +#台胞证 +defineDict["THOST_FTDC_ICT_TaiwanCompatriotIDCard"] = '7' +#回乡证 +defineDict["THOST_FTDC_ICT_HomeComingCard"] = '8' +#营业执照号 +defineDict["THOST_FTDC_ICT_LicenseNo"] = '9' +#税务登记号/当地纳税ID +defineDict["THOST_FTDC_ICT_TaxNo"] = 'A' +#港澳居民来往内地通行证 +defineDict["THOST_FTDC_ICT_HMMainlandTravelPermit"] = 'B' +#台湾居民来往大陆通行证 +defineDict["THOST_FTDC_ICT_TwMainlandTravelPermit"] = 'C' +#驾照 +defineDict["THOST_FTDC_ICT_DrivingLicense"] = 'D' +#当地社保ID +defineDict["THOST_FTDC_ICT_SocialID"] = 'F' +#当地身份证 +defineDict["THOST_FTDC_ICT_LocalID"] = 'G' +#商业登记证 +defineDict["THOST_FTDC_ICT_BusinessRegistration"] = 'H' +#港澳永久性居民身份证 +defineDict["THOST_FTDC_ICT_HKMCIDCard"] = 'I' +#其他证件 +defineDict["THOST_FTDC_ICT_OtherCard"] = 'x' + +typedefDict["TThostFtdcIdCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderLocalIDType是一个本地报单编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrderLocalIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserNameType是一个用户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPartyNameType是一个参与人名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPartyNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcErrorMsgType是一个错误信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcErrorMsgType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFieldNameType是一个字段名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFieldNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFieldContentType是一个字段内容类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFieldContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemNameType是一个系统名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSystemNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContentType是一个消息正文类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorRangeType是一个投资者范围类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_IR_All"] = '1' +#投资者组 +defineDict["THOST_FTDC_IR_Group"] = '2' +#单一投资者 +defineDict["THOST_FTDC_IR_Single"] = '3' + +typedefDict["TThostFtdcInvestorRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDepartmentRangeType是一个投资者范围类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_DR_All"] = '1' +#组织架构 +defineDict["THOST_FTDC_DR_Group"] = '2' +#单一投资者 +defineDict["THOST_FTDC_DR_Single"] = '3' + +typedefDict["TThostFtdcDepartmentRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataSyncStatusType是一个数据同步状态类型 +#////////////////////////////////////////////////////////////////////// +#未同步 +defineDict["THOST_FTDC_DS_Asynchronous"] = '1' +#同步中 +defineDict["THOST_FTDC_DS_Synchronizing"] = '2' +#已同步 +defineDict["THOST_FTDC_DS_Synchronized"] = '3' + +typedefDict["TThostFtdcDataSyncStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerDataSyncStatusType是一个经纪公司数据同步状态类型 +#////////////////////////////////////////////////////////////////////// +#已同步 +defineDict["THOST_FTDC_BDS_Synchronized"] = '1' +#同步中 +defineDict["THOST_FTDC_BDS_Synchronizing"] = '2' + +typedefDict["TThostFtdcBrokerDataSyncStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeConnectStatusType是一个交易所连接状态类型 +#////////////////////////////////////////////////////////////////////// +#没有任何连接 +defineDict["THOST_FTDC_ECS_NoConnection"] = '1' +#已经发出合约查询请求 +defineDict["THOST_FTDC_ECS_QryInstrumentSent"] = '2' +#已经获取信息 +defineDict["THOST_FTDC_ECS_GotInformation"] = '9' + +typedefDict["TThostFtdcExchangeConnectStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTraderConnectStatusType是一个交易所交易员连接状态类型 +#////////////////////////////////////////////////////////////////////// +#没有任何连接 +defineDict["THOST_FTDC_TCS_NotConnected"] = '1' +#已经连接 +defineDict["THOST_FTDC_TCS_Connected"] = '2' +#已经发出合约查询请求 +defineDict["THOST_FTDC_TCS_QryInstrumentSent"] = '3' +#订阅私有流 +defineDict["THOST_FTDC_TCS_SubPrivateFlow"] = '4' + +typedefDict["TThostFtdcTraderConnectStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionCodeType是一个功能代码类型 +#////////////////////////////////////////////////////////////////////// +#数据异步化 +defineDict["THOST_FTDC_FC_DataAsync"] = '1' +#强制用户登出 +defineDict["THOST_FTDC_FC_ForceUserLogout"] = '2' +#变更管理用户口令 +defineDict["THOST_FTDC_FC_UserPasswordUpdate"] = '3' +#变更经纪公司口令 +defineDict["THOST_FTDC_FC_BrokerPasswordUpdate"] = '4' +#变更投资者口令 +defineDict["THOST_FTDC_FC_InvestorPasswordUpdate"] = '5' +#报单插入 +defineDict["THOST_FTDC_FC_OrderInsert"] = '6' +#报单操作 +defineDict["THOST_FTDC_FC_OrderAction"] = '7' +#同步系统数据 +defineDict["THOST_FTDC_FC_SyncSystemData"] = '8' +#同步经纪公司数据 +defineDict["THOST_FTDC_FC_SyncBrokerData"] = '9' +#批量同步经纪公司数据 +defineDict["THOST_FTDC_FC_BachSyncBrokerData"] = 'A' +#超级查询 +defineDict["THOST_FTDC_FC_SuperQuery"] = 'B' +#预埋报单插入 +defineDict["THOST_FTDC_FC_ParkedOrderInsert"] = 'C' +#预埋报单操作 +defineDict["THOST_FTDC_FC_ParkedOrderAction"] = 'D' +#同步动态令牌 +defineDict["THOST_FTDC_FC_SyncOTP"] = 'E' +#删除未知单 +defineDict["THOST_FTDC_FC_DeleteOrder"] = 'F' + +typedefDict["TThostFtdcFunctionCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerFunctionCodeType是一个经纪公司功能代码类型 +#////////////////////////////////////////////////////////////////////// +#强制用户登出 +defineDict["THOST_FTDC_BFC_ForceUserLogout"] = '1' +#变更用户口令 +defineDict["THOST_FTDC_BFC_UserPasswordUpdate"] = '2' +#同步经纪公司数据 +defineDict["THOST_FTDC_BFC_SyncBrokerData"] = '3' +#批量同步经纪公司数据 +defineDict["THOST_FTDC_BFC_BachSyncBrokerData"] = '4' +#报单插入 +defineDict["THOST_FTDC_BFC_OrderInsert"] = '5' +#报单操作 +defineDict["THOST_FTDC_BFC_OrderAction"] = '6' +#全部查询 +defineDict["THOST_FTDC_BFC_AllQuery"] = '7' +#系统功能:登入/登出/修改密码等 +defineDict["THOST_FTDC_BFC_log"] = 'a' +#基本查询:查询基础数据,如合约,交易所等常量 +defineDict["THOST_FTDC_BFC_BaseQry"] = 'b' +#交易查询:如查成交,委托 +defineDict["THOST_FTDC_BFC_TradeQry"] = 'c' +#交易功能:报单,撤单 +defineDict["THOST_FTDC_BFC_Trade"] = 'd' +#银期转账 +defineDict["THOST_FTDC_BFC_Virement"] = 'e' +#风险监控 +defineDict["THOST_FTDC_BFC_Risk"] = 'f' +#查询/管理:查询会话,踢人等 +defineDict["THOST_FTDC_BFC_Session"] = 'g' +#风控通知控制 +defineDict["THOST_FTDC_BFC_RiskNoticeCtl"] = 'h' +#风控通知发送 +defineDict["THOST_FTDC_BFC_RiskNotice"] = 'i' +#察看经纪公司资金权限 +defineDict["THOST_FTDC_BFC_BrokerDeposit"] = 'j' +#资金查询 +defineDict["THOST_FTDC_BFC_QueryFund"] = 'k' +#报单查询 +defineDict["THOST_FTDC_BFC_QueryOrder"] = 'l' +#成交查询 +defineDict["THOST_FTDC_BFC_QueryTrade"] = 'm' +#持仓查询 +defineDict["THOST_FTDC_BFC_QueryPosition"] = 'n' +#行情查询 +defineDict["THOST_FTDC_BFC_QueryMarketData"] = 'o' +#用户事件查询 +defineDict["THOST_FTDC_BFC_QueryUserEvent"] = 'p' +#风险通知查询 +defineDict["THOST_FTDC_BFC_QueryRiskNotify"] = 'q' +#出入金查询 +defineDict["THOST_FTDC_BFC_QueryFundChange"] = 'r' +#投资者信息查询 +defineDict["THOST_FTDC_BFC_QueryInvestor"] = 's' +#交易编码查询 +defineDict["THOST_FTDC_BFC_QueryTradingCode"] = 't' +#强平 +defineDict["THOST_FTDC_BFC_ForceClose"] = 'u' +#压力测试 +defineDict["THOST_FTDC_BFC_PressTest"] = 'v' +#权益反算 +defineDict["THOST_FTDC_BFC_RemainCalc"] = 'w' +#净持仓保证金指标 +defineDict["THOST_FTDC_BFC_NetPositionInd"] = 'x' +#风险预算 +defineDict["THOST_FTDC_BFC_RiskPredict"] = 'y' +#数据导出 +defineDict["THOST_FTDC_BFC_DataExport"] = 'z' +#风控指标设置 +defineDict["THOST_FTDC_BFC_RiskTargetSetup"] = 'A' +#行情预警 +defineDict["THOST_FTDC_BFC_MarketDataWarn"] = 'B' +#业务通知查询 +defineDict["THOST_FTDC_BFC_QryBizNotice"] = 'C' +#业务通知模板设置 +defineDict["THOST_FTDC_BFC_CfgBizNotice"] = 'D' +#同步动态令牌 +defineDict["THOST_FTDC_BFC_SyncOTP"] = 'E' +#发送业务通知 +defineDict["THOST_FTDC_BFC_SendBizNotice"] = 'F' +#风险级别标准设置 +defineDict["THOST_FTDC_BFC_CfgRiskLevelStd"] = 'G' +#交易终端应急功能 +defineDict["THOST_FTDC_BFC_TbCommand"] = 'H' +#删除未知单 +defineDict["THOST_FTDC_BFC_DeleteOrder"] = 'J' +#预埋报单插入 +defineDict["THOST_FTDC_BFC_ParkedOrderInsert"] = 'K' +#预埋报单操作 +defineDict["THOST_FTDC_BFC_ParkedOrderAction"] = 'L' + +typedefDict["TThostFtdcBrokerFunctionCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderActionStatusType是一个报单操作状态类型 +#////////////////////////////////////////////////////////////////////// +#已经提交 +defineDict["THOST_FTDC_OAS_Submitted"] = 'a' +#已经接受 +defineDict["THOST_FTDC_OAS_Accepted"] = 'b' +#已经被拒绝 +defineDict["THOST_FTDC_OAS_Rejected"] = 'c' + +typedefDict["TThostFtdcOrderActionStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderStatusType是一个报单状态类型 +#////////////////////////////////////////////////////////////////////// +#全部成交 +defineDict["THOST_FTDC_OST_AllTraded"] = '0' +#部分成交还在队列中 +defineDict["THOST_FTDC_OST_PartTradedQueueing"] = '1' +#部分成交不在队列中 +defineDict["THOST_FTDC_OST_PartTradedNotQueueing"] = '2' +#未成交还在队列中 +defineDict["THOST_FTDC_OST_NoTradeQueueing"] = '3' +#未成交不在队列中 +defineDict["THOST_FTDC_OST_NoTradeNotQueueing"] = '4' +#撤单 +defineDict["THOST_FTDC_OST_Canceled"] = '5' +#未知 +defineDict["THOST_FTDC_OST_Unknown"] = 'a' +#尚未触发 +defineDict["THOST_FTDC_OST_NotTouched"] = 'b' +#已触发 +defineDict["THOST_FTDC_OST_Touched"] = 'c' + +typedefDict["TThostFtdcOrderStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSubmitStatusType是一个报单提交状态类型 +#////////////////////////////////////////////////////////////////////// +#已经提交 +defineDict["THOST_FTDC_OSS_InsertSubmitted"] = '0' +#撤单已经提交 +defineDict["THOST_FTDC_OSS_CancelSubmitted"] = '1' +#修改已经提交 +defineDict["THOST_FTDC_OSS_ModifySubmitted"] = '2' +#已经接受 +defineDict["THOST_FTDC_OSS_Accepted"] = '3' +#报单已经被拒绝 +defineDict["THOST_FTDC_OSS_InsertRejected"] = '4' +#撤单已经被拒绝 +defineDict["THOST_FTDC_OSS_CancelRejected"] = '5' +#改单已经被拒绝 +defineDict["THOST_FTDC_OSS_ModifyRejected"] = '6' + +typedefDict["TThostFtdcOrderSubmitStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionDateType是一个持仓日期类型 +#////////////////////////////////////////////////////////////////////// +#今日持仓 +defineDict["THOST_FTDC_PSD_Today"] = '1' +#历史持仓 +defineDict["THOST_FTDC_PSD_History"] = '2' + +typedefDict["TThostFtdcPositionDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionDateTypeType是一个持仓日期类型类型 +#////////////////////////////////////////////////////////////////////// +#使用历史持仓 +defineDict["THOST_FTDC_PDT_UseHistory"] = '1' +#不使用历史持仓 +defineDict["THOST_FTDC_PDT_NoUseHistory"] = '2' + +typedefDict["TThostFtdcPositionDateTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingRoleType是一个交易角色类型 +#////////////////////////////////////////////////////////////////////// +#代理 +defineDict["THOST_FTDC_ER_Broker"] = '1' +#自营 +defineDict["THOST_FTDC_ER_Host"] = '2' +#做市商 +defineDict["THOST_FTDC_ER_Maker"] = '3' + +typedefDict["TThostFtdcTradingRoleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductClassType是一个产品类型类型 +#////////////////////////////////////////////////////////////////////// +#期货 +defineDict["THOST_FTDC_PC_Futures"] = '1' +#期货期权 +defineDict["THOST_FTDC_PC_Options"] = '2' +#组合 +defineDict["THOST_FTDC_PC_Combination"] = '3' +#即期 +defineDict["THOST_FTDC_PC_Spot"] = '4' +#期转现 +defineDict["THOST_FTDC_PC_EFP"] = '5' +#现货期权 +defineDict["THOST_FTDC_PC_SpotOption"] = '6' + +typedefDict["TThostFtdcProductClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstLifePhaseType是一个合约生命周期状态类型 +#////////////////////////////////////////////////////////////////////// +#未上市 +defineDict["THOST_FTDC_IP_NotStart"] = '0' +#上市 +defineDict["THOST_FTDC_IP_Started"] = '1' +#停牌 +defineDict["THOST_FTDC_IP_Pause"] = '2' +#到期 +defineDict["THOST_FTDC_IP_Expired"] = '3' + +typedefDict["TThostFtdcInstLifePhaseType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDirectionType是一个买卖方向类型 +#////////////////////////////////////////////////////////////////////// +#买 +defineDict["THOST_FTDC_D_Buy"] = '0' +#卖 +defineDict["THOST_FTDC_D_Sell"] = '1' + +typedefDict["TThostFtdcDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionTypeType是一个持仓类型类型 +#////////////////////////////////////////////////////////////////////// +#净持仓 +defineDict["THOST_FTDC_PT_Net"] = '1' +#综合持仓 +defineDict["THOST_FTDC_PT_Gross"] = '2' + +typedefDict["TThostFtdcPositionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPosiDirectionType是一个持仓多空方向类型 +#////////////////////////////////////////////////////////////////////// +#净 +defineDict["THOST_FTDC_PD_Net"] = '1' +#多头 +defineDict["THOST_FTDC_PD_Long"] = '2' +#空头 +defineDict["THOST_FTDC_PD_Short"] = '3' + +typedefDict["TThostFtdcPosiDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysSettlementStatusType是一个系统结算状态类型 +#////////////////////////////////////////////////////////////////////// +#不活跃 +defineDict["THOST_FTDC_SS_NonActive"] = '1' +#启动 +defineDict["THOST_FTDC_SS_Startup"] = '2' +#操作 +defineDict["THOST_FTDC_SS_Operating"] = '3' +#结算 +defineDict["THOST_FTDC_SS_Settlement"] = '4' +#结算完成 +defineDict["THOST_FTDC_SS_SettlementFinished"] = '5' + +typedefDict["TThostFtdcSysSettlementStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRatioAttrType是一个费率属性类型 +#////////////////////////////////////////////////////////////////////// +#交易费率 +defineDict["THOST_FTDC_RA_Trade"] = '0' +#结算费率 +defineDict["THOST_FTDC_RA_Settlement"] = '1' + +typedefDict["TThostFtdcRatioAttrType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHedgeFlagType是一个投机套保标志类型 +#////////////////////////////////////////////////////////////////////// +#投机 +defineDict["THOST_FTDC_HF_Speculation"] = '1' +#套利 +defineDict["THOST_FTDC_HF_Arbitrage"] = '2' +#套保 +defineDict["THOST_FTDC_HF_Hedge"] = '3' + +typedefDict["TThostFtdcHedgeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillHedgeFlagType是一个投机套保标志类型 +#////////////////////////////////////////////////////////////////////// +#投机 +defineDict["THOST_FTDC_BHF_Speculation"] = '1' +#套利 +defineDict["THOST_FTDC_BHF_Arbitrage"] = '2' +#套保 +defineDict["THOST_FTDC_BHF_Hedge"] = '3' + +typedefDict["TThostFtdcBillHedgeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDTypeType是一个交易编码类型类型 +#////////////////////////////////////////////////////////////////////// +#投机 +defineDict["THOST_FTDC_CIDT_Speculation"] = '1' +#套利 +defineDict["THOST_FTDC_CIDT_Arbitrage"] = '2' +#套保 +defineDict["THOST_FTDC_CIDT_Hedge"] = '3' + +typedefDict["TThostFtdcClientIDTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderPriceTypeType是一个报单价格条件类型 +#////////////////////////////////////////////////////////////////////// +#任意价 +defineDict["THOST_FTDC_OPT_AnyPrice"] = '1' +#限价 +defineDict["THOST_FTDC_OPT_LimitPrice"] = '2' +#最优价 +defineDict["THOST_FTDC_OPT_BestPrice"] = '3' +#最新价 +defineDict["THOST_FTDC_OPT_LastPrice"] = '4' +#最新价浮动上浮1个ticks +defineDict["THOST_FTDC_OPT_LastPricePlusOneTicks"] = '5' +#最新价浮动上浮2个ticks +defineDict["THOST_FTDC_OPT_LastPricePlusTwoTicks"] = '6' +#最新价浮动上浮3个ticks +defineDict["THOST_FTDC_OPT_LastPricePlusThreeTicks"] = '7' +#卖一价 +defineDict["THOST_FTDC_OPT_AskPrice1"] = '8' +#卖一价浮动上浮1个ticks +defineDict["THOST_FTDC_OPT_AskPrice1PlusOneTicks"] = '9' +#卖一价浮动上浮2个ticks +defineDict["THOST_FTDC_OPT_AskPrice1PlusTwoTicks"] = 'A' +#卖一价浮动上浮3个ticks +defineDict["THOST_FTDC_OPT_AskPrice1PlusThreeTicks"] = 'B' +#买一价 +defineDict["THOST_FTDC_OPT_BidPrice1"] = 'C' +#买一价浮动上浮1个ticks +defineDict["THOST_FTDC_OPT_BidPrice1PlusOneTicks"] = 'D' +#买一价浮动上浮2个ticks +defineDict["THOST_FTDC_OPT_BidPrice1PlusTwoTicks"] = 'E' +#买一价浮动上浮3个ticks +defineDict["THOST_FTDC_OPT_BidPrice1PlusThreeTicks"] = 'F' + +typedefDict["TThostFtdcOrderPriceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOffsetFlagType是一个开平标志类型 +#////////////////////////////////////////////////////////////////////// +#开仓 +defineDict["THOST_FTDC_OF_Open"] = '0' +#平仓 +defineDict["THOST_FTDC_OF_Close"] = '1' +#强平 +defineDict["THOST_FTDC_OF_ForceClose"] = '2' +#平今 +defineDict["THOST_FTDC_OF_CloseToday"] = '3' +#平昨 +defineDict["THOST_FTDC_OF_CloseYesterday"] = '4' +#强减 +defineDict["THOST_FTDC_OF_ForceOff"] = '5' +#本地强平 +defineDict["THOST_FTDC_OF_LocalForceClose"] = '6' + +typedefDict["TThostFtdcOffsetFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseReasonType是一个强平原因类型 +#////////////////////////////////////////////////////////////////////// +#非强平 +defineDict["THOST_FTDC_FCC_NotForceClose"] = '0' +#资金不足 +defineDict["THOST_FTDC_FCC_LackDeposit"] = '1' +#客户超仓 +defineDict["THOST_FTDC_FCC_ClientOverPositionLimit"] = '2' +#会员超仓 +defineDict["THOST_FTDC_FCC_MemberOverPositionLimit"] = '3' +#持仓非整数倍 +defineDict["THOST_FTDC_FCC_NotMultiple"] = '4' +#违规 +defineDict["THOST_FTDC_FCC_Violation"] = '5' +#其它 +defineDict["THOST_FTDC_FCC_Other"] = '6' +#自然人临近交割 +defineDict["THOST_FTDC_FCC_PersonDeliv"] = '7' + +typedefDict["TThostFtdcForceCloseReasonType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderTypeType是一个报单类型类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_ORDT_Normal"] = '0' +#报价衍生 +defineDict["THOST_FTDC_ORDT_DeriveFromQuote"] = '1' +#组合衍生 +defineDict["THOST_FTDC_ORDT_DeriveFromCombination"] = '2' +#组合报单 +defineDict["THOST_FTDC_ORDT_Combination"] = '3' +#条件单 +defineDict["THOST_FTDC_ORDT_ConditionalOrder"] = '4' +#互换单 +defineDict["THOST_FTDC_ORDT_Swap"] = '5' + +typedefDict["TThostFtdcOrderTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeConditionType是一个有效期类型类型 +#////////////////////////////////////////////////////////////////////// +#立即完成,否则撤销 +defineDict["THOST_FTDC_TC_IOC"] = '1' +#本节有效 +defineDict["THOST_FTDC_TC_GFS"] = '2' +#当日有效 +defineDict["THOST_FTDC_TC_GFD"] = '3' +#指定日期前有效 +defineDict["THOST_FTDC_TC_GTD"] = '4' +#撤销前有效 +defineDict["THOST_FTDC_TC_GTC"] = '5' +#集合竞价有效 +defineDict["THOST_FTDC_TC_GFA"] = '6' + +typedefDict["TThostFtdcTimeConditionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeConditionType是一个成交量类型类型 +#////////////////////////////////////////////////////////////////////// +#任何数量 +defineDict["THOST_FTDC_VC_AV"] = '1' +#最小数量 +defineDict["THOST_FTDC_VC_MV"] = '2' +#全部数量 +defineDict["THOST_FTDC_VC_CV"] = '3' + +typedefDict["TThostFtdcVolumeConditionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContingentConditionType是一个触发条件类型 +#////////////////////////////////////////////////////////////////////// +#立即 +defineDict["THOST_FTDC_CC_Immediately"] = '1' +#止损 +defineDict["THOST_FTDC_CC_Touch"] = '2' +#止赢 +defineDict["THOST_FTDC_CC_TouchProfit"] = '3' +#预埋单 +defineDict["THOST_FTDC_CC_ParkedOrder"] = '4' +#最新价大于条件价 +defineDict["THOST_FTDC_CC_LastPriceGreaterThanStopPrice"] = '5' +#最新价大于等于条件价 +defineDict["THOST_FTDC_CC_LastPriceGreaterEqualStopPrice"] = '6' +#最新价小于条件价 +defineDict["THOST_FTDC_CC_LastPriceLesserThanStopPrice"] = '7' +#最新价小于等于条件价 +defineDict["THOST_FTDC_CC_LastPriceLesserEqualStopPrice"] = '8' +#卖一价大于条件价 +defineDict["THOST_FTDC_CC_AskPriceGreaterThanStopPrice"] = '9' +#卖一价大于等于条件价 +defineDict["THOST_FTDC_CC_AskPriceGreaterEqualStopPrice"] = 'A' +#卖一价小于条件价 +defineDict["THOST_FTDC_CC_AskPriceLesserThanStopPrice"] = 'B' +#卖一价小于等于条件价 +defineDict["THOST_FTDC_CC_AskPriceLesserEqualStopPrice"] = 'C' +#买一价大于条件价 +defineDict["THOST_FTDC_CC_BidPriceGreaterThanStopPrice"] = 'D' +#买一价大于等于条件价 +defineDict["THOST_FTDC_CC_BidPriceGreaterEqualStopPrice"] = 'E' +#买一价小于条件价 +defineDict["THOST_FTDC_CC_BidPriceLesserThanStopPrice"] = 'F' +#买一价小于等于条件价 +defineDict["THOST_FTDC_CC_BidPriceLesserEqualStopPrice"] = 'H' + +typedefDict["TThostFtdcContingentConditionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcActionFlagType是一个操作标志类型 +#////////////////////////////////////////////////////////////////////// +#删除 +defineDict["THOST_FTDC_AF_Delete"] = '0' +#修改 +defineDict["THOST_FTDC_AF_Modify"] = '3' + +typedefDict["TThostFtdcActionFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingRightType是一个交易权限类型 +#////////////////////////////////////////////////////////////////////// +#可以交易 +defineDict["THOST_FTDC_TR_Allow"] = '0' +#只能平仓 +defineDict["THOST_FTDC_TR_CloseOnly"] = '1' +#不能交易 +defineDict["THOST_FTDC_TR_Forbidden"] = '2' + +typedefDict["TThostFtdcTradingRightType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSourceType是一个报单来源类型 +#////////////////////////////////////////////////////////////////////// +#来自参与者 +defineDict["THOST_FTDC_OSRC_Participant"] = '0' +#来自管理员 +defineDict["THOST_FTDC_OSRC_Administrator"] = '1' + +typedefDict["TThostFtdcOrderSourceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeTypeType是一个成交类型类型 +#////////////////////////////////////////////////////////////////////// +#组合持仓拆分为单一持仓,初始化不应包含该类型的持仓 +defineDict["THOST_FTDC_TRDT_SplitCombination"] = '#' +#普通成交 +defineDict["THOST_FTDC_TRDT_Common"] = '0' +#期权执行 +defineDict["THOST_FTDC_TRDT_OptionsExecution"] = '1' +#OTC成交 +defineDict["THOST_FTDC_TRDT_OTC"] = '2' +#期转现衍生成交 +defineDict["THOST_FTDC_TRDT_EFPDerived"] = '3' +#组合衍生成交 +defineDict["THOST_FTDC_TRDT_CombinationDerived"] = '4' + +typedefDict["TThostFtdcTradeTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriceSourceType是一个成交价来源类型 +#////////////////////////////////////////////////////////////////////// +#前成交价 +defineDict["THOST_FTDC_PSRC_LastPrice"] = '0' +#买委托价 +defineDict["THOST_FTDC_PSRC_Buy"] = '1' +#卖委托价 +defineDict["THOST_FTDC_PSRC_Sell"] = '2' + +typedefDict["TThostFtdcPriceSourceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentStatusType是一个合约交易状态类型 +#////////////////////////////////////////////////////////////////////// +#开盘前 +defineDict["THOST_FTDC_IS_BeforeTrading"] = '0' +#非交易 +defineDict["THOST_FTDC_IS_NoTrading"] = '1' +#连续交易 +defineDict["THOST_FTDC_IS_Continous"] = '2' +#集合竞价报单 +defineDict["THOST_FTDC_IS_AuctionOrdering"] = '3' +#集合竞价价格平衡 +defineDict["THOST_FTDC_IS_AuctionBalance"] = '4' +#集合竞价撮合 +defineDict["THOST_FTDC_IS_AuctionMatch"] = '5' +#收盘 +defineDict["THOST_FTDC_IS_Closed"] = '6' + +typedefDict["TThostFtdcInstrumentStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstStatusEnterReasonType是一个品种进入交易状态原因类型 +#////////////////////////////////////////////////////////////////////// +#自动切换 +defineDict["THOST_FTDC_IER_Automatic"] = '1' +#手动切换 +defineDict["THOST_FTDC_IER_Manual"] = '2' +#熔断 +defineDict["THOST_FTDC_IER_Fuse"] = '3' + +typedefDict["TThostFtdcInstStatusEnterReasonType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderActionRefType是一个报单操作引用类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrderActionRefType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstallCountType是一个安装数量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstallCountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstallIDType是一个安装编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstallIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcErrorIDType是一个错误代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcErrorIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementIDType是一个结算编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSettlementIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeType是一个数量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcVolumeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFrontIDType是一个前置编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFrontIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSessionIDType是一个会话编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSessionIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceNoType是一个序号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSequenceNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommandNoType是一个DB命令序号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommandNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMillisecType是一个时间(毫秒)类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMillisecType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeMultipleType是一个合约数量乘数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcVolumeMultipleType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingSegmentSNType是一个交易阶段编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradingSegmentSNType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRequestIDType是一个请求编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRequestIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYearType是一个年份类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcYearType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthType是一个月份类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMonthType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBoolType是一个布尔型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBoolType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriceType是一个价格类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPriceType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombOffsetFlagType是一个组合开平标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombOffsetFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombHedgeFlagType是一个组合投机套保标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombHedgeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRatioType是一个比率类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRatioType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMoneyType是一个资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLargeVolumeType是一个大额数量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLargeVolumeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceSeriesType是一个序列系列号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSequenceSeriesType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommPhaseNoType是一个通讯时段编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommPhaseNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceLabelType是一个序列编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSequenceLabelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUnderlyingMultipleType是一个基础商品乘数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUnderlyingMultipleType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriorityType是一个优先级类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPriorityType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContractCodeType是一个合同编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcContractCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCityType是一个市类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCityType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIsStockType是一个是否股民类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIsStockType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcChannelType是一个渠道类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcChannelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAddressType是一个通讯地址类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcZipCodeType是一个邮政编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcZipCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTelephoneType是一个联系电话类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTelephoneType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFaxType是一个传真类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFaxType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMobileType是一个手机类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMobileType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEMailType是一个电子邮件类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEMailType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMemoType是一个备注类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCompanyCodeType是一个企业代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCompanyCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWebsiteType是一个网站地址类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcWebsiteType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTaxNoType是一个税务登记号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTaxNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBatchStatusType是一个处理状态类型 +#////////////////////////////////////////////////////////////////////// +#未上传 +defineDict["THOST_FTDC_BS_NoUpload"] = '1' +#已上传 +defineDict["THOST_FTDC_BS_Uploaded"] = '2' +#审核失败 +defineDict["THOST_FTDC_BS_Failed"] = '3' + +typedefDict["TThostFtdcBatchStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyIDType是一个属性代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPropertyIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyNameType是一个属性名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPropertyNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLicenseNoType是一个营业执照号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLicenseNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentIDType是一个经纪人代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAgentIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentNameType是一个经纪人名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAgentNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentGroupIDType是一个经纪人组代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAgentGroupIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentGroupNameType是一个经纪人组名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAgentGroupNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnStyleType是一个按品种返还方式类型 +#////////////////////////////////////////////////////////////////////// +#按所有品种 +defineDict["THOST_FTDC_RS_All"] = '1' +#按品种 +defineDict["THOST_FTDC_RS_ByProduct"] = '2' + +typedefDict["TThostFtdcReturnStyleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnPatternType是一个返还模式类型 +#////////////////////////////////////////////////////////////////////// +#按成交手数 +defineDict["THOST_FTDC_RP_ByVolume"] = '1' +#按留存手续费 +defineDict["THOST_FTDC_RP_ByFeeOnHand"] = '2' + +typedefDict["TThostFtdcReturnPatternType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnLevelType是一个返还级别类型 +#////////////////////////////////////////////////////////////////////// +#级别1 +defineDict["THOST_FTDC_RL_Level1"] = '1' +#级别2 +defineDict["THOST_FTDC_RL_Level2"] = '2' +#级别3 +defineDict["THOST_FTDC_RL_Level3"] = '3' +#级别4 +defineDict["THOST_FTDC_RL_Level4"] = '4' +#级别5 +defineDict["THOST_FTDC_RL_Level5"] = '5' +#级别6 +defineDict["THOST_FTDC_RL_Level6"] = '6' +#级别7 +defineDict["THOST_FTDC_RL_Level7"] = '7' +#级别8 +defineDict["THOST_FTDC_RL_Level8"] = '8' +#级别9 +defineDict["THOST_FTDC_RL_Level9"] = '9' + +typedefDict["TThostFtdcReturnLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnStandardType是一个返还标准类型 +#////////////////////////////////////////////////////////////////////// +#分阶段返还 +defineDict["THOST_FTDC_RSD_ByPeriod"] = '1' +#按某一标准 +defineDict["THOST_FTDC_RSD_ByStandard"] = '2' + +typedefDict["TThostFtdcReturnStandardType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMortgageTypeType是一个质押类型类型 +#////////////////////////////////////////////////////////////////////// +#质出 +defineDict["THOST_FTDC_MT_Out"] = '0' +#质入 +defineDict["THOST_FTDC_MT_In"] = '1' + +typedefDict["TThostFtdcMortgageTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorSettlementParamIDType是一个投资者结算参数代码类型 +#////////////////////////////////////////////////////////////////////// +#质押比例 +defineDict["THOST_FTDC_ISPI_MortgageRatio"] = '4' +#保证金算法 +defineDict["THOST_FTDC_ISPI_MarginWay"] = '5' +#结算单结存是否包含质押 +defineDict["THOST_FTDC_ISPI_BillDeposit"] = '9' + +typedefDict["TThostFtdcInvestorSettlementParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeSettlementParamIDType是一个交易所结算参数代码类型 +#////////////////////////////////////////////////////////////////////// +#质押比例 +defineDict["THOST_FTDC_ESPI_MortgageRatio"] = '1' +#分项资金导入项 +defineDict["THOST_FTDC_ESPI_OtherFundItem"] = '2' +#分项资金入交易所出入金 +defineDict["THOST_FTDC_ESPI_OtherFundImport"] = '3' +#中金所开户最低可用金额 +defineDict["THOST_FTDC_ESPI_CFFEXMinPrepa"] = '6' +#郑商所结算方式 +defineDict["THOST_FTDC_ESPI_CZCESettlementType"] = '7' +#交易所交割手续费收取方式 +defineDict["THOST_FTDC_ESPI_ExchDelivFeeMode"] = '9' +#投资者交割手续费收取方式 +defineDict["THOST_FTDC_ESPI_DelivFeeMode"] = '0' +#郑商所组合持仓保证金收取方式 +defineDict["THOST_FTDC_ESPI_CZCEComMarginType"] = 'A' +#大商所套利保证金是否优惠 +defineDict["THOST_FTDC_ESPI_DceComMarginType"] = 'B' +#虚值期权保证金优惠比率 +defineDict["THOST_FTDC_ESPI_OptOutDisCountRate"] = 'a' +#最低保障系数 +defineDict["THOST_FTDC_ESPI_OptMiniGuarantee"] = 'b' + +typedefDict["TThostFtdcExchangeSettlementParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemParamIDType是一个系统参数代码类型 +#////////////////////////////////////////////////////////////////////// +#投资者代码最小长度 +defineDict["THOST_FTDC_SPI_InvestorIDMinLength"] = '1' +#投资者帐号代码最小长度 +defineDict["THOST_FTDC_SPI_AccountIDMinLength"] = '2' +#投资者开户默认登录权限 +defineDict["THOST_FTDC_SPI_UserRightLogon"] = '3' +#投资者交易结算单成交汇总方式 +defineDict["THOST_FTDC_SPI_SettlementBillTrade"] = '4' +#统一开户更新交易编码方式 +defineDict["THOST_FTDC_SPI_TradingCode"] = '5' +#结算是否判断存在未复核的出入金和分项资金 +defineDict["THOST_FTDC_SPI_CheckFund"] = '6' +#是否启用手续费模板数据权限 +defineDict["THOST_FTDC_SPI_CommModelRight"] = '7' +#是否启用保证金率模板数据权限 +defineDict["THOST_FTDC_SPI_MarginModelRight"] = '9' +#是否规范用户才能激活 +defineDict["THOST_FTDC_SPI_IsStandardActive"] = '8' +#上传的交易所结算文件路径 +defineDict["THOST_FTDC_SPI_UploadSettlementFile"] = 'U' +#上报保证金监控中心文件路径 +defineDict["THOST_FTDC_SPI_DownloadCSRCFile"] = 'D' +#生成的结算单文件路径 +defineDict["THOST_FTDC_SPI_SettlementBillFile"] = 'S' +#证监会文件标识 +defineDict["THOST_FTDC_SPI_CSRCOthersFile"] = 'C' +#投资者照片路径 +defineDict["THOST_FTDC_SPI_InvestorPhoto"] = 'P' +#全结经纪公司上传文件路径 +defineDict["THOST_FTDC_SPI_CSRCData"] = 'R' +#开户密码录入方式 +defineDict["THOST_FTDC_SPI_InvestorPwdModel"] = 'I' +#投资者中金所结算文件下载路径 +defineDict["THOST_FTDC_SPI_CFFEXInvestorSettleFile"] = 'F' +#投资者代码编码方式 +defineDict["THOST_FTDC_SPI_InvestorIDType"] = 'a' +#休眠户最高权益 +defineDict["THOST_FTDC_SPI_FreezeMaxReMain"] = 'r' +#手续费相关操作实时上场开关 +defineDict["THOST_FTDC_SPI_IsSync"] = 'A' +#解除开仓权限限制 +defineDict["THOST_FTDC_SPI_RelieveOpenLimit"] = 'O' +#是否规范用户才能休眠 +defineDict["THOST_FTDC_SPI_IsStandardFreeze"] = 'X' +#郑商所是否开放所有品种套保交易 +defineDict["THOST_FTDC_SPI_CZCENormalProductHedge"] = 'B' + +typedefDict["TThostFtdcSystemParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeParamIDType是一个交易系统参数代码类型 +#////////////////////////////////////////////////////////////////////// +#系统加密算法 +defineDict["THOST_FTDC_TPID_EncryptionStandard"] = 'E' +#系统风险算法 +defineDict["THOST_FTDC_TPID_RiskMode"] = 'R' +#系统风险算法是否全局 0-否 1-是 +defineDict["THOST_FTDC_TPID_RiskModeGlobal"] = 'G' +#密码加密算法 +defineDict["THOST_FTDC_TPID_modeEncode"] = 'P' +#价格小数位数参数 +defineDict["THOST_FTDC_TPID_tickMode"] = 'T' +#用户最大会话数 +defineDict["THOST_FTDC_TPID_SingleUserSessionMaxNum"] = 'S' +#最大连续登录失败数 +defineDict["THOST_FTDC_TPID_LoginFailMaxNum"] = 'L' +#是否强制认证 +defineDict["THOST_FTDC_TPID_IsAuthForce"] = 'A' + +typedefDict["TThostFtdcTradeParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementParamValueType是一个参数代码值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSettlementParamValueType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCounterIDType是一个计数器代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCounterIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorGroupNameType是一个投资者分组名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestorGroupNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrandCodeType是一个牌号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBrandCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWarehouseType是一个仓库类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcWarehouseType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductDateType是一个产期类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProductDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcGradeType是一个等级类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcGradeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClassifyType是一个类别类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClassifyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionType是一个货位类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPositionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYieldlyType是一个产地类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcYieldlyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWeightType是一个公定重量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcWeightType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubEntryFundNoType是一个分项资金流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSubEntryFundNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileIDType是一个文件标识类型 +#////////////////////////////////////////////////////////////////////// +#资金数据 +defineDict["THOST_FTDC_FI_SettlementFund"] = 'F' +#成交数据 +defineDict["THOST_FTDC_FI_Trade"] = 'T' +#投资者持仓数据 +defineDict["THOST_FTDC_FI_InvestorPosition"] = 'P' +#投资者分项资金数据 +defineDict["THOST_FTDC_FI_SubEntryFund"] = 'O' +#组合持仓数据 +defineDict["THOST_FTDC_FI_CZCECombinationPos"] = 'C' +#上报保证金监控中心数据 +defineDict["THOST_FTDC_FI_CSRCData"] = 'R' +#郑商所平仓了结数据 +defineDict["THOST_FTDC_FI_CZCEClose"] = 'L' +#郑商所非平仓了结数据 +defineDict["THOST_FTDC_FI_CZCENoClose"] = 'N' +#持仓明细数据 +defineDict["THOST_FTDC_FI_PositionDtl"] = 'D' +#期权执行文件 +defineDict["THOST_FTDC_FI_OptionStrike"] = 'S' +#结算价比对文件 +defineDict["THOST_FTDC_FI_SettlementPriceComparison"] = 'M' +#上期所非持仓变动明细 +defineDict["THOST_FTDC_FI_NonTradePosChange"] = 'B' + +typedefDict["TThostFtdcFileIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileNameType是一个文件名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileTypeType是一个文件上传类型类型 +#////////////////////////////////////////////////////////////////////// +#结算 +defineDict["THOST_FTDC_FUT_Settlement"] = '0' +#核对 +defineDict["THOST_FTDC_FUT_Check"] = '1' + +typedefDict["TThostFtdcFileTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileFormatType是一个文件格式类型 +#////////////////////////////////////////////////////////////////////// +#文本文件(.txt) +defineDict["THOST_FTDC_FFT_Txt"] = '0' +#压缩文件(.zip) +defineDict["THOST_FTDC_FFT_Zip"] = '1' +#DBF文件(.dbf) +defineDict["THOST_FTDC_FFT_DBF"] = '2' + +typedefDict["TThostFtdcFileFormatType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileUploadStatusType是一个文件状态类型 +#////////////////////////////////////////////////////////////////////// +#上传成功 +defineDict["THOST_FTDC_FUS_SucceedUpload"] = '1' +#上传失败 +defineDict["THOST_FTDC_FUS_FailedUpload"] = '2' +#导入成功 +defineDict["THOST_FTDC_FUS_SucceedLoad"] = '3' +#导入部分成功 +defineDict["THOST_FTDC_FUS_PartSucceedLoad"] = '4' +#导入失败 +defineDict["THOST_FTDC_FUS_FailedLoad"] = '5' + +typedefDict["TThostFtdcFileUploadStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferDirectionType是一个移仓方向类型 +#////////////////////////////////////////////////////////////////////// +#移出 +defineDict["THOST_FTDC_TD_Out"] = '0' +#移入 +defineDict["THOST_FTDC_TD_In"] = '1' + +typedefDict["TThostFtdcTransferDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUploadModeType是一个上传文件类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUploadModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAccountIDType是一个投资者帐号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAccountIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankFlagType是一个银行统一标识类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccountType是一个银行账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenNameType是一个银行账户的开户人名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOpenNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenBankType是一个银行账户的开户行类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOpenBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankNameType是一个银行名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPublishPathType是一个发布路径类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPublishPathType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperatorIDType是一个操作员代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOperatorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthCountType是一个月份数量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMonthCountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAdvanceMonthArrayType是一个月份提前数组类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAdvanceMonthArrayType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDateExprType是一个日期表达式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDateExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDExprType是一个合约代码表达式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstrumentIDExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentNameExprType是一个合约名称表达式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstrumentNameExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSpecialCreateRuleType是一个特殊的创建规则类型 +#////////////////////////////////////////////////////////////////////// +#没有特殊创建规则 +defineDict["THOST_FTDC_SC_NoSpecialRule"] = '0' +#不包含春节 +defineDict["THOST_FTDC_SC_NoSpringFestival"] = '1' + +typedefDict["TThostFtdcSpecialCreateRuleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBasisPriceTypeType是一个挂牌基准价类型类型 +#////////////////////////////////////////////////////////////////////// +#上一合约结算价 +defineDict["THOST_FTDC_IPT_LastSettlement"] = '1' +#上一合约收盘价 +defineDict["THOST_FTDC_IPT_LaseClose"] = '2' + +typedefDict["TThostFtdcBasisPriceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductLifePhaseType是一个产品生命周期状态类型 +#////////////////////////////////////////////////////////////////////// +#活跃 +defineDict["THOST_FTDC_PLP_Active"] = '1' +#不活跃 +defineDict["THOST_FTDC_PLP_NonActive"] = '2' +#注销 +defineDict["THOST_FTDC_PLP_Canceled"] = '3' + +typedefDict["TThostFtdcProductLifePhaseType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDeliveryModeType是一个交割方式类型 +#////////////////////////////////////////////////////////////////////// +#现金交割 +defineDict["THOST_FTDC_DM_CashDeliv"] = '1' +#实物交割 +defineDict["THOST_FTDC_DM_CommodityDeliv"] = '2' + +typedefDict["TThostFtdcDeliveryModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLogLevelType是一个日志级别类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLogLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessNameType是一个存储过程名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProcessNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperationMemoType是一个操作摘要类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOperationMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundIOTypeType是一个出入金类型类型 +#////////////////////////////////////////////////////////////////////// +#出入金 +defineDict["THOST_FTDC_FIOT_FundIO"] = '1' +#银期转帐 +defineDict["THOST_FTDC_FIOT_Transfer"] = '2' +#银期换汇 +defineDict["THOST_FTDC_FIOT_SwapCurrency"] = '3' + +typedefDict["TThostFtdcFundIOTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundTypeType是一个资金类型类型 +#////////////////////////////////////////////////////////////////////// +#银行存款 +defineDict["THOST_FTDC_FT_Deposite"] = '1' +#分项资金 +defineDict["THOST_FTDC_FT_ItemFund"] = '2' +#公司调整 +defineDict["THOST_FTDC_FT_Company"] = '3' +#资金内转 +defineDict["THOST_FTDC_FT_InnerTransfer"] = '4' + +typedefDict["TThostFtdcFundTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundDirectionType是一个出入金方向类型 +#////////////////////////////////////////////////////////////////////// +#入金 +defineDict["THOST_FTDC_FD_In"] = '1' +#出金 +defineDict["THOST_FTDC_FD_Out"] = '2' + +typedefDict["TThostFtdcFundDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundStatusType是一个资金状态类型 +#////////////////////////////////////////////////////////////////////// +#已录入 +defineDict["THOST_FTDC_FS_Record"] = '1' +#已复核 +defineDict["THOST_FTDC_FS_Check"] = '2' +#已冲销 +defineDict["THOST_FTDC_FS_Charge"] = '3' + +typedefDict["TThostFtdcFundStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillNoType是一个票据号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBillNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillNameType是一个票据名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBillNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPublishStatusType是一个发布状态类型 +#////////////////////////////////////////////////////////////////////// +#未发布 +defineDict["THOST_FTDC_PS_None"] = '1' +#正在发布 +defineDict["THOST_FTDC_PS_Publishing"] = '2' +#已发布 +defineDict["THOST_FTDC_PS_Published"] = '3' + +typedefDict["TThostFtdcPublishStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueIDType是一个枚举值代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEnumValueIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueTypeType是一个枚举值类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEnumValueTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueLabelType是一个枚举值名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEnumValueLabelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueResultType是一个枚举值结果类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEnumValueResultType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemStatusType是一个系统状态类型 +#////////////////////////////////////////////////////////////////////// +#不活跃 +defineDict["THOST_FTDC_ES_NonActive"] = '1' +#启动 +defineDict["THOST_FTDC_ES_Startup"] = '2' +#交易开始初始化 +defineDict["THOST_FTDC_ES_Initialize"] = '3' +#交易完成初始化 +defineDict["THOST_FTDC_ES_Initialized"] = '4' +#收市开始 +defineDict["THOST_FTDC_ES_Close"] = '5' +#收市完成 +defineDict["THOST_FTDC_ES_Closed"] = '6' +#结算 +defineDict["THOST_FTDC_ES_Settlement"] = '7' + +typedefDict["TThostFtdcSystemStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementStatusType是一个结算状态类型 +#////////////////////////////////////////////////////////////////////// +#初始 +defineDict["THOST_FTDC_STS_Initialize"] = '0' +#结算中 +defineDict["THOST_FTDC_STS_Settlementing"] = '1' +#已结算 +defineDict["THOST_FTDC_STS_Settlemented"] = '2' +#结算完成 +defineDict["THOST_FTDC_STS_Finished"] = '3' + +typedefDict["TThostFtdcSettlementStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntTypeType是一个限定值类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRangeIntTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntFromType是一个限定值下限类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRangeIntFromType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntToType是一个限定值上限类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRangeIntToType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionIDType是一个功能代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFunctionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionValueCodeType是一个功能编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFunctionValueCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionNameType是一个功能名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFunctionNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRoleIDType是一个角色编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRoleIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRoleNameType是一个角色名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRoleNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDescriptionType是一个描述类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDescriptionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombineIDType是一个组合编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombineIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombineTypeType是一个组合类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombineTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorTypeType是一个投资者类型类型 +#////////////////////////////////////////////////////////////////////// +#自然人 +defineDict["THOST_FTDC_CT_Person"] = '0' +#法人 +defineDict["THOST_FTDC_CT_Company"] = '1' +#投资基金 +defineDict["THOST_FTDC_CT_Fund"] = '2' +#特殊法人 +defineDict["THOST_FTDC_CT_SpecialOrgan"] = '3' +#资管户 +defineDict["THOST_FTDC_CT_Asset"] = '4' + +typedefDict["TThostFtdcInvestorTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerTypeType是一个经纪公司类型类型 +#////////////////////////////////////////////////////////////////////// +#交易会员 +defineDict["THOST_FTDC_BT_Trade"] = '0' +#交易结算会员 +defineDict["THOST_FTDC_BT_TradeSettle"] = '1' + +typedefDict["TThostFtdcBrokerTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskLevelType是一个风险等级类型 +#////////////////////////////////////////////////////////////////////// +#低风险客户 +defineDict["THOST_FTDC_FAS_Low"] = '1' +#普通客户 +defineDict["THOST_FTDC_FAS_Normal"] = '2' +#关注客户 +defineDict["THOST_FTDC_FAS_Focus"] = '3' +#风险客户 +defineDict["THOST_FTDC_FAS_Risk"] = '4' + +typedefDict["TThostFtdcRiskLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFeeAcceptStyleType是一个手续费收取方式类型 +#////////////////////////////////////////////////////////////////////// +#按交易收取 +defineDict["THOST_FTDC_FAS_ByTrade"] = '1' +#按交割收取 +defineDict["THOST_FTDC_FAS_ByDeliv"] = '2' +#不收 +defineDict["THOST_FTDC_FAS_None"] = '3' +#按指定手续费收取 +defineDict["THOST_FTDC_FAS_FixFee"] = '4' + +typedefDict["TThostFtdcFeeAcceptStyleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordTypeType是一个密码类型类型 +#////////////////////////////////////////////////////////////////////// +#交易密码 +defineDict["THOST_FTDC_PWDT_Trade"] = '1' +#资金密码 +defineDict["THOST_FTDC_PWDT_Account"] = '2' + +typedefDict["TThostFtdcPasswordTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAlgorithmType是一个盈亏算法类型 +#////////////////////////////////////////////////////////////////////// +#浮盈浮亏都计算 +defineDict["THOST_FTDC_AG_All"] = '1' +#浮盈不计,浮亏计 +defineDict["THOST_FTDC_AG_OnlyLost"] = '2' +#浮盈计,浮亏不计 +defineDict["THOST_FTDC_AG_OnlyGain"] = '3' +#浮盈浮亏都不计算 +defineDict["THOST_FTDC_AG_None"] = '4' + +typedefDict["TThostFtdcAlgorithmType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIncludeCloseProfitType是一个是否包含平仓盈利类型 +#////////////////////////////////////////////////////////////////////// +#包含平仓盈利 +defineDict["THOST_FTDC_ICP_Include"] = '0' +#不包含平仓盈利 +defineDict["THOST_FTDC_ICP_NotInclude"] = '2' + +typedefDict["TThostFtdcIncludeCloseProfitType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAllWithoutTradeType是一个是否受可提比例限制类型 +#////////////////////////////////////////////////////////////////////// +#无仓无成交不受可提比例限制 +defineDict["THOST_FTDC_AWT_Enable"] = '0' +#受可提比例限制 +defineDict["THOST_FTDC_AWT_Disable"] = '2' +#无仓不受可提比例限制 +defineDict["THOST_FTDC_AWT_NoHoldEnable"] = '3' + +typedefDict["TThostFtdcAllWithoutTradeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommentType是一个盈亏算法说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVersionType是一个版本号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcVersionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeCodeType是一个交易代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeDateType是一个交易日期类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeTimeType是一个交易时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSerialType是一个发起方流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSerialNoType是一个发起方流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeSerialNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureIDType是一个期货公司代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankIDType是一个银行代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankBrchIDType是一个银行分中心代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankBranchIDType是一个分中心代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperNoType是一个交易柜员类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOperNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDeviceIDType是一个渠道标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDeviceIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRecordNumType是一个记录数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRecordNumType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccountType是一个期货资金账号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFuturePwdFlagType是一个资金密码核对标志类型 +#////////////////////////////////////////////////////////////////////// +#不核对 +defineDict["THOST_FTDC_FPWD_UnCheck"] = '0' +#核对 +defineDict["THOST_FTDC_FPWD_Check"] = '1' + +typedefDict["TThostFtdcFuturePwdFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferTypeType是一个银期转账类型类型 +#////////////////////////////////////////////////////////////////////// +#银行转期货 +defineDict["THOST_FTDC_TT_BankToFuture"] = '0' +#期货转银行 +defineDict["THOST_FTDC_TT_FutureToBank"] = '1' + +typedefDict["TThostFtdcTransferTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccPwdType是一个期货资金密码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureAccPwdType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyCodeType是一个币种类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencyCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRetCodeType是一个响应代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRetCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRetInfoType是一个响应信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRetInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeAmtType是一个银行总余额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUseAmtType是一个银行可用余额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUseAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFetchAmtType是一个银行可取余额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFetchAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferValidFlagType是一个转账有效标志类型 +#////////////////////////////////////////////////////////////////////// +#无效或失败 +defineDict["THOST_FTDC_TVF_Invalid"] = '0' +#有效 +defineDict["THOST_FTDC_TVF_Valid"] = '1' +#冲正 +defineDict["THOST_FTDC_TVF_Reverse"] = '2' + +typedefDict["TThostFtdcTransferValidFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCertCodeType是一个证件号码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCertCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReasonType是一个事由类型 +#////////////////////////////////////////////////////////////////////// +#错单 +defineDict["THOST_FTDC_RN_CD"] = '0' +#资金在途 +defineDict["THOST_FTDC_RN_ZT"] = '1' +#其它 +defineDict["THOST_FTDC_RN_QT"] = '2' + +typedefDict["TThostFtdcReasonType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundProjectIDType是一个资金项目编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFundProjectIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSexType是一个性别类型 +#////////////////////////////////////////////////////////////////////// +#未知 +defineDict["THOST_FTDC_SEX_None"] = '0' +#男 +defineDict["THOST_FTDC_SEX_Man"] = '1' +#女 +defineDict["THOST_FTDC_SEX_Woman"] = '2' + +typedefDict["TThostFtdcSexType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProfessionType是一个职业类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProfessionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNationalType是一个国籍类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcNationalType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProvinceType是一个省类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProvinceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRegionType是一个区类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRegionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCountryType是一个国家类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCountryType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLicenseNOType是一个营业执照类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLicenseNOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCompanyTypeType是一个企业性质类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCompanyTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessScopeType是一个经营范围类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBusinessScopeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCapitalCurrencyType是一个注册资本币种类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCapitalCurrencyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserTypeType是一个用户类型类型 +#////////////////////////////////////////////////////////////////////// +#投资者 +defineDict["THOST_FTDC_UT_Investor"] = '0' +#操作员 +defineDict["THOST_FTDC_UT_Operator"] = '1' +#管理员 +defineDict["THOST_FTDC_UT_SuperUser"] = '2' + +typedefDict["TThostFtdcUserTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTypeType是一个费率类型类型 +#////////////////////////////////////////////////////////////////////// +#保证金率 +defineDict["THOST_FTDC_RATETYPE_MarginRate"] = '2' + +typedefDict["TThostFtdcRateTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNoteTypeType是一个通知类型类型 +#////////////////////////////////////////////////////////////////////// +#交易结算单 +defineDict["THOST_FTDC_NOTETYPE_TradeSettleBill"] = '1' +#交易结算月报 +defineDict["THOST_FTDC_NOTETYPE_TradeSettleMonth"] = '2' +#追加保证金通知书 +defineDict["THOST_FTDC_NOTETYPE_CallMarginNotes"] = '3' +#强行平仓通知书 +defineDict["THOST_FTDC_NOTETYPE_ForceCloseNotes"] = '4' +#成交通知书 +defineDict["THOST_FTDC_NOTETYPE_TradeNotes"] = '5' +#交割通知书 +defineDict["THOST_FTDC_NOTETYPE_DelivNotes"] = '6' + +typedefDict["TThostFtdcNoteTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementStyleType是一个结算单方式类型 +#////////////////////////////////////////////////////////////////////// +#逐日盯市 +defineDict["THOST_FTDC_SBS_Day"] = '1' +#逐笔对冲 +defineDict["THOST_FTDC_SBS_Volume"] = '2' + +typedefDict["TThostFtdcSettlementStyleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerDNSType是一个域名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBrokerDNSType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSentenceType是一个语句类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSentenceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementBillTypeType是一个结算单类型类型 +#////////////////////////////////////////////////////////////////////// +#日报 +defineDict["THOST_FTDC_ST_Day"] = '0' +#月报 +defineDict["THOST_FTDC_ST_Month"] = '1' + +typedefDict["TThostFtdcSettlementBillTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserRightTypeType是一个客户权限类型类型 +#////////////////////////////////////////////////////////////////////// +#登录 +defineDict["THOST_FTDC_URT_Logon"] = '1' +#银期转帐 +defineDict["THOST_FTDC_URT_Transfer"] = '2' +#邮寄结算单 +defineDict["THOST_FTDC_URT_EMail"] = '3' +#传真结算单 +defineDict["THOST_FTDC_URT_Fax"] = '4' +#条件单 +defineDict["THOST_FTDC_URT_ConditionOrder"] = '5' + +typedefDict["TThostFtdcUserRightTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarginPriceTypeType是一个保证金价格类型类型 +#////////////////////////////////////////////////////////////////////// +#昨结算价 +defineDict["THOST_FTDC_MPT_PreSettlementPrice"] = '1' +#最新价 +defineDict["THOST_FTDC_MPT_SettlementPrice"] = '2' +#成交均价 +defineDict["THOST_FTDC_MPT_AveragePrice"] = '3' +#开仓价 +defineDict["THOST_FTDC_MPT_OpenPrice"] = '4' + +typedefDict["TThostFtdcMarginPriceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillGenStatusType是一个结算单生成状态类型 +#////////////////////////////////////////////////////////////////////// +#未生成 +defineDict["THOST_FTDC_BGS_None"] = '0' +#生成中 +defineDict["THOST_FTDC_BGS_NoGenerated"] = '1' +#已生成 +defineDict["THOST_FTDC_BGS_Generated"] = '2' + +typedefDict["TThostFtdcBillGenStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAlgoTypeType是一个算法类型类型 +#////////////////////////////////////////////////////////////////////// +#持仓处理算法 +defineDict["THOST_FTDC_AT_HandlePositionAlgo"] = '1' +#寻找保证金率算法 +defineDict["THOST_FTDC_AT_FindMarginRateAlgo"] = '2' + +typedefDict["TThostFtdcAlgoTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHandlePositionAlgoIDType是一个持仓处理算法编号类型 +#////////////////////////////////////////////////////////////////////// +#基本 +defineDict["THOST_FTDC_HPA_Base"] = '1' +#大连商品交易所 +defineDict["THOST_FTDC_HPA_DCE"] = '2' +#郑州商品交易所 +defineDict["THOST_FTDC_HPA_CZCE"] = '3' + +typedefDict["TThostFtdcHandlePositionAlgoIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFindMarginRateAlgoIDType是一个寻找保证金率算法编号类型 +#////////////////////////////////////////////////////////////////////// +#基本 +defineDict["THOST_FTDC_FMRA_Base"] = '1' +#大连商品交易所 +defineDict["THOST_FTDC_FMRA_DCE"] = '2' +#郑州商品交易所 +defineDict["THOST_FTDC_FMRA_CZCE"] = '3' + +typedefDict["TThostFtdcFindMarginRateAlgoIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHandleTradingAccountAlgoIDType是一个资金处理算法编号类型 +#////////////////////////////////////////////////////////////////////// +#基本 +defineDict["THOST_FTDC_HTAA_Base"] = '1' +#大连商品交易所 +defineDict["THOST_FTDC_HTAA_DCE"] = '2' +#郑州商品交易所 +defineDict["THOST_FTDC_HTAA_CZCE"] = '3' + +typedefDict["TThostFtdcHandleTradingAccountAlgoIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPersonTypeType是一个联系人类型类型 +#////////////////////////////////////////////////////////////////////// +#指定下单人 +defineDict["THOST_FTDC_PST_Order"] = '1' +#开户授权人 +defineDict["THOST_FTDC_PST_Open"] = '2' +#资金调拨人 +defineDict["THOST_FTDC_PST_Fund"] = '3' +#结算单确认人 +defineDict["THOST_FTDC_PST_Settlement"] = '4' +#法人 +defineDict["THOST_FTDC_PST_Company"] = '5' +#法人代表 +defineDict["THOST_FTDC_PST_Corporation"] = '6' +#投资者联系人 +defineDict["THOST_FTDC_PST_LinkMan"] = '7' +#分户管理资产负责人 +defineDict["THOST_FTDC_PST_Ledger"] = '8' +#托(保)管人 +defineDict["THOST_FTDC_PST_Trustee"] = '9' +#托(保)管机构法人代表 +defineDict["THOST_FTDC_PST_TrusteeCorporation"] = 'A' +#托(保)管机构开户授权人 +defineDict["THOST_FTDC_PST_TrusteeOpen"] = 'B' +#托(保)管机构联系人 +defineDict["THOST_FTDC_PST_TrusteeContact"] = 'C' +#境外自然人参考证件 +defineDict["THOST_FTDC_PST_ForeignerRefer"] = 'D' +#法人代表参考证件 +defineDict["THOST_FTDC_PST_CorporationRefer"] = 'E' + +typedefDict["TThostFtdcPersonTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQueryInvestorRangeType是一个查询范围类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_QIR_All"] = '1' +#查询分类 +defineDict["THOST_FTDC_QIR_Group"] = '2' +#单一投资者 +defineDict["THOST_FTDC_QIR_Single"] = '3' + +typedefDict["TThostFtdcQueryInvestorRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorRiskStatusType是一个投资者风险状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_IRS_Normal"] = '1' +#警告 +defineDict["THOST_FTDC_IRS_Warn"] = '2' +#追保 +defineDict["THOST_FTDC_IRS_Call"] = '3' +#强平 +defineDict["THOST_FTDC_IRS_Force"] = '4' +#异常 +defineDict["THOST_FTDC_IRS_Exception"] = '5' + +typedefDict["TThostFtdcInvestorRiskStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLegIDType是一个单腿编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLegIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLegMultipleType是一个单腿乘数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLegMultipleType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcImplyLevelType是一个派生层数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcImplyLevelType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearAccountType是一个结算账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClearAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganNOType是一个结算账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrganNOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearbarchIDType是一个结算账户联行号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClearbarchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserEventTypeType是一个用户事件类型类型 +#////////////////////////////////////////////////////////////////////// +#登录 +defineDict["THOST_FTDC_UET_Login"] = '1' +#登出 +defineDict["THOST_FTDC_UET_Logout"] = '2' +#交易成功 +defineDict["THOST_FTDC_UET_Trading"] = '3' +#交易失败 +defineDict["THOST_FTDC_UET_TradingError"] = '4' +#修改密码 +defineDict["THOST_FTDC_UET_UpdatePassword"] = '5' +#客户端认证 +defineDict["THOST_FTDC_UET_Authenticate"] = '6' +#其他 +defineDict["THOST_FTDC_UET_Other"] = '9' + +typedefDict["TThostFtdcUserEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserEventInfoType是一个用户事件信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserEventInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCloseStyleType是一个平仓方式类型 +#////////////////////////////////////////////////////////////////////// +#先开先平 +defineDict["THOST_FTDC_ICS_Close"] = '0' +#先平今再平昨 +defineDict["THOST_FTDC_ICS_CloseToday"] = '1' + +typedefDict["TThostFtdcCloseStyleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStatModeType是一个统计方式类型 +#////////////////////////////////////////////////////////////////////// +#---- +defineDict["THOST_FTDC_SM_Non"] = '0' +#按合约统计 +defineDict["THOST_FTDC_SM_Instrument"] = '1' +#按产品统计 +defineDict["THOST_FTDC_SM_Product"] = '2' +#按投资者统计 +defineDict["THOST_FTDC_SM_Investor"] = '3' + +typedefDict["TThostFtdcStatModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderStatusType是一个预埋单状态类型 +#////////////////////////////////////////////////////////////////////// +#未发送 +defineDict["THOST_FTDC_PAOS_NotSend"] = '1' +#已发送 +defineDict["THOST_FTDC_PAOS_Send"] = '2' +#已删除 +defineDict["THOST_FTDC_PAOS_Deleted"] = '3' + +typedefDict["TThostFtdcParkedOrderStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderIDType是一个预埋报单编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParkedOrderIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderActionIDType是一个预埋撤单编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParkedOrderActionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirDealStatusType是一个处理状态类型 +#////////////////////////////////////////////////////////////////////// +#正在处理 +defineDict["THOST_FTDC_VDS_Dealing"] = '1' +#处理成功 +defineDict["THOST_FTDC_VDS_DeaclSucceed"] = '2' + +typedefDict["TThostFtdcVirDealStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrgSystemIDType是一个原有系统代码类型 +#////////////////////////////////////////////////////////////////////// +#综合交易平台 +defineDict["THOST_FTDC_ORGS_Standard"] = '0' +#易盛系统 +defineDict["THOST_FTDC_ORGS_ESunny"] = '1' +#金仕达V6系统 +defineDict["THOST_FTDC_ORGS_KingStarV6"] = '2' + +typedefDict["TThostFtdcOrgSystemIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirTradeStatusType是一个交易状态类型 +#////////////////////////////////////////////////////////////////////// +#正常处理中 +defineDict["THOST_FTDC_VTS_NaturalDeal"] = '0' +#成功结束 +defineDict["THOST_FTDC_VTS_SucceedEnd"] = '1' +#失败结束 +defineDict["THOST_FTDC_VTS_FailedEND"] = '2' +#异常中 +defineDict["THOST_FTDC_VTS_Exception"] = '3' +#已人工异常处理 +defineDict["THOST_FTDC_VTS_ManualDeal"] = '4' +#通讯异常 ,请人工处理 +defineDict["THOST_FTDC_VTS_MesException"] = '5' +#系统出错,请人工处理 +defineDict["THOST_FTDC_VTS_SysException"] = '6' + +typedefDict["TThostFtdcVirTradeStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirBankAccTypeType是一个银行帐户类型类型 +#////////////////////////////////////////////////////////////////////// +#存折 +defineDict["THOST_FTDC_VBAT_BankBook"] = '1' +#储蓄卡 +defineDict["THOST_FTDC_VBAT_BankCard"] = '2' +#信用卡 +defineDict["THOST_FTDC_VBAT_CreditCard"] = '3' + +typedefDict["TThostFtdcVirBankAccTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementStatusType是一个银行帐户类型类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_VMS_Natural"] = '0' +#销户 +defineDict["THOST_FTDC_VMS_Canceled"] = '9' + +typedefDict["TThostFtdcVirementStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementAvailAbilityType是一个有效标志类型 +#////////////////////////////////////////////////////////////////////// +#未确认 +defineDict["THOST_FTDC_VAA_NoAvailAbility"] = '0' +#有效 +defineDict["THOST_FTDC_VAA_AvailAbility"] = '1' +#冲正 +defineDict["THOST_FTDC_VAA_Repeal"] = '2' + +typedefDict["TThostFtdcVirementAvailAbilityType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementTradeCodeType是一个交易代码类型 +#////////////////////////////////////////////////////////////////////// +#银行发起银行资金转期货 +defineDict["THOST_FTDC_VTC_BankBankToFuture"] = '102001' +#银行发起期货资金转银行 +defineDict["THOST_FTDC_VTC_BankFutureToBank"] = '102002' +#期货发起银行资金转期货 +defineDict["THOST_FTDC_VTC_FutureBankToFuture"] = '202001' +#期货发起期货资金转银行 +defineDict["THOST_FTDC_VTC_FutureFutureToBank"] = '202002' + +typedefDict["TThostFtdcVirementTradeCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoTypeNameType是一个影像类型名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPhotoTypeNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoTypeIDType是一个影像类型代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPhotoTypeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoNameType是一个影像名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPhotoNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTopicIDType是一个主题代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTopicIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReportTypeIDType是一个交易报告类型标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcReportTypeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCharacterIDType是一个交易特征代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCharacterIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLParamIDType是一个参数代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInvestorTypeType是一个投资者类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLInvestorTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLIdCardTypeType是一个证件类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLIdCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradeDirectType是一个资金进出方向类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLTradeDirectType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradeModelType是一个资金进出方式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLTradeModelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLParamIDType是一个参数代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLOpParamValueType是一个业务参数代码值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLOpParamValueType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCustomerCardTypeType是一个客户身份证件/证明文件类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLCustomerCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionNameType是一个金融机构网点名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLInstitutionNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLDistrictIDType是一个金融机构网点所在地区行政区划代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLDistrictIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLRelationShipType是一个金融机构网点与大额交易的关系类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLRelationShipType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionTypeType是一个金融机构网点代码类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLInstitutionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionIDType是一个金融机构网点代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLInstitutionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLAccountTypeType是一个账户类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLAccountTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradingTypeType是一个交易方式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLTradingTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTransactClassType是一个涉外收支交易分类与代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLTransactClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCapitalIOType是一个资金收付标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLCapitalIOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSiteType是一个交易地点类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLSiteType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCapitalPurposeType是一个资金用途类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLCapitalPurposeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLReportTypeType是一个报文类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLReportTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSerialNoType是一个编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLSerialNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLStatusType是一个状态类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLGenStatusType是一个Aml生成方式类型 +#////////////////////////////////////////////////////////////////////// +#程序生成 +defineDict["THOST_FTDC_GEN_Program"] = '0' +#人工生成 +defineDict["THOST_FTDC_GEN_HandWork"] = '1' + +typedefDict["TThostFtdcAMLGenStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSeqCodeType是一个业务标识号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLSeqCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLFileNameType是一个AML文件名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLMoneyType是一个反洗钱资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLFileAmountType是一个反洗钱资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLFileAmountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCFMMCKeyType是一个密钥类型(保证金监管)类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCFMMCKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCFMMCKeyKindType是一个动态密钥类别(保证金监管)类型 +#////////////////////////////////////////////////////////////////////// +#主动请求更新 +defineDict["THOST_FTDC_CFMMCKK_REQUEST"] = 'R' +#CFMMC自动更新 +defineDict["THOST_FTDC_CFMMCKK_AUTO"] = 'A' +#CFMMC手动更新 +defineDict["THOST_FTDC_CFMMCKK_MANUAL"] = 'M' + +typedefDict["TThostFtdcCFMMCKeyKindType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLReportNameType是一个报文名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAMLReportNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIndividualNameType是一个个人姓名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIndividualNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyIDType是一个币种代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencyIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustNumberType是一个客户编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCustNumberType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganCodeType是一个机构编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrganCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganNameType是一个机构名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrganNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSuperOrganCodeType是一个上级机构编码,即期货公司总部、银行总行类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSuperOrganCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubBranchIDType是一个分支机构类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSubBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubBranchNameType是一个分支机构名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSubBranchNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBranchNetCodeType是一个机构网点号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBranchNetCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBranchNetNameType是一个机构网点名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBranchNetNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganFlagType是一个机构标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOrganFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankCodingForFutureType是一个银行对期货公司的编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankCodingForFutureType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankReturnCodeType是一个银行对返回码的定义类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPlateReturnCodeType是一个银期转帐平台对返回码的定义类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPlateReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankSubBranchIDType是一个银行分支机构编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankSubBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureBranchIDType是一个期货分支机构编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnCodeType是一个返回代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperatorCodeType是一个操作员类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOperatorCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearDepIDType是一个机构结算帐户机构号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClearDepIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearBrchIDType是一个机构结算帐户联行号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClearBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearNameType是一个机构结算帐户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClearNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccountNameType是一个银行帐户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankAccountNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvDepIDType是一个机构投资人账号机构号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvDepIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvBrchIDType是一个机构投资人联行号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMessageFormatVersionType是一个信息格式版本类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMessageFormatVersionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDigestType是一个摘要类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDigestType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthenticDataType是一个认证数据类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAuthenticDataType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordKeyType是一个密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPasswordKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccountNameType是一个期货帐户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureAccountNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMobilePhoneType是一个手机类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcMobilePhoneType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureMainKeyType是一个期货公司主密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureMainKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureWorkKeyType是一个期货公司工作密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureWorkKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureTransKeyType是一个期货公司传输密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureTransKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankMainKeyType是一个银行主密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankMainKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankWorkKeyType是一个银行工作密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankWorkKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankTransKeyType是一个银行传输密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankTransKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankServerDescriptionType是一个银行服务器描述信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankServerDescriptionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAddInfoType是一个附加信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAddInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDescrInfoForReturnCodeType是一个返回码描述类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDescrInfoForReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCountryCodeType是一个国家代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCountryCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSerialType是一个流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPlateSerialType是一个平台流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPlateSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankSerialType是一个银行流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCorrectSerialType是一个被冲正交易流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCorrectSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureSerialType是一个期货公司流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplicationIDType是一个应用标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcApplicationIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankProxyIDType是一个银行代理标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankProxyIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTCoreIDType是一个银期转帐核心系统标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBTCoreIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServerPortType是一个服务端口号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcServerPortType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRepealedTimesType是一个已经冲正次数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRepealedTimesType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRepealTimeIntervalType是一个冲正时间间隔类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRepealTimeIntervalType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTotalTimesType是一个每日累计转帐次数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTotalTimesType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTRequestIDType是一个请求ID类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBTRequestIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTIDType是一个交易ID类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeAmountType是一个交易金额(元)类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeAmountType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustFeeType是一个应收客户费用(元)类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCustFeeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureFeeType是一个应收期货公司费用(元)类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFutureFeeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSingleMaxAmtType是一个单笔最高限额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSingleMaxAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSingleMinAmtType是一个单笔最低限额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSingleMinAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTotalAmtType是一个每日累计转帐额度类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTotalAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCertificationTypeType是一个证件类型类型 +#////////////////////////////////////////////////////////////////////// +#身份证 +defineDict["THOST_FTDC_CFT_IDCard"] = '0' +#护照 +defineDict["THOST_FTDC_CFT_Passport"] = '1' +#军官证 +defineDict["THOST_FTDC_CFT_OfficerIDCard"] = '2' +#士兵证 +defineDict["THOST_FTDC_CFT_SoldierIDCard"] = '3' +#回乡证 +defineDict["THOST_FTDC_CFT_HomeComingCard"] = '4' +#户口簿 +defineDict["THOST_FTDC_CFT_HouseholdRegister"] = '5' +#营业执照号 +defineDict["THOST_FTDC_CFT_LicenseNo"] = '6' +#组织机构代码证 +defineDict["THOST_FTDC_CFT_InstitutionCodeCard"] = '7' +#临时营业执照号 +defineDict["THOST_FTDC_CFT_TempLicenseNo"] = '8' +#民办非企业登记证书 +defineDict["THOST_FTDC_CFT_NoEnterpriseLicenseNo"] = '9' +#其他证件 +defineDict["THOST_FTDC_CFT_OtherCard"] = 'x' +#主管部门批文 +defineDict["THOST_FTDC_CFT_SuperDepAgree"] = 'a' + +typedefDict["TThostFtdcCertificationTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileBusinessCodeType是一个文件业务功能类型 +#////////////////////////////////////////////////////////////////////// +#其他 +defineDict["THOST_FTDC_FBC_Others"] = '0' +#转账交易明细对账 +defineDict["THOST_FTDC_FBC_TransferDetails"] = '1' +#客户账户状态对账 +defineDict["THOST_FTDC_FBC_CustAccStatus"] = '2' +#账户类交易明细对账 +defineDict["THOST_FTDC_FBC_AccountTradeDetails"] = '3' +#期货账户信息变更明细对账 +defineDict["THOST_FTDC_FBC_FutureAccountChangeInfoDetails"] = '4' +#客户资金台账余额明细对账 +defineDict["THOST_FTDC_FBC_CustMoneyDetail"] = '5' +#客户销户结息明细对账 +defineDict["THOST_FTDC_FBC_CustCancelAccountInfo"] = '6' +#客户资金余额对账结果 +defineDict["THOST_FTDC_FBC_CustMoneyResult"] = '7' +#其它对账异常结果文件 +defineDict["THOST_FTDC_FBC_OthersExceptionResult"] = '8' +#客户结息净额明细 +defineDict["THOST_FTDC_FBC_CustInterestNetMoneyDetails"] = '9' +#客户资金交收明细 +defineDict["THOST_FTDC_FBC_CustMoneySendAndReceiveDetails"] = 'a' +#法人存管银行资金交收汇总 +defineDict["THOST_FTDC_FBC_CorporationMoneyTotal"] = 'b' +#主体间资金交收汇总 +defineDict["THOST_FTDC_FBC_MainbodyMoneyTotal"] = 'c' +#总分平衡监管数据 +defineDict["THOST_FTDC_FBC_MainPartMonitorData"] = 'd' +#存管银行备付金余额 +defineDict["THOST_FTDC_FBC_PreparationMoney"] = 'e' +#协办存管银行资金监管数据 +defineDict["THOST_FTDC_FBC_BankMoneyMonitorData"] = 'f' + +typedefDict["TThostFtdcFileBusinessCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCashExchangeCodeType是一个汇钞标志类型 +#////////////////////////////////////////////////////////////////////// +#汇 +defineDict["THOST_FTDC_CEC_Exchange"] = '1' +#钞 +defineDict["THOST_FTDC_CEC_Cash"] = '2' + +typedefDict["TThostFtdcCashExchangeCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYesNoIndicatorType是一个是或否标识类型 +#////////////////////////////////////////////////////////////////////// +#是 +defineDict["THOST_FTDC_YNI_Yes"] = '0' +#否 +defineDict["THOST_FTDC_YNI_No"] = '1' + +typedefDict["TThostFtdcYesNoIndicatorType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBanlanceTypeType是一个余额类型类型 +#////////////////////////////////////////////////////////////////////// +#当前余额 +defineDict["THOST_FTDC_BLT_CurrentMoney"] = '0' +#可用余额 +defineDict["THOST_FTDC_BLT_UsableMoney"] = '1' +#可取余额 +defineDict["THOST_FTDC_BLT_FetchableMoney"] = '2' +#冻结余额 +defineDict["THOST_FTDC_BLT_FreezeMoney"] = '3' + +typedefDict["TThostFtdcBanlanceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcGenderType是一个性别类型 +#////////////////////////////////////////////////////////////////////// +#未知状态 +defineDict["THOST_FTDC_GD_Unknown"] = '0' +#男 +defineDict["THOST_FTDC_GD_Male"] = '1' +#女 +defineDict["THOST_FTDC_GD_Female"] = '2' + +typedefDict["TThostFtdcGenderType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFeePayFlagType是一个费用支付标志类型 +#////////////////////////////////////////////////////////////////////// +#由受益方支付费用 +defineDict["THOST_FTDC_FPF_BEN"] = '0' +#由发送方支付费用 +defineDict["THOST_FTDC_FPF_OUR"] = '1' +#由发送方支付发起的费用,受益方支付接受的费用 +defineDict["THOST_FTDC_FPF_SHA"] = '2' + +typedefDict["TThostFtdcFeePayFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPassWordKeyTypeType是一个密钥类型类型 +#////////////////////////////////////////////////////////////////////// +#交换密钥 +defineDict["THOST_FTDC_PWKT_ExchangeKey"] = '0' +#密码密钥 +defineDict["THOST_FTDC_PWKT_PassWordKey"] = '1' +#MAC密钥 +defineDict["THOST_FTDC_PWKT_MACKey"] = '2' +#报文密钥 +defineDict["THOST_FTDC_PWKT_MessageKey"] = '3' + +typedefDict["TThostFtdcPassWordKeyTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTPassWordTypeType是一个密码类型类型 +#////////////////////////////////////////////////////////////////////// +#查询 +defineDict["THOST_FTDC_PWT_Query"] = '0' +#取款 +defineDict["THOST_FTDC_PWT_Fetch"] = '1' +#转帐 +defineDict["THOST_FTDC_PWT_Transfer"] = '2' +#交易 +defineDict["THOST_FTDC_PWT_Trade"] = '3' + +typedefDict["TThostFtdcFBTPassWordTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTEncryModeType是一个加密方式类型 +#////////////////////////////////////////////////////////////////////// +#不加密 +defineDict["THOST_FTDC_EM_NoEncry"] = '0' +#DES +defineDict["THOST_FTDC_EM_DES"] = '1' +#3DES +defineDict["THOST_FTDC_EM_3DES"] = '2' + +typedefDict["TThostFtdcFBTEncryModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankRepealFlagType是一个银行冲正标志类型 +#////////////////////////////////////////////////////////////////////// +#银行无需自动冲正 +defineDict["THOST_FTDC_BRF_BankNotNeedRepeal"] = '0' +#银行待自动冲正 +defineDict["THOST_FTDC_BRF_BankWaitingRepeal"] = '1' +#银行已自动冲正 +defineDict["THOST_FTDC_BRF_BankBeenRepealed"] = '2' + +typedefDict["TThostFtdcBankRepealFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerRepealFlagType是一个期商冲正标志类型 +#////////////////////////////////////////////////////////////////////// +#期商无需自动冲正 +defineDict["THOST_FTDC_BRORF_BrokerNotNeedRepeal"] = '0' +#期商待自动冲正 +defineDict["THOST_FTDC_BRORF_BrokerWaitingRepeal"] = '1' +#期商已自动冲正 +defineDict["THOST_FTDC_BRORF_BrokerBeenRepealed"] = '2' + +typedefDict["TThostFtdcBrokerRepealFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstitutionTypeType是一个机构类别类型 +#////////////////////////////////////////////////////////////////////// +#银行 +defineDict["THOST_FTDC_TS_Bank"] = '0' +#期商 +defineDict["THOST_FTDC_TS_Future"] = '1' +#券商 +defineDict["THOST_FTDC_TS_Store"] = '2' + +typedefDict["TThostFtdcInstitutionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastFragmentType是一个最后分片标志类型 +#////////////////////////////////////////////////////////////////////// +#是最后分片 +defineDict["THOST_FTDC_LF_Yes"] = '0' +#不是最后分片 +defineDict["THOST_FTDC_LF_No"] = '1' + +typedefDict["TThostFtdcLastFragmentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccStatusType是一个银行账户状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_BAS_Normal"] = '0' +#冻结 +defineDict["THOST_FTDC_BAS_Freeze"] = '1' +#挂失 +defineDict["THOST_FTDC_BAS_ReportLoss"] = '2' + +typedefDict["TThostFtdcBankAccStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMoneyAccountStatusType是一个资金账户状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_MAS_Normal"] = '0' +#销户 +defineDict["THOST_FTDC_MAS_Cancel"] = '1' + +typedefDict["TThostFtdcMoneyAccountStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcManageStatusType是一个存管状态类型 +#////////////////////////////////////////////////////////////////////// +#指定存管 +defineDict["THOST_FTDC_MSS_Point"] = '0' +#预指定 +defineDict["THOST_FTDC_MSS_PrePoint"] = '1' +#撤销指定 +defineDict["THOST_FTDC_MSS_CancelPoint"] = '2' + +typedefDict["TThostFtdcManageStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemTypeType是一个应用系统类型类型 +#////////////////////////////////////////////////////////////////////// +#银期转帐 +defineDict["THOST_FTDC_SYT_FutureBankTransfer"] = '0' +#银证转帐 +defineDict["THOST_FTDC_SYT_StockBankTransfer"] = '1' +#第三方存管 +defineDict["THOST_FTDC_SYT_TheThirdPartStore"] = '2' + +typedefDict["TThostFtdcSystemTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTxnEndFlagType是一个银期转帐划转结果标志类型 +#////////////////////////////////////////////////////////////////////// +#正常处理中 +defineDict["THOST_FTDC_TEF_NormalProcessing"] = '0' +#成功结束 +defineDict["THOST_FTDC_TEF_Success"] = '1' +#失败结束 +defineDict["THOST_FTDC_TEF_Failed"] = '2' +#异常中 +defineDict["THOST_FTDC_TEF_Abnormal"] = '3' +#已人工异常处理 +defineDict["THOST_FTDC_TEF_ManualProcessedForException"] = '4' +#通讯异常 ,请人工处理 +defineDict["THOST_FTDC_TEF_CommuFailedNeedManualProcess"] = '5' +#系统出错,请人工处理 +defineDict["THOST_FTDC_TEF_SysErrorNeedManualProcess"] = '6' + +typedefDict["TThostFtdcTxnEndFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessStatusType是一个银期转帐服务处理状态类型 +#////////////////////////////////////////////////////////////////////// +#未处理 +defineDict["THOST_FTDC_PSS_NotProcess"] = '0' +#开始处理 +defineDict["THOST_FTDC_PSS_StartProcess"] = '1' +#处理完成 +defineDict["THOST_FTDC_PSS_Finished"] = '2' + +typedefDict["TThostFtdcProcessStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustTypeType是一个客户类型类型 +#////////////////////////////////////////////////////////////////////// +#自然人 +defineDict["THOST_FTDC_CUSTT_Person"] = '0' +#机构户 +defineDict["THOST_FTDC_CUSTT_Institution"] = '1' + +typedefDict["TThostFtdcCustTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTTransferDirectionType是一个银期转帐方向类型 +#////////////////////////////////////////////////////////////////////// +#入金,银行转期货 +defineDict["THOST_FTDC_FBTTD_FromBankToFuture"] = '1' +#出金,期货转银行 +defineDict["THOST_FTDC_FBTTD_FromFutureToBank"] = '2' + +typedefDict["TThostFtdcFBTTransferDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenOrDestroyType是一个开销户类别类型 +#////////////////////////////////////////////////////////////////////// +#开户 +defineDict["THOST_FTDC_OOD_Open"] = '1' +#销户 +defineDict["THOST_FTDC_OOD_Destroy"] = '0' + +typedefDict["TThostFtdcOpenOrDestroyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAvailabilityFlagType是一个有效标志类型 +#////////////////////////////////////////////////////////////////////// +#未确认 +defineDict["THOST_FTDC_AVAF_Invalid"] = '0' +#有效 +defineDict["THOST_FTDC_AVAF_Valid"] = '1' +#冲正 +defineDict["THOST_FTDC_AVAF_Repeal"] = '2' + +typedefDict["TThostFtdcAvailabilityFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganTypeType是一个机构类型类型 +#////////////////////////////////////////////////////////////////////// +#银行代理 +defineDict["THOST_FTDC_OT_Bank"] = '1' +#交易前置 +defineDict["THOST_FTDC_OT_Future"] = '2' +#银期转帐平台管理 +defineDict["THOST_FTDC_OT_PlateForm"] = '9' + +typedefDict["TThostFtdcOrganTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganLevelType是一个机构级别类型 +#////////////////////////////////////////////////////////////////////// +#银行总行或期商总部 +defineDict["THOST_FTDC_OL_HeadQuarters"] = '1' +#银行分中心或期货公司营业部 +defineDict["THOST_FTDC_OL_Branch"] = '2' + +typedefDict["TThostFtdcOrganLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProtocalIDType是一个协议类型类型 +#////////////////////////////////////////////////////////////////////// +#期商协议 +defineDict["THOST_FTDC_PID_FutureProtocal"] = '0' +#工行协议 +defineDict["THOST_FTDC_PID_ICBCProtocal"] = '1' +#农行协议 +defineDict["THOST_FTDC_PID_ABCProtocal"] = '2' +#中国银行协议 +defineDict["THOST_FTDC_PID_CBCProtocal"] = '3' +#建行协议 +defineDict["THOST_FTDC_PID_CCBProtocal"] = '4' +#交行协议 +defineDict["THOST_FTDC_PID_BOCOMProtocal"] = '5' +#银期转帐平台协议 +defineDict["THOST_FTDC_PID_FBTPlateFormProtocal"] = 'X' + +typedefDict["TThostFtdcProtocalIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcConnectModeType是一个套接字连接方式类型 +#////////////////////////////////////////////////////////////////////// +#短连接 +defineDict["THOST_FTDC_CM_ShortConnect"] = '0' +#长连接 +defineDict["THOST_FTDC_CM_LongConnect"] = '1' + +typedefDict["TThostFtdcConnectModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncModeType是一个套接字通信方式类型 +#////////////////////////////////////////////////////////////////////// +#异步 +defineDict["THOST_FTDC_SRM_ASync"] = '0' +#同步 +defineDict["THOST_FTDC_SRM_Sync"] = '1' + +typedefDict["TThostFtdcSyncModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccTypeType是一个银行帐号类型类型 +#////////////////////////////////////////////////////////////////////// +#银行存折 +defineDict["THOST_FTDC_BAT_BankBook"] = '1' +#储蓄卡 +defineDict["THOST_FTDC_BAT_SavingCard"] = '2' +#信用卡 +defineDict["THOST_FTDC_BAT_CreditCard"] = '3' + +typedefDict["TThostFtdcBankAccTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccTypeType是一个期货公司帐号类型类型 +#////////////////////////////////////////////////////////////////////// +#银行存折 +defineDict["THOST_FTDC_FAT_BankBook"] = '1' +#储蓄卡 +defineDict["THOST_FTDC_FAT_SavingCard"] = '2' +#信用卡 +defineDict["THOST_FTDC_FAT_CreditCard"] = '3' + +typedefDict["TThostFtdcFutureAccTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganStatusType是一个接入机构状态类型 +#////////////////////////////////////////////////////////////////////// +#启用 +defineDict["THOST_FTDC_OS_Ready"] = '0' +#签到 +defineDict["THOST_FTDC_OS_CheckIn"] = '1' +#签退 +defineDict["THOST_FTDC_OS_CheckOut"] = '2' +#对帐文件到达 +defineDict["THOST_FTDC_OS_CheckFileArrived"] = '3' +#对帐 +defineDict["THOST_FTDC_OS_CheckDetail"] = '4' +#日终清理 +defineDict["THOST_FTDC_OS_DayEndClean"] = '5' +#注销 +defineDict["THOST_FTDC_OS_Invalid"] = '9' + +typedefDict["TThostFtdcOrganStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCCBFeeModeType是一个建行收费模式类型 +#////////////////////////////////////////////////////////////////////// +#按金额扣收 +defineDict["THOST_FTDC_CCBFM_ByAmount"] = '1' +#按月扣收 +defineDict["THOST_FTDC_CCBFM_ByMonth"] = '2' + +typedefDict["TThostFtdcCCBFeeModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommApiTypeType是一个通讯API类型类型 +#////////////////////////////////////////////////////////////////////// +#客户端 +defineDict["THOST_FTDC_CAPIT_Client"] = '1' +#服务端 +defineDict["THOST_FTDC_CAPIT_Server"] = '2' +#交易系统的UserApi +defineDict["THOST_FTDC_CAPIT_UserApi"] = '3' + +typedefDict["TThostFtdcCommApiTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceIDType是一个服务编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcServiceIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceLineNoType是一个服务线路编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcServiceLineNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceNameType是一个服务名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcServiceNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLinkStatusType是一个连接状态类型 +#////////////////////////////////////////////////////////////////////// +#已经连接 +defineDict["THOST_FTDC_LS_Connected"] = '1' +#没有连接 +defineDict["THOST_FTDC_LS_Disconnected"] = '2' + +typedefDict["TThostFtdcLinkStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommApiPointerType是一个通讯API指针类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommApiPointerType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPwdFlagType是一个密码核对标志类型 +#////////////////////////////////////////////////////////////////////// +#不核对 +defineDict["THOST_FTDC_BPWDF_NoCheck"] = '0' +#明文核对 +defineDict["THOST_FTDC_BPWDF_BlankCheck"] = '1' +#密文核对 +defineDict["THOST_FTDC_BPWDF_EncryptCheck"] = '2' + +typedefDict["TThostFtdcPwdFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSecuAccTypeType是一个期货帐号类型类型 +#////////////////////////////////////////////////////////////////////// +#资金帐号 +defineDict["THOST_FTDC_SAT_AccountID"] = '1' +#资金卡号 +defineDict["THOST_FTDC_SAT_CardID"] = '2' +#上海股东帐号 +defineDict["THOST_FTDC_SAT_SHStockholderID"] = '3' +#深圳股东帐号 +defineDict["THOST_FTDC_SAT_SZStockholderID"] = '4' + +typedefDict["TThostFtdcSecuAccTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferStatusType是一个转账交易状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_TRFS_Normal"] = '0' +#被冲正 +defineDict["THOST_FTDC_TRFS_Repealed"] = '1' + +typedefDict["TThostFtdcTransferStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSponsorTypeType是一个发起方类型 +#////////////////////////////////////////////////////////////////////// +#期商 +defineDict["THOST_FTDC_SPTYPE_Broker"] = '0' +#银行 +defineDict["THOST_FTDC_SPTYPE_Bank"] = '1' + +typedefDict["TThostFtdcSponsorTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReqRspTypeType是一个请求响应类别类型 +#////////////////////////////////////////////////////////////////////// +#请求 +defineDict["THOST_FTDC_REQRSP_Request"] = '0' +#响应 +defineDict["THOST_FTDC_REQRSP_Response"] = '1' + +typedefDict["TThostFtdcReqRspTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTUserEventTypeType是一个银期转帐用户事件类型类型 +#////////////////////////////////////////////////////////////////////// +#签到 +defineDict["THOST_FTDC_FBTUET_SignIn"] = '0' +#银行转期货 +defineDict["THOST_FTDC_FBTUET_FromBankToFuture"] = '1' +#期货转银行 +defineDict["THOST_FTDC_FBTUET_FromFutureToBank"] = '2' +#开户 +defineDict["THOST_FTDC_FBTUET_OpenAccount"] = '3' +#销户 +defineDict["THOST_FTDC_FBTUET_CancelAccount"] = '4' +#变更银行账户 +defineDict["THOST_FTDC_FBTUET_ChangeAccount"] = '5' +#冲正银行转期货 +defineDict["THOST_FTDC_FBTUET_RepealFromBankToFuture"] = '6' +#冲正期货转银行 +defineDict["THOST_FTDC_FBTUET_RepealFromFutureToBank"] = '7' +#查询银行账户 +defineDict["THOST_FTDC_FBTUET_QueryBankAccount"] = '8' +#查询期货账户 +defineDict["THOST_FTDC_FBTUET_QueryFutureAccount"] = '9' +#签退 +defineDict["THOST_FTDC_FBTUET_SignOut"] = 'A' +#密钥同步 +defineDict["THOST_FTDC_FBTUET_SyncKey"] = 'B' +#其他 +defineDict["THOST_FTDC_FBTUET_Other"] = 'Z' + +typedefDict["TThostFtdcFBTUserEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankIDByBankType是一个银行自己的编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankIDByBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankOperNoType是一个银行操作员号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankOperNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankCustNoType是一个银行客户号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankCustNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDBOPSeqNoType是一个递增的序列号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDBOPSeqNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTableNameType是一个FBT表名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTableNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPKNameType是一个FBT表操作主键名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPKNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPKValueType是一个FBT表操作主键值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPKValueType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDBOperationType是一个记录操作类型类型 +#////////////////////////////////////////////////////////////////////// +#插入 +defineDict["THOST_FTDC_DBOP_Insert"] = '0' +#更新 +defineDict["THOST_FTDC_DBOP_Update"] = '1' +#删除 +defineDict["THOST_FTDC_DBOP_Delete"] = '2' + +typedefDict["TThostFtdcDBOperationType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncFlagType是一个同步标记类型 +#////////////////////////////////////////////////////////////////////// +#已同步 +defineDict["THOST_FTDC_SYNF_Yes"] = '0' +#未同步 +defineDict["THOST_FTDC_SYNF_No"] = '1' + +typedefDict["TThostFtdcSyncFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTargetIDType是一个同步目标编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTargetIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncTypeType是一个同步类型类型 +#////////////////////////////////////////////////////////////////////// +#一次同步 +defineDict["THOST_FTDC_SYNT_OneOffSync"] = '0' +#定时同步 +defineDict["THOST_FTDC_SYNT_TimerSync"] = '1' +#定时完全同步 +defineDict["THOST_FTDC_SYNT_TimerFullSync"] = '2' + +typedefDict["TThostFtdcSyncTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBETimeType是一个各种换汇时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBETimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBankNoType是一个换汇银行行号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBankNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBECertNoType是一个换汇凭证号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBECertNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExDirectionType是一个换汇方向类型 +#////////////////////////////////////////////////////////////////////// +#结汇 +defineDict["THOST_FTDC_FBEDIR_Settlement"] = '0' +#售汇 +defineDict["THOST_FTDC_FBEDIR_Sale"] = '1' + +typedefDict["TThostFtdcExDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBankAccountType是一个换汇银行账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBankAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBankAccountNameType是一个换汇银行账户名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBankAccountNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEAmtType是一个各种换汇金额类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBusinessTypeType是一个换汇业务类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBusinessTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEPostScriptType是一个换汇附言类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEPostScriptType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBERemarkType是一个换汇备注类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBERemarkType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExRateType是一个换汇汇率类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExRateType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEResultFlagType是一个换汇成功标志类型 +#////////////////////////////////////////////////////////////////////// +#成功 +defineDict["THOST_FTDC_FBERES_Success"] = '0' +#账户余额不足 +defineDict["THOST_FTDC_FBERES_InsufficientBalance"] = '1' +#交易结果未知 +defineDict["THOST_FTDC_FBERES_UnknownTrading"] = '8' +#失败 +defineDict["THOST_FTDC_FBERES_Fail"] = 'x' + +typedefDict["TThostFtdcFBEResultFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBERtnMsgType是一个换汇返回信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBERtnMsgType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEExtendMsgType是一个换汇扩展信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEExtendMsgType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBusinessSerialType是一个换汇记账流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBusinessSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBESystemSerialType是一个换汇流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBESystemSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBETotalExCntType是一个换汇交易总笔数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBETotalExCntType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEExchStatusType是一个换汇交易状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_FBEES_Normal"] = '0' +#交易重发 +defineDict["THOST_FTDC_FBEES_ReExchange"] = '1' + +typedefDict["TThostFtdcFBEExchStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEFileFlagType是一个换汇文件标志类型 +#////////////////////////////////////////////////////////////////////// +#数据包 +defineDict["THOST_FTDC_FBEFG_DataPackage"] = '0' +#文件 +defineDict["THOST_FTDC_FBEFG_File"] = '1' + +typedefDict["TThostFtdcFBEFileFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEAlreadyTradeType是一个换汇已交易标志类型 +#////////////////////////////////////////////////////////////////////// +#未交易 +defineDict["THOST_FTDC_FBEAT_NotTrade"] = '0' +#已交易 +defineDict["THOST_FTDC_FBEAT_Trade"] = '1' + +typedefDict["TThostFtdcFBEAlreadyTradeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEOpenBankType是一个换汇账户开户行类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEOpenBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEUserEventTypeType是一个银期换汇用户事件类型类型 +#////////////////////////////////////////////////////////////////////// +#签到 +defineDict["THOST_FTDC_FBEUET_SignIn"] = '0' +#换汇 +defineDict["THOST_FTDC_FBEUET_Exchange"] = '1' +#换汇重发 +defineDict["THOST_FTDC_FBEUET_ReExchange"] = '2' +#银行账户查询 +defineDict["THOST_FTDC_FBEUET_QueryBankAccount"] = '3' +#换汇明细查询 +defineDict["THOST_FTDC_FBEUET_QueryExchDetial"] = '4' +#换汇汇总查询 +defineDict["THOST_FTDC_FBEUET_QueryExchSummary"] = '5' +#换汇汇率查询 +defineDict["THOST_FTDC_FBEUET_QueryExchRate"] = '6' +#对账文件通知 +defineDict["THOST_FTDC_FBEUET_CheckBankAccount"] = '7' +#签退 +defineDict["THOST_FTDC_FBEUET_SignOut"] = '8' +#其他 +defineDict["THOST_FTDC_FBEUET_Other"] = 'Z' + +typedefDict["TThostFtdcFBEUserEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEFileNameType是一个换汇相关文件名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEBatchSerialType是一个换汇批次号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFBEBatchSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBEReqFlagType是一个换汇发送标志类型 +#////////////////////////////////////////////////////////////////////// +#未处理 +defineDict["THOST_FTDC_FBERF_UnProcessed"] = '0' +#等待发送 +defineDict["THOST_FTDC_FBERF_WaitSend"] = '1' +#发送成功 +defineDict["THOST_FTDC_FBERF_SendSuccess"] = '2' +#发送失败 +defineDict["THOST_FTDC_FBERF_SendFailed"] = '3' +#等待重发 +defineDict["THOST_FTDC_FBERF_WaitReSend"] = '4' + +typedefDict["TThostFtdcFBEReqFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNotifyClassType是一个风险通知类型类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_NC_NOERROR"] = '0' +#警示 +defineDict["THOST_FTDC_NC_Warn"] = '1' +#追保 +defineDict["THOST_FTDC_NC_Call"] = '2' +#强平 +defineDict["THOST_FTDC_NC_Force"] = '3' +#穿仓 +defineDict["THOST_FTDC_NC_CHUANCANG"] = '4' +#异常 +defineDict["THOST_FTDC_NC_Exception"] = '5' + +typedefDict["TThostFtdcNotifyClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNofityInfoType是一个客户风险通知消息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRiskNofityInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseSceneIdType是一个强平场景编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcForceCloseSceneIdType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseTypeType是一个强平单类型类型 +#////////////////////////////////////////////////////////////////////// +#手工强平 +defineDict["THOST_FTDC_FCT_Manual"] = '0' +#单一投资者辅助强平 +defineDict["THOST_FTDC_FCT_Single"] = '1' +#批量投资者辅助强平 +defineDict["THOST_FTDC_FCT_Group"] = '2' + +typedefDict["TThostFtdcForceCloseTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDsType是一个多个产品代码,用+分隔,如cu+zn类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInstrumentIDsType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNotifyMethodType是一个风险通知途径类型 +#////////////////////////////////////////////////////////////////////// +#系统通知 +defineDict["THOST_FTDC_RNM_System"] = '0' +#短信通知 +defineDict["THOST_FTDC_RNM_SMS"] = '1' +#邮件通知 +defineDict["THOST_FTDC_RNM_EMail"] = '2' +#人工通知 +defineDict["THOST_FTDC_RNM_Manual"] = '3' + +typedefDict["TThostFtdcRiskNotifyMethodType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNotifyStatusType是一个风险通知状态类型 +#////////////////////////////////////////////////////////////////////// +#未生成 +defineDict["THOST_FTDC_RNS_NotGen"] = '0' +#已生成未发送 +defineDict["THOST_FTDC_RNS_Generated"] = '1' +#发送失败 +defineDict["THOST_FTDC_RNS_SendError"] = '2' +#已发送未接收 +defineDict["THOST_FTDC_RNS_SendOk"] = '3' +#已接收未确认 +defineDict["THOST_FTDC_RNS_Received"] = '4' +#已确认 +defineDict["THOST_FTDC_RNS_Confirmed"] = '5' + +typedefDict["TThostFtdcRiskNotifyStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskUserEventType是一个风控用户操作事件类型 +#////////////////////////////////////////////////////////////////////// +#导出数据 +defineDict["THOST_FTDC_RUE_ExportData"] = '0' + +typedefDict["TThostFtdcRiskUserEventType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamIDType是一个参数代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParamIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamNameType是一个参数名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParamNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamValueType是一个参数值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcParamValueType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcConditionalOrderSortTypeType是一个条件单索引条件类型 +#////////////////////////////////////////////////////////////////////// +#使用最新价升序 +defineDict["THOST_FTDC_COST_LastPriceAsc"] = '0' +#使用最新价降序 +defineDict["THOST_FTDC_COST_LastPriceDesc"] = '1' +#使用卖价升序 +defineDict["THOST_FTDC_COST_AskPriceAsc"] = '2' +#使用卖价降序 +defineDict["THOST_FTDC_COST_AskPriceDesc"] = '3' +#使用买价升序 +defineDict["THOST_FTDC_COST_BidPriceAsc"] = '4' +#使用买价降序 +defineDict["THOST_FTDC_COST_BidPriceDesc"] = '5' + +typedefDict["TThostFtdcConditionalOrderSortTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSendTypeType是一个报送状态类型 +#////////////////////////////////////////////////////////////////////// +#未发送 +defineDict["THOST_FTDC_UOAST_NoSend"] = '0' +#已发送 +defineDict["THOST_FTDC_UOAST_Sended"] = '1' +#已生成 +defineDict["THOST_FTDC_UOAST_Generated"] = '2' +#报送失败 +defineDict["THOST_FTDC_UOAST_SendFail"] = '3' +#接收成功 +defineDict["THOST_FTDC_UOAST_Success"] = '4' +#接收失败 +defineDict["THOST_FTDC_UOAST_Fail"] = '5' +#取消报送 +defineDict["THOST_FTDC_UOAST_Cancel"] = '6' + +typedefDict["TThostFtdcSendTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDStatusType是一个交易编码状态类型 +#////////////////////////////////////////////////////////////////////// +#未申请 +defineDict["THOST_FTDC_UOACS_NoApply"] = '1' +#已提交申请 +defineDict["THOST_FTDC_UOACS_Submited"] = '2' +#已发送申请 +defineDict["THOST_FTDC_UOACS_Sended"] = '3' +#完成 +defineDict["THOST_FTDC_UOACS_Success"] = '4' +#拒绝 +defineDict["THOST_FTDC_UOACS_Refuse"] = '5' +#已撤销编码 +defineDict["THOST_FTDC_UOACS_Cancel"] = '6' + +typedefDict["TThostFtdcClientIDStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIndustryIDType是一个行业编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIndustryIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionIDType是一个特有信息编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcQuestionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionContentType是一个特有信息说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcQuestionContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionIDType是一个选项编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOptionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionContentType是一个选项说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOptionContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionTypeType是一个特有信息类型类型 +#////////////////////////////////////////////////////////////////////// +#单选 +defineDict["THOST_FTDC_QT_Radio"] = '1' +#多选 +defineDict["THOST_FTDC_QT_Option"] = '2' +#填空 +defineDict["THOST_FTDC_QT_Blank"] = '3' + +typedefDict["TThostFtdcQuestionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessIDType是一个业务流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProcessIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSeqNoType是一个流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSeqNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAProcessStatusType是一个流程状态类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOAProcessStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessTypeType是一个流程功能类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcProcessTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessTypeType是一个业务类型类型 +#////////////////////////////////////////////////////////////////////// +#请求 +defineDict["THOST_FTDC_BT_Request"] = '1' +#应答 +defineDict["THOST_FTDC_BT_Response"] = '2' +#通知 +defineDict["THOST_FTDC_BT_Notice"] = '3' + +typedefDict["TThostFtdcBusinessTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCfmmcReturnCodeType是一个监控中心返回码类型 +#////////////////////////////////////////////////////////////////////// +#成功 +defineDict["THOST_FTDC_CRC_Success"] = '0' +#该客户已经有流程在处理中 +defineDict["THOST_FTDC_CRC_Working"] = '1' +#监控中客户资料检查失败 +defineDict["THOST_FTDC_CRC_InfoFail"] = '2' +#监控中实名制检查失败 +defineDict["THOST_FTDC_CRC_IDCardFail"] = '3' +#其他错误 +defineDict["THOST_FTDC_CRC_OtherFail"] = '4' + +typedefDict["TThostFtdcCfmmcReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExReturnCodeType是一个交易所返回码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExReturnCodeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientTypeType是一个客户类型类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_CfMMCCT_All"] = '0' +#个人 +defineDict["THOST_FTDC_CfMMCCT_Person"] = '1' +#单位 +defineDict["THOST_FTDC_CfMMCCT_Company"] = '2' +#其他 +defineDict["THOST_FTDC_CfMMCCT_Other"] = '3' +#特殊法人 +defineDict["THOST_FTDC_CfMMCCT_SpecialOrgan"] = '4' +#资管户 +defineDict["THOST_FTDC_CfMMCCT_Asset"] = '5' + +typedefDict["TThostFtdcClientTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeIDTypeType是一个交易所编号类型 +#////////////////////////////////////////////////////////////////////// +#上海期货交易所 +defineDict["THOST_FTDC_EIDT_SHFE"] = 'S' +#郑州商品交易所 +defineDict["THOST_FTDC_EIDT_CZCE"] = 'Z' +#大连商品交易所 +defineDict["THOST_FTDC_EIDT_DCE"] = 'D' +#中国金融期货交易所 +defineDict["THOST_FTDC_EIDT_CFFEX"] = 'J' +#上海国际能源交易中心股份有限公司 +defineDict["THOST_FTDC_EIDT_INE"] = 'N' + +typedefDict["TThostFtdcExchangeIDTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExClientIDTypeType是一个交易编码类型类型 +#////////////////////////////////////////////////////////////////////// +#套保 +defineDict["THOST_FTDC_ECIDT_Hedge"] = '1' +#套利 +defineDict["THOST_FTDC_ECIDT_Arbitrage"] = '2' +#投机 +defineDict["THOST_FTDC_ECIDT_Speculation"] = '3' + +typedefDict["TThostFtdcExClientIDTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientClassifyType是一个客户分类码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClientClassifyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAOrganTypeType是一个单位性质类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOAOrganTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOACountryCodeType是一个国家代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOACountryCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAreaCodeType是一个区号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAreaCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFuturesIDType是一个监控中心为客户分配的代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFuturesIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffmcDateType是一个日期类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCffmcDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffmcTimeType是一个时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCffmcTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNocIDType是一个组织机构代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcNocIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUpdateFlagType是一个更新状态类型 +#////////////////////////////////////////////////////////////////////// +#未更新 +defineDict["THOST_FTDC_UF_NoUpdate"] = '0' +#更新全部信息成功 +defineDict["THOST_FTDC_UF_Success"] = '1' +#更新全部信息失败 +defineDict["THOST_FTDC_UF_Fail"] = '2' +#更新交易编码成功 +defineDict["THOST_FTDC_UF_TCSuccess"] = '3' +#更新交易编码失败 +defineDict["THOST_FTDC_UF_TCFail"] = '4' +#已丢弃 +defineDict["THOST_FTDC_UF_Cancel"] = '5' + +typedefDict["TThostFtdcUpdateFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplyOperateIDType是一个申请动作类型 +#////////////////////////////////////////////////////////////////////// +#开户 +defineDict["THOST_FTDC_AOID_OpenInvestor"] = '1' +#修改身份信息 +defineDict["THOST_FTDC_AOID_ModifyIDCard"] = '2' +#修改一般信息 +defineDict["THOST_FTDC_AOID_ModifyNoIDCard"] = '3' +#申请交易编码 +defineDict["THOST_FTDC_AOID_ApplyTradingCode"] = '4' +#撤销交易编码 +defineDict["THOST_FTDC_AOID_CancelTradingCode"] = '5' +#销户 +defineDict["THOST_FTDC_AOID_CancelInvestor"] = '6' +#账户休眠 +defineDict["THOST_FTDC_AOID_FreezeAccount"] = '8' +#激活休眠账户 +defineDict["THOST_FTDC_AOID_ActiveFreezeAccount"] = '9' + +typedefDict["TThostFtdcApplyOperateIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplyStatusIDType是一个申请状态类型 +#////////////////////////////////////////////////////////////////////// +#未补全 +defineDict["THOST_FTDC_ASID_NoComplete"] = '1' +#已提交 +defineDict["THOST_FTDC_ASID_Submited"] = '2' +#已审核 +defineDict["THOST_FTDC_ASID_Checked"] = '3' +#已拒绝 +defineDict["THOST_FTDC_ASID_Refused"] = '4' +#已删除 +defineDict["THOST_FTDC_ASID_Deleted"] = '5' + +typedefDict["TThostFtdcApplyStatusIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSendMethodType是一个发送方式类型 +#////////////////////////////////////////////////////////////////////// +#文件发送 +defineDict["THOST_FTDC_UOASM_ByAPI"] = '1' +#电子发送 +defineDict["THOST_FTDC_UOASM_ByFile"] = '2' + +typedefDict["TThostFtdcSendMethodType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEventTypeType是一个业务操作类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEventModeType是一个操作方法类型 +#////////////////////////////////////////////////////////////////////// +#增加 +defineDict["THOST_FTDC_EvM_ADD"] = '1' +#修改 +defineDict["THOST_FTDC_EvM_UPDATE"] = '2' +#删除 +defineDict["THOST_FTDC_EvM_DELETE"] = '3' +#复核 +defineDict["THOST_FTDC_EvM_CHECK"] = '4' +#复制 +defineDict["THOST_FTDC_EvM_COPY"] = '5' +#注销 +defineDict["THOST_FTDC_EvM_CANCEL"] = '6' +#冲销 +defineDict["THOST_FTDC_EvM_Reverse"] = '7' + +typedefDict["TThostFtdcEventModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAAutoSendType是一个统一开户申请自动发送类型 +#////////////////////////////////////////////////////////////////////// +#自动发送并接收 +defineDict["THOST_FTDC_UOAA_ASR"] = '1' +#自动发送,不自动接收 +defineDict["THOST_FTDC_UOAA_ASNR"] = '2' +#不自动发送,自动接收 +defineDict["THOST_FTDC_UOAA_NSAR"] = '3' +#不自动发送,也不自动接收 +defineDict["THOST_FTDC_UOAA_NSR"] = '4' + +typedefDict["TThostFtdcUOAAutoSendType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQueryDepthType是一个查询深度类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcQueryDepthType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataCenterIDType是一个数据中心代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDataCenterIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFlowIDType是一个流程ID类型 +#////////////////////////////////////////////////////////////////////// +#投资者对应投资者组设置 +defineDict["THOST_FTDC_EvM_InvestorGroupFlow"] = '1' +#投资者手续费率设置 +defineDict["THOST_FTDC_EvM_InvestorRate"] = '2' +#投资者手续费率模板关系设置 +defineDict["THOST_FTDC_EvM_InvestorCommRateModel"] = '3' + +typedefDict["TThostFtdcFlowIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckLevelType是一个复核级别类型 +#////////////////////////////////////////////////////////////////////// +#零级复核 +defineDict["THOST_FTDC_CL_Zero"] = '0' +#一级复核 +defineDict["THOST_FTDC_CL_One"] = '1' +#二级复核 +defineDict["THOST_FTDC_CL_Two"] = '2' + +typedefDict["TThostFtdcCheckLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckNoType是一个操作次数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCheckNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckStatusType是一个复核级别类型 +#////////////////////////////////////////////////////////////////////// +#未复核 +defineDict["THOST_FTDC_CHS_Init"] = '0' +#复核中 +defineDict["THOST_FTDC_CHS_Checking"] = '1' +#已复核 +defineDict["THOST_FTDC_CHS_Checked"] = '2' +#拒绝 +defineDict["THOST_FTDC_CHS_Refuse"] = '3' +#作废 +defineDict["THOST_FTDC_CHS_Cancel"] = '4' + +typedefDict["TThostFtdcCheckStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUsedStatusType是一个生效状态类型 +#////////////////////////////////////////////////////////////////////// +#未生效 +defineDict["THOST_FTDC_CHU_Unused"] = '0' +#已生效 +defineDict["THOST_FTDC_CHU_Used"] = '1' +#生效失败 +defineDict["THOST_FTDC_CHU_Fail"] = '2' + +typedefDict["TThostFtdcUsedStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTemplateNameType是一个模型名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRateTemplateNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyStringType是一个用于查询的投资属性字段类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPropertyStringType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAcountOriginType是一个账户来源类型 +#////////////////////////////////////////////////////////////////////// +#手工录入 +defineDict["THOST_FTDC_BAO_ByAccProperty"] = '0' +#银期转账 +defineDict["THOST_FTDC_BAO_ByFBTransfer"] = '1' + +typedefDict["TThostFtdcBankAcountOriginType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthBillTradeSumType是一个结算单月报成交汇总方式类型 +#////////////////////////////////////////////////////////////////////// +#同日同合约 +defineDict["THOST_FTDC_MBTS_ByInstrument"] = '0' +#同日同合约同价格 +defineDict["THOST_FTDC_MBTS_ByDayInsPrc"] = '1' +#同合约 +defineDict["THOST_FTDC_MBTS_ByDayIns"] = '2' + +typedefDict["TThostFtdcMonthBillTradeSumType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTTradeCodeEnumType是一个银期交易代码枚举类型 +#////////////////////////////////////////////////////////////////////// +#银行发起银行转期货 +defineDict["THOST_FTDC_FTC_BankLaunchBankToBroker"] = '102001' +#期货发起银行转期货 +defineDict["THOST_FTDC_FTC_BrokerLaunchBankToBroker"] = '202001' +#银行发起期货转银行 +defineDict["THOST_FTDC_FTC_BankLaunchBrokerToBank"] = '102002' +#期货发起期货转银行 +defineDict["THOST_FTDC_FTC_BrokerLaunchBrokerToBank"] = '202002' + +typedefDict["TThostFtdcFBTTradeCodeEnumType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTemplateIDType是一个模型代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRateTemplateIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskRateType是一个风险度类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRiskRateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimestampType是一个时间戳类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTimestampType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDRuleNameType是一个号段规则名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestorIDRuleNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDRuleExprType是一个号段规则表达式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestorIDRuleExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastDriftType是一个上次OTP漂移值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLastDriftType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastSuccessType是一个上次OTP成功值类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLastSuccessType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthKeyType是一个令牌密钥类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAuthKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSerialNumberType是一个序列号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSerialNumberType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPTypeType是一个动态令牌类型类型 +#////////////////////////////////////////////////////////////////////// +#无动态令牌 +defineDict["THOST_FTDC_OTP_NONE"] = '0' +#时间令牌 +defineDict["THOST_FTDC_OTP_TOTP"] = '1' + +typedefDict["TThostFtdcOTPTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPVendorsIDType是一个动态令牌提供商类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOTPVendorsIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPVendorsNameType是一个动态令牌提供商名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOTPVendorsNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPStatusType是一个动态令牌状态类型 +#////////////////////////////////////////////////////////////////////// +#未使用 +defineDict["THOST_FTDC_OTPS_Unused"] = '0' +#已使用 +defineDict["THOST_FTDC_OTPS_Used"] = '1' +#注销 +defineDict["THOST_FTDC_OTPS_Disuse"] = '2' + +typedefDict["TThostFtdcOTPStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerUserTypeType是一个经济公司用户类型类型 +#////////////////////////////////////////////////////////////////////// +#投资者 +defineDict["THOST_FTDC_BUT_Investor"] = '1' +#操作员 +defineDict["THOST_FTDC_BUT_BrokerUser"] = '2' + +typedefDict["TThostFtdcBrokerUserTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureTypeType是一个期货类型类型 +#////////////////////////////////////////////////////////////////////// +#商品期货 +defineDict["THOST_FTDC_FUTT_Commodity"] = '1' +#金融期货 +defineDict["THOST_FTDC_FUTT_Financial"] = '2' + +typedefDict["TThostFtdcFutureTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundEventTypeType是一个资金管理操作类型类型 +#////////////////////////////////////////////////////////////////////// +#转账限额 +defineDict["THOST_FTDC_FET_Restriction"] = '0' +#当日转账限额 +defineDict["THOST_FTDC_FET_TodayRestriction"] = '1' +#期商流水 +defineDict["THOST_FTDC_FET_Transfer"] = '2' +#资金冻结 +defineDict["THOST_FTDC_FET_Credit"] = '3' +#投资者可提资金比例 +defineDict["THOST_FTDC_FET_InvestorWithdrawAlm"] = '4' +#单个银行帐户转账限额 +defineDict["THOST_FTDC_FET_BankRestriction"] = '5' +#银期签约账户 +defineDict["THOST_FTDC_FET_Accountregister"] = '6' +#交易所出入金 +defineDict["THOST_FTDC_FET_ExchangeFundIO"] = '7' +#投资者出入金 +defineDict["THOST_FTDC_FET_InvestorFundIO"] = '8' + +typedefDict["TThostFtdcFundEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAccountSourceTypeType是一个资金账户来源类型 +#////////////////////////////////////////////////////////////////////// +#银期同步 +defineDict["THOST_FTDC_AST_FBTransfer"] = '0' +#手工录入 +defineDict["THOST_FTDC_AST_ManualEntry"] = '1' + +typedefDict["TThostFtdcAccountSourceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCodeSourceTypeType是一个交易编码来源类型 +#////////////////////////////////////////////////////////////////////// +#统一开户(已规范) +defineDict["THOST_FTDC_CST_UnifyAccount"] = '0' +#手工录入(未规范) +defineDict["THOST_FTDC_CST_ManualEntry"] = '1' + +typedefDict["TThostFtdcCodeSourceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserRangeType是一个操作员范围类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_UR_All"] = '0' +#单一操作员 +defineDict["THOST_FTDC_UR_Single"] = '1' + +typedefDict["TThostFtdcUserRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeSpanType是一个时间跨度类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTimeSpanType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcImportSequenceIDType是一个动态令牌导入批次编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcImportSequenceIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcByGroupType是一个交易统计表按客户统计方式类型 +#////////////////////////////////////////////////////////////////////// +#按投资者统计 +defineDict["THOST_FTDC_BG_Investor"] = '2' +#按类统计 +defineDict["THOST_FTDC_BG_Group"] = '1' + +typedefDict["TThostFtdcByGroupType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSumStatModeType是一个交易统计表按范围统计方式类型 +#////////////////////////////////////////////////////////////////////// +#按合约统计 +defineDict["THOST_FTDC_TSSM_Instrument"] = '1' +#按产品统计 +defineDict["THOST_FTDC_TSSM_Product"] = '2' +#按交易所统计 +defineDict["THOST_FTDC_TSSM_Exchange"] = '3' + +typedefDict["TThostFtdcTradeSumStatModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcComTypeType是一个组合成交类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcComTypeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductIDType是一个产品标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserProductIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductNameType是一个产品名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserProductNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductMemoType是一个产品说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUserProductMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCCancelFlagType是一个新增或变更标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCCancelFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCDateType是一个日期类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCInvestorNameType是一个客户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCInvestorNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCOpenInvestorNameType是一个客户名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCOpenInvestorNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCInvestorIDType是一个客户代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCInvestorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCIdentifiedCardNoType是一个证件号码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCIdentifiedCardNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCClientIDType是一个交易编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCClientIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCBankFlagType是一个银行标识类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCBankFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCBankAccountType是一个银行账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCBankAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCOpenNameType是一个开户人类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCOpenNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMemoType是一个说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTimeType是一个时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTradeIDType是一个成交流水号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCTradeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCExchangeInstIDType是一个合约代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCExchangeInstIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMortgageNameType是一个质押品名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCMortgageNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCReasonType是一个事由类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCReasonType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIsSettlementType是一个是否为非结算会员类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIsSettlementType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMoneyType是一个资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCPriceType是一个价格类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCPriceType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCOptionsTypeType是一个期权类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCOptionsTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCStrikePriceType是一个执行价类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCStrikePriceType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTargetProductIDType是一个标的品种类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCTargetProductIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTargetInstrIDType是一个标的合约类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCTargetInstrIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommModelNameType是一个手续费率模板名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommModelNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommModelMemoType是一个手续费率模板备注类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCommModelMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExprSetModeType是一个日期表达式设置类型类型 +#////////////////////////////////////////////////////////////////////// +#相对已有规则设置 +defineDict["THOST_FTDC_ESM_Relative"] = '1' +#典型设置 +defineDict["THOST_FTDC_ESM_Typical"] = '2' + +typedefDict["TThostFtdcExprSetModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateInvestorRangeType是一个投资者范围类型 +#////////////////////////////////////////////////////////////////////// +#公司标准 +defineDict["THOST_FTDC_RIR_All"] = '1' +#模板 +defineDict["THOST_FTDC_RIR_Model"] = '2' +#单一投资者 +defineDict["THOST_FTDC_RIR_Single"] = '3' + +typedefDict["TThostFtdcRateInvestorRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentBrokerIDType是一个代理经纪公司代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAgentBrokerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDRIdentityIDType是一个交易中心代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDRIdentityIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDRIdentityNameType是一个交易中心名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDRIdentityNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDBLinkIDType是一个DBLink标识号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDBLinkIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncDataStatusType是一个主次用系统数据同步状态类型 +#////////////////////////////////////////////////////////////////////// +#未同步 +defineDict["THOST_FTDC_SDS_Initialize"] = '0' +#同步中 +defineDict["THOST_FTDC_SDS_Settlementing"] = '1' +#已同步 +defineDict["THOST_FTDC_SDS_Settlemented"] = '2' + +typedefDict["TThostFtdcSyncDataStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSourceType是一个成交来源类型 +#////////////////////////////////////////////////////////////////////// +#来自交易所普通回报 +defineDict["THOST_FTDC_TSRC_NORMAL"] = '0' +#来自查询 +defineDict["THOST_FTDC_TSRC_QUERY"] = '1' + +typedefDict["TThostFtdcTradeSourceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFlexStatModeType是一个产品合约统计方式类型 +#////////////////////////////////////////////////////////////////////// +#产品统计 +defineDict["THOST_FTDC_FSM_Product"] = '1' +#交易所统计 +defineDict["THOST_FTDC_FSM_Exchange"] = '2' +#统计所有 +defineDict["THOST_FTDC_FSM_All"] = '3' + +typedefDict["TThostFtdcFlexStatModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcByInvestorRangeType是一个投资者范围统计方式类型 +#////////////////////////////////////////////////////////////////////// +#属性统计 +defineDict["THOST_FTDC_BIR_Property"] = '1' +#统计所有 +defineDict["THOST_FTDC_BIR_All"] = '2' + +typedefDict["TThostFtdcByInvestorRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSRiskRateType是一个风险度类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSRiskRateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceNo12Type是一个序号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSequenceNo12Type"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyInvestorRangeType是一个投资者范围类型 +#////////////////////////////////////////////////////////////////////// +#所有 +defineDict["THOST_FTDC_PIR_All"] = '1' +#投资者属性 +defineDict["THOST_FTDC_PIR_Property"] = '2' +#单一投资者 +defineDict["THOST_FTDC_PIR_Single"] = '3' + +typedefDict["TThostFtdcPropertyInvestorRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileStatusType是一个文件状态类型 +#////////////////////////////////////////////////////////////////////// +#未生成 +defineDict["THOST_FTDC_FIS_NoCreate"] = '0' +#已生成 +defineDict["THOST_FTDC_FIS_Created"] = '1' +#生成失败 +defineDict["THOST_FTDC_FIS_Failed"] = '2' + +typedefDict["TThostFtdcFileStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileGenStyleType是一个文件生成方式类型 +#////////////////////////////////////////////////////////////////////// +#下发 +defineDict["THOST_FTDC_FGS_FileTransmit"] = '0' +#生成 +defineDict["THOST_FTDC_FGS_FileGen"] = '1' + +typedefDict["TThostFtdcFileGenStyleType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysOperModeType是一个系统日志操作方法类型 +#////////////////////////////////////////////////////////////////////// +#增加 +defineDict["THOST_FTDC_SoM_Add"] = '1' +#修改 +defineDict["THOST_FTDC_SoM_Update"] = '2' +#删除 +defineDict["THOST_FTDC_SoM_Delete"] = '3' +#复制 +defineDict["THOST_FTDC_SoM_Copy"] = '4' +#激活 +defineDict["THOST_FTDC_SoM_AcTive"] = '5' +#注销 +defineDict["THOST_FTDC_SoM_CanCel"] = '6' +#重置 +defineDict["THOST_FTDC_SoM_ReSet"] = '7' + +typedefDict["TThostFtdcSysOperModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysOperTypeType是一个系统日志操作类型类型 +#////////////////////////////////////////////////////////////////////// +#修改操作员密码 +defineDict["THOST_FTDC_SoT_UpdatePassword"] = '0' +#操作员组织架构关系 +defineDict["THOST_FTDC_SoT_UserDepartment"] = '1' +#角色管理 +defineDict["THOST_FTDC_SoT_RoleManager"] = '2' +#角色功能设置 +defineDict["THOST_FTDC_SoT_RoleFunction"] = '3' +#基础参数设置 +defineDict["THOST_FTDC_SoT_BaseParam"] = '4' +#设置操作员 +defineDict["THOST_FTDC_SoT_SetUserID"] = '5' +#用户角色设置 +defineDict["THOST_FTDC_SoT_SetUserRole"] = '6' +#用户IP限制 +defineDict["THOST_FTDC_SoT_UserIpRestriction"] = '7' +#组织架构管理 +defineDict["THOST_FTDC_SoT_DepartmentManager"] = '8' +#组织架构向查询分类复制 +defineDict["THOST_FTDC_SoT_DepartmentCopy"] = '9' +#交易编码管理 +defineDict["THOST_FTDC_SoT_Tradingcode"] = 'A' +#投资者状态维护 +defineDict["THOST_FTDC_SoT_InvestorStatus"] = 'B' +#投资者权限管理 +defineDict["THOST_FTDC_SoT_InvestorAuthority"] = 'C' +#属性设置 +defineDict["THOST_FTDC_SoT_PropertySet"] = 'D' +#重置投资者密码 +defineDict["THOST_FTDC_SoT_ReSetInvestorPasswd"] = 'E' +#投资者个性信息维护 +defineDict["THOST_FTDC_SoT_InvestorPersonalityInfo"] = 'F' + +typedefDict["TThostFtdcSysOperTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCDataQueyTypeType是一个上报数据查询类型类型 +#////////////////////////////////////////////////////////////////////// +#查询当前交易日报送的数据 +defineDict["THOST_FTDC_CSRCQ_Current"] = '0' +#查询历史报送的代理经纪公司的数据 +defineDict["THOST_FTDC_CSRCQ_History"] = '1' + +typedefDict["TThostFtdcCSRCDataQueyTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFreezeStatusType是一个休眠状态类型 +#////////////////////////////////////////////////////////////////////// +#活跃 +defineDict["THOST_FTDC_FRS_Normal"] = '1' +#休眠 +defineDict["THOST_FTDC_FRS_Freeze"] = '0' + +typedefDict["TThostFtdcFreezeStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStandardStatusType是一个规范状态类型 +#////////////////////////////////////////////////////////////////////// +#已规范 +defineDict["THOST_FTDC_STST_Standard"] = '0' +#未规范 +defineDict["THOST_FTDC_STST_NonStandard"] = '1' + +typedefDict["TThostFtdcStandardStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCFreezeStatusType是一个休眠状态类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCFreezeStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightParamTypeType是一个配置类型类型 +#////////////////////////////////////////////////////////////////////// +#休眠户 +defineDict["THOST_FTDC_RPT_Freeze"] = '1' +#激活休眠户 +defineDict["THOST_FTDC_RPT_FreezeActive"] = '2' +#开仓权限限制 +defineDict["THOST_FTDC_RPT_OpenLimit"] = '3' +#解除开仓权限限制 +defineDict["THOST_FTDC_RPT_RelieveOpenLimit"] = '4' + +typedefDict["TThostFtdcRightParamTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightTemplateIDType是一个模板代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRightTemplateIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightTemplateNameType是一个模板名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRightTemplateNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataStatusType是一个反洗钱审核表数据状态类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_AMLDS_Normal"] = '0' +#已删除 +defineDict["THOST_FTDC_AMLDS_Deleted"] = '1' + +typedefDict["TThostFtdcDataStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCheckStatusType是一个审核状态类型 +#////////////////////////////////////////////////////////////////////// +#未复核 +defineDict["THOST_FTDC_AMLCHS_Init"] = '0' +#复核中 +defineDict["THOST_FTDC_AMLCHS_Checking"] = '1' +#已复核 +defineDict["THOST_FTDC_AMLCHS_Checked"] = '2' +#拒绝上报 +defineDict["THOST_FTDC_AMLCHS_RefuseReport"] = '3' + +typedefDict["TThostFtdcAMLCheckStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlDateTypeType是一个日期类型类型 +#////////////////////////////////////////////////////////////////////// +#检查日期 +defineDict["THOST_FTDC_AMLDT_DrawDay"] = '0' +#发生日期 +defineDict["THOST_FTDC_AMLDT_TouchDay"] = '1' + +typedefDict["TThostFtdcAmlDateTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlCheckLevelType是一个审核级别类型 +#////////////////////////////////////////////////////////////////////// +#零级审核 +defineDict["THOST_FTDC_AMLCL_CheckLevel0"] = '0' +#一级审核 +defineDict["THOST_FTDC_AMLCL_CheckLevel1"] = '1' +#二级审核 +defineDict["THOST_FTDC_AMLCL_CheckLevel2"] = '2' +#三级审核 +defineDict["THOST_FTDC_AMLCL_CheckLevel3"] = '3' + +typedefDict["TThostFtdcAmlCheckLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlCheckFlowType是一个反洗钱数据抽取审核流程类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAmlCheckFlowType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataTypeType是一个数据类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDataTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExportFileTypeType是一个导出文件类型类型 +#////////////////////////////////////////////////////////////////////// +#CSV +defineDict["THOST_FTDC_EFT_CSV"] = '0' +#Excel +defineDict["THOST_FTDC_EFT_EXCEL"] = '1' +#DBF +defineDict["THOST_FTDC_EFT_DBF"] = '2' + +typedefDict["TThostFtdcExportFileTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerTypeType是一个结算配置类型类型 +#////////////////////////////////////////////////////////////////////// +#结算前准备 +defineDict["THOST_FTDC_SMT_Before"] = '1' +#结算 +defineDict["THOST_FTDC_SMT_Settlement"] = '2' +#结算后核对 +defineDict["THOST_FTDC_SMT_After"] = '3' +#结算后处理 +defineDict["THOST_FTDC_SMT_Settlemented"] = '4' + +typedefDict["TThostFtdcSettleManagerTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerIDType是一个结算配置代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSettleManagerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerNameType是一个结算配置名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSettleManagerNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerLevelType是一个结算配置等级类型 +#////////////////////////////////////////////////////////////////////// +#必要 +defineDict["THOST_FTDC_SML_Must"] = '1' +#警告 +defineDict["THOST_FTDC_SML_Alarm"] = '2' +#提示 +defineDict["THOST_FTDC_SML_Prompt"] = '3' +#不检查 +defineDict["THOST_FTDC_SML_Ignore"] = '4' + +typedefDict["TThostFtdcSettleManagerLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerGroupType是一个模块分组类型 +#////////////////////////////////////////////////////////////////////// +#交易所核对 +defineDict["THOST_FTDC_SMG_Exhcange"] = '1' +#内部核对 +defineDict["THOST_FTDC_SMG_ASP"] = '2' +#上报数据核对 +defineDict["THOST_FTDC_SMG_CSRC"] = '3' + +typedefDict["TThostFtdcSettleManagerGroupType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckResultMemoType是一个核对结果说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCheckResultMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionUrlType是一个功能链接类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcFunctionUrlType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthInfoType是一个客户端认证信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAuthInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthCodeType是一个客户端认证码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAuthCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLimitUseTypeType是一个保值额度使用类型类型 +#////////////////////////////////////////////////////////////////////// +#可重复使用 +defineDict["THOST_FTDC_LUT_Repeatable"] = '1' +#不可重复使用 +defineDict["THOST_FTDC_LUT_Unrepeatable"] = '2' + +typedefDict["TThostFtdcLimitUseTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataResourceType是一个数据来源类型 +#////////////////////////////////////////////////////////////////////// +#本系统 +defineDict["THOST_FTDC_DAR_Settle"] = '1' +#交易所 +defineDict["THOST_FTDC_DAR_Exchange"] = '2' +#报送数据 +defineDict["THOST_FTDC_DAR_CSRC"] = '3' + +typedefDict["TThostFtdcDataResourceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarginTypeType是一个保证金类型类型 +#////////////////////////////////////////////////////////////////////// +#交易所保证金率 +defineDict["THOST_FTDC_MGT_ExchMarginRate"] = '0' +#投资者保证金率 +defineDict["THOST_FTDC_MGT_InstrMarginRate"] = '1' +#投资者交易保证金率 +defineDict["THOST_FTDC_MGT_InstrMarginRateTrade"] = '2' + +typedefDict["TThostFtdcMarginTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcActiveTypeType是一个生效类型类型 +#////////////////////////////////////////////////////////////////////// +#仅当日生效 +defineDict["THOST_FTDC_ACT_Intraday"] = '1' +#长期生效 +defineDict["THOST_FTDC_ACT_Long"] = '2' + +typedefDict["TThostFtdcActiveTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarginRateTypeType是一个冲突保证金率类型类型 +#////////////////////////////////////////////////////////////////////// +#交易所保证金率 +defineDict["THOST_FTDC_MRT_Exchange"] = '1' +#投资者保证金率 +defineDict["THOST_FTDC_MRT_Investor"] = '2' +#投资者交易保证金率 +defineDict["THOST_FTDC_MRT_InvestorTrade"] = '3' + +typedefDict["TThostFtdcMarginRateTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBackUpStatusType是一个备份数据状态类型 +#////////////////////////////////////////////////////////////////////// +#未生成备份数据 +defineDict["THOST_FTDC_BUS_UnBak"] = '0' +#备份数据生成中 +defineDict["THOST_FTDC_BUS_BakUp"] = '1' +#已生成备份数据 +defineDict["THOST_FTDC_BUS_BakUped"] = '2' +#备份数据失败 +defineDict["THOST_FTDC_BUS_BakFail"] = '3' + +typedefDict["TThostFtdcBackUpStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInitSettlementType是一个结算初始化状态类型 +#////////////////////////////////////////////////////////////////////// +#结算初始化未开始 +defineDict["THOST_FTDC_SIS_UnInitialize"] = '0' +#结算初始化中 +defineDict["THOST_FTDC_SIS_Initialize"] = '1' +#结算初始化完成 +defineDict["THOST_FTDC_SIS_Initialized"] = '2' + +typedefDict["TThostFtdcInitSettlementType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReportStatusType是一个报表数据生成状态类型 +#////////////////////////////////////////////////////////////////////// +#未生成报表数据 +defineDict["THOST_FTDC_SRS_NoCreate"] = '0' +#报表数据生成中 +defineDict["THOST_FTDC_SRS_Create"] = '1' +#已生成报表数据 +defineDict["THOST_FTDC_SRS_Created"] = '2' +#生成报表数据失败 +defineDict["THOST_FTDC_SRS_CreateFail"] = '3' + +typedefDict["TThostFtdcReportStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSaveStatusType是一个数据归档状态类型 +#////////////////////////////////////////////////////////////////////// +#归档未完成 +defineDict["THOST_FTDC_SSS_UnSaveData"] = '0' +#归档完成 +defineDict["THOST_FTDC_SSS_SaveDatad"] = '1' + +typedefDict["TThostFtdcSaveStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettArchiveStatusType是一个结算确认数据归档状态类型 +#////////////////////////////////////////////////////////////////////// +#未归档数据 +defineDict["THOST_FTDC_SAS_UnArchived"] = '0' +#数据归档中 +defineDict["THOST_FTDC_SAS_Archiving"] = '1' +#已归档数据 +defineDict["THOST_FTDC_SAS_Archived"] = '2' +#归档数据失败 +defineDict["THOST_FTDC_SAS_ArchiveFail"] = '3' + +typedefDict["TThostFtdcSettArchiveStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCTPTypeType是一个CTP交易系统类型类型 +#////////////////////////////////////////////////////////////////////// +#未知类型 +defineDict["THOST_FTDC_CTPT_Unkown"] = '0' +#主中心 +defineDict["THOST_FTDC_CTPT_MainCenter"] = '1' +#备中心 +defineDict["THOST_FTDC_CTPT_BackUp"] = '2' + +typedefDict["TThostFtdcCTPTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcToolIDType是一个工具代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcToolIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcToolNameType是一个工具名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcToolNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCloseDealTypeType是一个平仓处理类型类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_CDT_Normal"] = '0' +#投机平仓优先 +defineDict["THOST_FTDC_CDT_SpecFirst"] = '1' + +typedefDict["TThostFtdcCloseDealTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMortgageFundUseRangeType是一个货币质押资金可用范围类型 +#////////////////////////////////////////////////////////////////////// +#不能使用 +defineDict["THOST_FTDC_MFUR_None"] = '0' +#用于保证金 +defineDict["THOST_FTDC_MFUR_Margin"] = '1' +#用于手续费、盈亏、保证金 +defineDict["THOST_FTDC_MFUR_All"] = '2' + +typedefDict["TThostFtdcMortgageFundUseRangeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyUnitType是一个币种单位数量类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencyUnitType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeRateType是一个汇率类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExchangeRateType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSpecProductTypeType是一个特殊产品类型类型 +#////////////////////////////////////////////////////////////////////// +#郑商所套保产品 +defineDict["THOST_FTDC_SPT_CzceHedge"] = '1' +#货币质押产品 +defineDict["THOST_FTDC_SPT_IneForeignCurrency"] = '2' +#大连短线开平仓产品 +defineDict["THOST_FTDC_SPT_DceOpenClose"] = '3' + +typedefDict["TThostFtdcSpecProductTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundMortgageTypeType是一个货币质押类型类型 +#////////////////////////////////////////////////////////////////////// +#质押 +defineDict["THOST_FTDC_FMT_Mortgage"] = '1' +#解质 +defineDict["THOST_FTDC_FMT_Redemption"] = '2' + +typedefDict["TThostFtdcFundMortgageTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAccountSettlementParamIDType是一个投资者账户结算参数代码类型 +#////////////////////////////////////////////////////////////////////// +#基础保证金 +defineDict["THOST_FTDC_ASPI_BaseMargin"] = '1' +#最低权益标准 +defineDict["THOST_FTDC_ASPI_LowestInterest"] = '2' + +typedefDict["TThostFtdcAccountSettlementParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyNameType是一个币种名称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencyNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencySignType是一个币种符号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencySignType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundMortDirectionType是一个货币质押方向类型 +#////////////////////////////////////////////////////////////////////// +#货币质入 +defineDict["THOST_FTDC_FMD_In"] = '1' +#货币质出 +defineDict["THOST_FTDC_FMD_Out"] = '2' + +typedefDict["TThostFtdcFundMortDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessClassType是一个换汇类别类型 +#////////////////////////////////////////////////////////////////////// +#盈利 +defineDict["THOST_FTDC_BT_Profit"] = '0' +#亏损 +defineDict["THOST_FTDC_BT_Loss"] = '1' +#其他 +defineDict["THOST_FTDC_BT_Other"] = 'Z' + +typedefDict["TThostFtdcBusinessClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSwapSourceTypeType是一个换汇数据来源类型 +#////////////////////////////////////////////////////////////////////// +#手工 +defineDict["THOST_FTDC_SST_Manual"] = '0' +#自动生成 +defineDict["THOST_FTDC_SST_Automatic"] = '1' + +typedefDict["TThostFtdcSwapSourceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrExDirectionType是一个换汇类型类型 +#////////////////////////////////////////////////////////////////////// +#结汇 +defineDict["THOST_FTDC_CED_Settlement"] = '0' +#售汇 +defineDict["THOST_FTDC_CED_Sale"] = '1' + +typedefDict["TThostFtdcCurrExDirectionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencySwapStatusType是一个申请状态类型 +#////////////////////////////////////////////////////////////////////// +#已录入 +defineDict["THOST_FTDC_CSS_Entry"] = '1' +#已审核 +defineDict["THOST_FTDC_CSS_Approve"] = '2' +#已拒绝 +defineDict["THOST_FTDC_CSS_Refuse"] = '3' +#已撤销 +defineDict["THOST_FTDC_CSS_Revoke"] = '4' +#已发送 +defineDict["THOST_FTDC_CSS_Send"] = '5' +#换汇成功 +defineDict["THOST_FTDC_CSS_Success"] = '6' +#换汇失败 +defineDict["THOST_FTDC_CSS_Failure"] = '7' + +typedefDict["TThostFtdcCurrencySwapStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrExchCertNoType是一个凭证号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrExchCertNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBatchSerialNoType是一个批次号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBatchSerialNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReqFlagType是一个换汇发送标志类型 +#////////////////////////////////////////////////////////////////////// +#未发送 +defineDict["THOST_FTDC_REQF_NoSend"] = '0' +#发送成功 +defineDict["THOST_FTDC_REQF_SendSuccess"] = '1' +#发送失败 +defineDict["THOST_FTDC_REQF_SendFailed"] = '2' +#等待重发 +defineDict["THOST_FTDC_REQF_WaitReSend"] = '3' + +typedefDict["TThostFtdcReqFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcResFlagType是一个换汇返回成功标志类型 +#////////////////////////////////////////////////////////////////////// +#成功 +defineDict["THOST_FTDC_RESF_Success"] = '0' +#账户余额不足 +defineDict["THOST_FTDC_RESF_InsuffiCient"] = '1' +#交易结果未知 +defineDict["THOST_FTDC_RESF_UnKnown"] = '8' + +typedefDict["TThostFtdcResFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPageControlType是一个换汇页面控制类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPageControlType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRecordCountType是一个记录数类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcRecordCountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencySwapMemoType是一个换汇需确认信息类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCurrencySwapMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExStatusType是一个修改状态类型 +#////////////////////////////////////////////////////////////////////// +#修改前 +defineDict["THOST_FTDC_EXS_Before"] = '0' +#修改后 +defineDict["THOST_FTDC_EXS_After"] = '1' + +typedefDict["TThostFtdcExStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientRegionType是一个开户客户地域类型 +#////////////////////////////////////////////////////////////////////// +#国内客户 +defineDict["THOST_FTDC_CR_Domestic"] = '1' +#港澳台客户 +defineDict["THOST_FTDC_CR_GMT"] = '2' +#国外客户 +defineDict["THOST_FTDC_CR_Foreign"] = '3' + +typedefDict["TThostFtdcClientRegionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWorkPlaceType是一个工作单位类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcWorkPlaceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessPeriodType是一个经营期限类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBusinessPeriodType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWebSiteType是一个网址类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcWebSiteType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAIdCardTypeType是一个统一开户证件类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOAIdCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientModeType是一个开户模式类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcClientModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorFullNameType是一个投资者全称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestorFullNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOABrokerIDType是一个境外中介机构ID类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOABrokerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAZipCodeType是一个邮政编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOAZipCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAEMailType是一个电子邮箱类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOAEMailType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOldCityType是一个城市类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcOldCityType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCorporateIdentifiedCardNoType是一个法人代表证件号码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCorporateIdentifiedCardNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHasBoardType是一个是否有董事会类型 +#////////////////////////////////////////////////////////////////////// +#没有 +defineDict["THOST_FTDC_HB_No"] = '0' +#有 +defineDict["THOST_FTDC_HB_Yes"] = '1' + +typedefDict["TThostFtdcHasBoardType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStartModeType是一个启动模式类型 +#////////////////////////////////////////////////////////////////////// +#正常 +defineDict["THOST_FTDC_SM_Normal"] = '1' +#应急 +defineDict["THOST_FTDC_SM_Emerge"] = '2' +#恢复 +defineDict["THOST_FTDC_SM_Restore"] = '3' + +typedefDict["TThostFtdcStartModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTemplateTypeType是一个模型类型类型 +#////////////////////////////////////////////////////////////////////// +#全量 +defineDict["THOST_FTDC_TPT_Full"] = '1' +#增量 +defineDict["THOST_FTDC_TPT_Increment"] = '2' +#备份 +defineDict["THOST_FTDC_TPT_BackUp"] = '3' + +typedefDict["TThostFtdcTemplateTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLoginModeType是一个登录模式类型 +#////////////////////////////////////////////////////////////////////// +#交易 +defineDict["THOST_FTDC_LM_Trade"] = '0' +#转账 +defineDict["THOST_FTDC_LM_Transfer"] = '1' + +typedefDict["TThostFtdcLoginModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPromptTypeType是一个日历提示类型类型 +#////////////////////////////////////////////////////////////////////// +#合约上下市 +defineDict["THOST_FTDC_CPT_Instrument"] = '1' +#保证金分段生效 +defineDict["THOST_FTDC_CPT_Margin"] = '2' + +typedefDict["TThostFtdcPromptTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLedgerManageIDType是一个分户管理资产编码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLedgerManageIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestVarietyType是一个投资品种类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInvestVarietyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccountTypeType是一个账户类别类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBankAccountTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLedgerManageBankType是一个开户银行类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcLedgerManageBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffexDepartmentNameType是一个开户营业部类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCffexDepartmentNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffexDepartmentCodeType是一个营业部代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCffexDepartmentCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHasTrusteeType是一个是否有托管人类型 +#////////////////////////////////////////////////////////////////////// +#有 +defineDict["THOST_FTDC_HT_Yes"] = '1' +#没有 +defineDict["THOST_FTDC_HT_No"] = '0' + +typedefDict["TThostFtdcHasTrusteeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMemo1Type是一个说明类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCMemo1Type"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAssetmgrCFullNameType是一个代理资产管理业务的期货公司全称类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAssetmgrCFullNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAssetmgrApprovalNOType是一个资产管理业务批文号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAssetmgrApprovalNOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAssetmgrMgrNameType是一个资产管理业务负责人姓名类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAssetmgrMgrNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmTypeType是一个机构类型类型 +#////////////////////////////////////////////////////////////////////// +#银行 +defineDict["THOST_FTDC_AMT_Bank"] = '1' +#证券公司 +defineDict["THOST_FTDC_AMT_Securities"] = '2' +#基金公司 +defineDict["THOST_FTDC_AMT_Fund"] = '3' +#保险公司 +defineDict["THOST_FTDC_AMT_Insurance"] = '4' +#信托公司 +defineDict["THOST_FTDC_AMT_Trust"] = '5' +#其他 +defineDict["THOST_FTDC_AMT_Other"] = '9' + +typedefDict["TThostFtdcAmTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCAmTypeType是一个机构类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCAmTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCFundIOTypeType是一个出入金类型类型 +#////////////////////////////////////////////////////////////////////// +#出入金 +defineDict["THOST_FTDC_CFIOT_FundIO"] = '0' +#银期换汇 +defineDict["THOST_FTDC_CFIOT_SwapCurrency"] = '1' + +typedefDict["TThostFtdcCSRCFundIOTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCusAccountTypeType是一个结算账户类型类型 +#////////////////////////////////////////////////////////////////////// +#期货结算账户 +defineDict["THOST_FTDC_CAT_Futures"] = '1' +#纯期货资管业务下的资管结算账户 +defineDict["THOST_FTDC_CAT_AssetmgrFuture"] = '2' +#综合类资管业务下的期货资管托管账户 +defineDict["THOST_FTDC_CAT_AssetmgrTrustee"] = '3' +#综合类资管业务下的资金中转账户 +defineDict["THOST_FTDC_CAT_AssetmgrTransfer"] = '4' + +typedefDict["TThostFtdcCusAccountTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCNationalType是一个国籍类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCNationalType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCSecAgentIDType是一个二级代理ID类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCSRCSecAgentIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLanguageTypeType是一个通知语言类型类型 +#////////////////////////////////////////////////////////////////////// +#中文 +defineDict["THOST_FTDC_LT_Chinese"] = '1' +#英文 +defineDict["THOST_FTDC_LT_English"] = '2' + +typedefDict["TThostFtdcLanguageTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmAccountType是一个投资账户类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcAmAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAssetmgrClientTypeType是一个资产管理客户类型类型 +#////////////////////////////////////////////////////////////////////// +#个人资管客户 +defineDict["THOST_FTDC_AMCT_Person"] = '1' +#单位资管客户 +defineDict["THOST_FTDC_AMCT_Organ"] = '2' +#特殊单位资管客户 +defineDict["THOST_FTDC_AMCT_SpecialOrgan"] = '4' + +typedefDict["TThostFtdcAssetmgrClientTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAssetmgrTypeType是一个投资类型类型 +#////////////////////////////////////////////////////////////////////// +#期货类 +defineDict["THOST_FTDC_ASST_Futures"] = '3' +#综合类 +defineDict["THOST_FTDC_ASST_SpecialOrgan"] = '4' + +typedefDict["TThostFtdcAssetmgrTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOMType是一个计量单位类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcUOMType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSHFEInstLifePhaseType是一个上期所合约生命周期状态类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSHFEInstLifePhaseType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSHFEProductClassType是一个产品类型类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSHFEProductClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriceDecimalType是一个价格小数位类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcPriceDecimalType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInTheMoneyFlagType是一个平值期权标志类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcInTheMoneyFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckInstrTypeType是一个合约比较类型类型 +#////////////////////////////////////////////////////////////////////// +#合约交易所不存在 +defineDict["THOST_FTDC_CIT_HasExch"] = '0' +#合约本系统不存在 +defineDict["THOST_FTDC_CIT_HasATP"] = '1' +#合约比较不一致 +defineDict["THOST_FTDC_CIT_HasDiff"] = '2' + +typedefDict["TThostFtdcCheckInstrTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDeliveryTypeType是一个交割类型类型 +#////////////////////////////////////////////////////////////////////// +#手工交割 +defineDict["THOST_FTDC_DT_HandDeliv"] = '1' +#到期交割 +defineDict["THOST_FTDC_DT_PersonDeliv"] = '2' + +typedefDict["TThostFtdcDeliveryTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBigMoneyType是一个资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcBigMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMaxMarginSideAlgorithmType是一个大额单边保证金算法类型 +#////////////////////////////////////////////////////////////////////// +#不使用大额单边保证金算法 +defineDict["THOST_FTDC_MMSA_NO"] = '0' +#使用大额单边保证金算法 +defineDict["THOST_FTDC_MMSA_YES"] = '1' + +typedefDict["TThostFtdcMaxMarginSideAlgorithmType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDAClientTypeType是一个资产管理客户类型类型 +#////////////////////////////////////////////////////////////////////// +#自然人 +defineDict["THOST_FTDC_CACT_Person"] = '0' +#法人 +defineDict["THOST_FTDC_CACT_Company"] = '1' +#其他 +defineDict["THOST_FTDC_CACT_Other"] = '2' + +typedefDict["TThostFtdcDAClientTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombinInstrIDType是一个套利合约代码类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombinInstrIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombinSettlePriceType是一个各腿结算价类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcCombinSettlePriceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDCEPriorityType是一个优先级类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcDCEPriorityType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeGroupIDType是一个成交组号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcTradeGroupIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIsCheckPrepaType是一个是否校验开户可用资金类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcIsCheckPrepaType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAAssetmgrTypeType是一个投资类型类型 +#////////////////////////////////////////////////////////////////////// +#期货类 +defineDict["THOST_FTDC_UOAAT_Futures"] = '1' +#综合类 +defineDict["THOST_FTDC_UOAAT_SpecialOrgan"] = '2' + +typedefDict["TThostFtdcUOAAssetmgrTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDirectionEnType是一个买卖方向类型 +#////////////////////////////////////////////////////////////////////// +#Buy +defineDict["THOST_FTDC_DEN_Buy"] = '0' +#Sell +defineDict["THOST_FTDC_DEN_Sell"] = '1' + +typedefDict["TThostFtdcDirectionEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOffsetFlagEnType是一个开平标志类型 +#////////////////////////////////////////////////////////////////////// +#Position Opening +defineDict["THOST_FTDC_OFEN_Open"] = '0' +#Position Close +defineDict["THOST_FTDC_OFEN_Close"] = '1' +#Forced Liquidation +defineDict["THOST_FTDC_OFEN_ForceClose"] = '2' +#Close Today +defineDict["THOST_FTDC_OFEN_CloseToday"] = '3' +#Close Prev. +defineDict["THOST_FTDC_OFEN_CloseYesterday"] = '4' +#Forced Reduction +defineDict["THOST_FTDC_OFEN_ForceOff"] = '5' +#Local Forced Liquidation +defineDict["THOST_FTDC_OFEN_LocalForceClose"] = '6' + +typedefDict["TThostFtdcOffsetFlagEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHedgeFlagEnType是一个投机套保标志类型 +#////////////////////////////////////////////////////////////////////// +#Speculation +defineDict["THOST_FTDC_HFEN_Speculation"] = '1' +#Arbitrage +defineDict["THOST_FTDC_HFEN_Arbitrage"] = '2' +#Hedge +defineDict["THOST_FTDC_HFEN_Hedge"] = '3' + +typedefDict["TThostFtdcHedgeFlagEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundIOTypeEnType是一个出入金类型类型 +#////////////////////////////////////////////////////////////////////// +#Deposit/Withdrawal +defineDict["THOST_FTDC_FIOTEN_FundIO"] = '1' +#Bank-Futures Transfer +defineDict["THOST_FTDC_FIOTEN_Transfer"] = '2' +#Bank-Futures FX Exchange +defineDict["THOST_FTDC_FIOTEN_SwapCurrency"] = '3' + +typedefDict["TThostFtdcFundIOTypeEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundTypeEnType是一个资金类型类型 +#////////////////////////////////////////////////////////////////////// +#Bank Deposit +defineDict["THOST_FTDC_FTEN_Deposite"] = '1' +#Payment/Fee +defineDict["THOST_FTDC_FTEN_ItemFund"] = '2' +#Brokerage Adj +defineDict["THOST_FTDC_FTEN_Company"] = '3' +#Internal Transfer +defineDict["THOST_FTDC_FTEN_InnerTransfer"] = '4' + +typedefDict["TThostFtdcFundTypeEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundDirectionEnType是一个出入金方向类型 +#////////////////////////////////////////////////////////////////////// +#Deposit +defineDict["THOST_FTDC_FDEN_In"] = '1' +#Withdrawal +defineDict["THOST_FTDC_FDEN_Out"] = '2' + +typedefDict["TThostFtdcFundDirectionEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundMortDirectionEnType是一个货币质押方向类型 +#////////////////////////////////////////////////////////////////////// +#Pledge +defineDict["THOST_FTDC_FMDEN_In"] = '1' +#Redemption +defineDict["THOST_FTDC_FMDEN_Out"] = '2' + +typedefDict["TThostFtdcFundMortDirectionEnType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSwapBusinessTypeType是一个换汇业务种类类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcSwapBusinessTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionsTypeType是一个期权类型类型 +#////////////////////////////////////////////////////////////////////// +#看涨 +defineDict["THOST_FTDC_CP_CallOptions"] = '1' +#看跌 +defineDict["THOST_FTDC_CP_PutOptions"] = '2' + +typedefDict["TThostFtdcOptionsTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStrikeModeType是一个执行方式类型 +#////////////////////////////////////////////////////////////////////// +#欧式 +defineDict["THOST_FTDC_STM_Continental"] = '0' +#美式 +defineDict["THOST_FTDC_STM_American"] = '1' +#百慕大 +defineDict["THOST_FTDC_STM_Bermuda"] = '2' + +typedefDict["TThostFtdcStrikeModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStrikeTypeType是一个执行类型类型 +#////////////////////////////////////////////////////////////////////// +#自身对冲 +defineDict["THOST_FTDC_STT_Hedge"] = '0' +#匹配执行 +defineDict["THOST_FTDC_STT_Match"] = '1' + +typedefDict["TThostFtdcStrikeTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplyTypeType是一个中金所期权放弃执行申请类型类型 +#////////////////////////////////////////////////////////////////////// +#不执行数量 +defineDict["THOST_FTDC_APPT_NotStrikeNum"] = '4' + +typedefDict["TThostFtdcApplyTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcGiveUpDataSourceType是一个放弃执行申请数据来源类型 +#////////////////////////////////////////////////////////////////////// +#系统生成 +defineDict["THOST_FTDC_GUDS_Gen"] = '0' +#手工添加 +defineDict["THOST_FTDC_GUDS_Hand"] = '1' + +typedefDict["TThostFtdcGiveUpDataSourceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExecOrderSysIDType是一个执行宣告系统编号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcExecOrderSysIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExecResultType是一个执行结果类型 +#////////////////////////////////////////////////////////////////////// +#没有执行 +defineDict["THOST_FTDC_OER_NoExec"] = 'n' +#已经取消 +defineDict["THOST_FTDC_OER_Canceled"] = 'c' +#执行成功 +defineDict["THOST_FTDC_OER_OK"] = '0' +#期权持仓不够 +defineDict["THOST_FTDC_OER_NoPosition"] = '1' +#资金不够 +defineDict["THOST_FTDC_OER_NoDeposit"] = '2' +#会员不存在 +defineDict["THOST_FTDC_OER_NoParticipant"] = '3' +#客户不存在 +defineDict["THOST_FTDC_OER_NoClient"] = '4' +#合约不存在 +defineDict["THOST_FTDC_OER_NoInstrument"] = '6' +#没有执行权限 +defineDict["THOST_FTDC_OER_NoRight"] = '7' +#不合理的数量 +defineDict["THOST_FTDC_OER_InvalidVolume"] = '8' +#没有足够的历史成交 +defineDict["THOST_FTDC_OER_NoEnoughHistoryTrade"] = '9' +#未知 +defineDict["THOST_FTDC_OER_Unknown"] = 'a' + +typedefDict["TThostFtdcExecResultType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStrikeSequenceType是一个执行序号类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcStrikeSequenceType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStrikeTimeType是一个执行时间类型 +#////////////////////////////////////////////////////////////////////// +typedefDict["TThostFtdcStrikeTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombinationTypeType是一个组合类型类型 +#////////////////////////////////////////////////////////////////////// +#期货组合 +defineDict["THOST_FTDC_COMBT_Future"] = '0' +#垂直价差BUL +defineDict["THOST_FTDC_COMBT_BUL"] = '1' +#垂直价差BER +defineDict["THOST_FTDC_COMBT_BER"] = '2' +#跨式组合 +defineDict["THOST_FTDC_COMBT_STD"] = '3' +#宽跨式组合 +defineDict["THOST_FTDC_COMBT_STG"] = '4' +#备兑组合 +defineDict["THOST_FTDC_COMBT_PRT"] = '5' + +typedefDict["TThostFtdcCombinationTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionRoyaltyPriceTypeType是一个期权权利金价格类型类型 +#////////////////////////////////////////////////////////////////////// +#昨结算价 +defineDict["THOST_FTDC_ORPT_PreSettlementPrice"] = '1' +#开仓价 +defineDict["THOST_FTDC_ORPT_OpenPrice"] = '4' + +typedefDict["TThostFtdcOptionRoyaltyPriceTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBalanceAlgorithmType是一个权益算法类型 +#////////////////////////////////////////////////////////////////////// +#不计算期权市值盈亏 +defineDict["THOST_FTDC_BLAG_Default"] = '1' +#计算期权市值亏损 +defineDict["THOST_FTDC_BLAG_IncludeOptValLost"] = '2' + +typedefDict["TThostFtdcBalanceAlgorithmType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcActionTypeType是一个执行类型类型 +#////////////////////////////////////////////////////////////////////// +#执行 +defineDict["THOST_FTDC_ACTP_Exec"] = '1' +#放弃 +defineDict["THOST_FTDC_ACTP_Abandon"] = '2' + +typedefDict["TThostFtdcActionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForQuoteStatusType是一个询价状态类型 +#////////////////////////////////////////////////////////////////////// +#已经提交 +defineDict["THOST_FTDC_FQST_Submitted"] = 'a' +#已经接受 +defineDict["THOST_FTDC_FQST_Accepted"] = 'b' +#已经被拒绝 +defineDict["THOST_FTDC_FQST_Rejected"] = 'c' + +typedefDict["TThostFtdcForQuoteStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuotStatusType是一个报价状态类型 +#////////////////////////////////////////////////////////////////////// +#未知 +defineDict["THOST_FTDC_QTST_Unknown"] = 'a' +#已经接受 +defineDict["THOST_FTDC_QTST_Accepted"] = 'b' +#已经撤销 +defineDict["THOST_FTDC_QTST_Canceled"] = 'c' + +typedefDict["TThostFtdcQuotStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcValueMethodType是一个取值方式类型 +#////////////////////////////////////////////////////////////////////// +#按绝对值 +defineDict["THOST_FTDC_VM_Absolute"] = '0' +#按比率 +defineDict["THOST_FTDC_VM_Ratio"] = '1' + +typedefDict["TThostFtdcValueMethodType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExecOrderPositionFlagType是一个期权行权后是否保留期货头寸的标记类型 +#////////////////////////////////////////////////////////////////////// +#保留 +defineDict["THOST_FTDC_EOPF_Reserve"] = '0' +#不保留 +defineDict["THOST_FTDC_EOPF_UnReserve"] = '1' + +typedefDict["TThostFtdcExecOrderPositionFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExecOrderCloseFlagType是一个期权行权后生成的头寸是否自动平仓类型 +#////////////////////////////////////////////////////////////////////// +#自动平仓 +defineDict["THOST_FTDC_EOCF_AutoClose"] = '0' +#免于自动平仓 +defineDict["THOST_FTDC_EOCF_NotToClose"] = '1' + +typedefDict["TThostFtdcExecOrderCloseFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductTypeType是一个产品类型类型 +#////////////////////////////////////////////////////////////////////// +#期货 +defineDict["THOST_FTDC_PTE_Futures"] = '1' +#期权 +defineDict["THOST_FTDC_PTE_Options"] = '2' + +typedefDict["TThostFtdcProductTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCZCEUploadFileNameType是一个郑商所结算文件名类型 +#////////////////////////////////////////////////////////////////////// +#^\d{8}_zz_\d{4} +defineDict["THOST_FTDC_CUFN_CUFN_O"] = 'O' +#^\d{8}成交表 +defineDict["THOST_FTDC_CUFN_CUFN_T"] = 'T' +#^\d{8}单腿持仓表new +defineDict["THOST_FTDC_CUFN_CUFN_P"] = 'P' +#^\d{8}非平仓了结表 +defineDict["THOST_FTDC_CUFN_CUFN_N"] = 'N' +#^\d{8}平仓表 +defineDict["THOST_FTDC_CUFN_CUFN_L"] = 'L' +#^\d{8}资金表 +defineDict["THOST_FTDC_CUFN_CUFN_F"] = 'F' +#^\d{8}组合持仓表 +defineDict["THOST_FTDC_CUFN_CUFN_C"] = 'C' +#^\d{8}保证金参数表 +defineDict["THOST_FTDC_CUFN_CUFN_M"] = 'M' + +typedefDict["TThostFtdcCZCEUploadFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDCEUploadFileNameType是一个大商所结算文件名类型 +#////////////////////////////////////////////////////////////////////// +#^\d{8}_dl_\d{3} +defineDict["THOST_FTDC_DUFN_DUFN_O"] = 'O' +#^\d{8}_成交表 +defineDict["THOST_FTDC_DUFN_DUFN_T"] = 'T' +#^\d{8}_持仓表 +defineDict["THOST_FTDC_DUFN_DUFN_P"] = 'P' +#^\d{8}_资金结算表 +defineDict["THOST_FTDC_DUFN_DUFN_F"] = 'F' +#^\d{8}_优惠组合持仓明细表 +defineDict["THOST_FTDC_DUFN_DUFN_C"] = 'C' +#^\d{8}_持仓明细表 +defineDict["THOST_FTDC_DUFN_DUFN_D"] = 'D' +#^\d{8}_保证金参数表 +defineDict["THOST_FTDC_DUFN_DUFN_M"] = 'M' +#^\d{8}_期权执行表 +defineDict["THOST_FTDC_DUFN_DUFN_S"] = 'S' + +typedefDict["TThostFtdcDCEUploadFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSHFEUploadFileNameType是一个上期所结算文件名类型 +#////////////////////////////////////////////////////////////////////// +#^\d{4}_\d{8}_\d{8}_DailyFundChg +defineDict["THOST_FTDC_SUFN_SUFN_O"] = 'O' +#^\d{4}_\d{8}_\d{8}_Trade +defineDict["THOST_FTDC_SUFN_SUFN_T"] = 'T' +#^\d{4}_\d{8}_\d{8}_SettlementDetail +defineDict["THOST_FTDC_SUFN_SUFN_P"] = 'P' +#^\d{4}_\d{8}_\d{8}_Capital +defineDict["THOST_FTDC_SUFN_SUFN_F"] = 'F' + +typedefDict["TThostFtdcSHFEUploadFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCFFEXUploadFileNameType是一个中金所结算文件名类型 +#////////////////////////////////////////////////////////////////////// +#^\d{4}_SG\d{1}_\d{8}_\d{1}_Trade +defineDict["THOST_FTDC_CFUFN_SUFN_T"] = 'T' +#^\d{4}_SG\d{1}_\d{8}_\d{1}_SettlementDetail +defineDict["THOST_FTDC_CFUFN_SUFN_P"] = 'P' +#^\d{4}_SG\d{1}_\d{8}_\d{1}_Capital +defineDict["THOST_FTDC_CFUFN_SUFN_F"] = 'F' +#^\d{4}_SG\d{1}_\d{8}_\d{1}_OptionExec +defineDict["THOST_FTDC_CFUFN_SUFN_S"] = 'S' + +typedefDict["TThostFtdcCFFEXUploadFileNameType"] = "string" + diff --git a/vn.strategy/strategydemo/demoApi.py b/vn.strategy/strategydemo/demoApi.py new file mode 100644 index 00000000..032070a7 --- /dev/null +++ b/vn.strategy/strategydemo/demoApi.py @@ -0,0 +1,945 @@ +# encoding: UTF-8 + +""" +该文件中包含的是交易平台的底层接口相关的部分, +主要对API进行了一定程度的简化封装,方便开发。 +""" + +import os + +from vnctpmd import MdApi +from vnctptd import TdApi +from eventEngine import * +from ctp_data_type import defineDict + +#---------------------------------------------------------------------- +def print_dict(d): + """打印API收到的字典,该函数主要用于开发时的debug""" + print '-'*60 + l = d.keys() + l.sort() + for key in l: + print key, ':', d[key] + + +######################################################################## +class DemoMdApi(MdApi): + """ + Demo中的行情API封装 + 封装后所有数据自动推送到事件驱动引擎中,由其负责推送到各个监听该事件的回调函数上 + + 对用户暴露的主动函数包括: + 登陆 login + 订阅合约 subscribe + """ + + #---------------------------------------------------------------------- + def __init__(self, eventEngine): + """ + API对象的初始化函数 + """ + super(DemoMdApi, self).__init__() + + # 事件引擎,所有数据都推送到其中,再由事件引擎进行分发 + self.__eventEngine = eventEngine + + # 请求编号,由api负责管理 + self.__reqid = 0 + + # 以下变量用于实现连接和重连后的自动登陆 + self.__userid = '' + self.__password = '' + self.__brokerid = '' + + # 以下集合用于重连后自动订阅之前已订阅的合约,使用集合为了防止重复 + self.__setSubscribed = set() + + # 初始化.con文件的保存目录为\mdconnection,注意这个目录必须已存在,否则会报错 + self.createFtdcMdApi(os.getcwd() + '\\mdconnection\\') + + #---------------------------------------------------------------------- + def onFrontConnected(self): + """服务器连接""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = u'行情服务器连接成功' + self.__eventEngine.put(event) + + # 如果用户已经填入了用户名等等,则自动尝试连接 + if self.__userid: + req = {} + req['UserID'] = self.__userid + req['Password'] = self.__password + req['BrokerID'] = self.__brokerid + self.__reqid = self.__reqid + 1 + self.reqUserLogin(req, self.__reqid) + + #---------------------------------------------------------------------- + def onFrontDisconnected(self, n): + """服务器断开""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = u'行情服务器连接断开' + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onHeartBeatWarning(self, n): + """心跳报警""" + # 因为API的心跳报警比较常被触发,且与API工作关系不大,因此选择忽略 + pass + + #---------------------------------------------------------------------- + def onRspError(self, error, n, last): + """错误回报""" + event = Event(type_=EVENT_LOG) + log = u'行情错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspUserLogin(self, data, error, n, last): + """登陆回报""" + event = Event(type_=EVENT_LOG) + + if error['ErrorID'] == 0: + log = u'行情服务器登陆成功' + else: + log = u'登陆回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + + event.dict_['log'] = log + self.__eventEngine.put(event) + + ## 重连后自动订阅之前已经订阅过的合约 + #if self.__setSubscribed: + #for instrument in self.__setSubscribed: + #self.subscribe(instrument[0], instrument[1]) + + #---------------------------------------------------------------------- + def onRspUserLogout(self, data, error, n, last): + """登出回报""" + event = Event(type_=EVENT_LOG) + + if error['ErrorID'] == 0: + log = u'行情服务器登出成功' + else: + log = u'登出回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspSubMarketData(self, data, error, n, last): + """订阅合约回报""" + # 通常不在乎订阅错误,选择忽略 + pass + + #---------------------------------------------------------------------- + def onRspUnSubMarketData(self, data, error, n, last): + """退订合约回报""" + # 同上 + pass + + #---------------------------------------------------------------------- + def onRtnDepthMarketData(self, data): + """行情推送""" + # 行情推送收到后,同时触发常规行情事件,以及特定合约行情事件,用于满足不同类型的监听 + + # 常规行情事件 + event1 = Event(type_=EVENT_MARKETDATA) + event1.dict_['data'] = data + self.__eventEngine.put(event1) + + # 特定合约行情事件 + event2 = Event(type_=(EVENT_MARKETDATA_CONTRACT+data['InstrumentID'])) + event2.dict_['data'] = data + self.__eventEngine.put(event2) + + #---------------------------------------------------------------------- + def onRspSubForQuoteRsp(self, data, error, n, last): + """订阅期权询价""" + pass + + #---------------------------------------------------------------------- + def onRspUnSubForQuoteRsp(self, data, error, n, last): + """退订期权询价""" + pass + + #---------------------------------------------------------------------- + def onRtnForQuoteRsp(self, data): + """期权询价推送""" + pass + + #---------------------------------------------------------------------- + def login(self, address, userid, password, brokerid): + """连接服务器""" + self.__userid = userid + self.__password = password + self.__brokerid = brokerid + + # 注册服务器地址 + self.registerFront(address) + + # 初始化连接,成功会调用onFrontConnected + self.init() + + #---------------------------------------------------------------------- + def subscribe(self, instrumentid, exchangeid): + """订阅合约""" + self.subscribeMarketData(instrumentid) + + instrument = (instrumentid, exchangeid) + self.__setSubscribed.add(instrument) + + +######################################################################## +class DemoTdApi(TdApi): + """ + Demo中的交易API封装 + 主动函数包括: + login 登陆 + getInstrument 查询合约信息 + getAccount 查询账号资金 + getInvestor 查询投资者 + getPosition 查询持仓 + sendOrder 发单 + cancelOrder 撤单 + """ + + #---------------------------------------------------------------------- + def __init__(self, eventEngine): + """API对象的初始化函数""" + super(DemoTdApi, self).__init__() + + # 事件引擎,所有数据都推送到其中,再由事件引擎进行分发 + self.__eventEngine = eventEngine + + # 请求编号,由api负责管理 + self.__reqid = 0 + + # 报单编号,由api负责管理 + self.__orderref = 0 + + # 以下变量用于实现连接和重连后的自动登陆 + self.__userid = '' + self.__password = '' + self.__brokerid = '' + + # 合约字典(保存合约查询数据) + self.__dictInstrument = {} + + # 初始化.con文件的保存目录为\tdconnection + self.createFtdcTraderApi(os.getcwd() + '\\tdconnection\\') + + #---------------------------------------------------------------------- + def onFrontConnected(self): + """服务器连接""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = u'交易服务器连接成功' + self.__eventEngine.put(event) + + # 如果用户已经填入了用户名等等,则自动尝试连接 + if self.__userid: + req = {} + req['UserID'] = self.__userid + req['Password'] = self.__password + req['BrokerID'] = self.__brokerid + self.__reqid = self.__reqid + 1 + self.reqUserLogin(req, self.__reqid) + + #---------------------------------------------------------------------- + def onFrontDisconnected(self, n): + """服务器断开""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = u'交易服务器连接断开' + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onHeartBeatWarning(self, n): + """""" + pass + + #---------------------------------------------------------------------- + def onRspAuthenticate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspUserLogin(self, data, error, n, last): + """登陆回报""" + event = Event(type_=EVENT_LOG) + + if error['ErrorID'] == 0: + log = u'交易服务器登陆成功' + else: + log = u'登陆回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + + event.dict_['log'] = log + self.__eventEngine.put(event) + + self.getSettlement() # 登录完成后立即查询结算信息 + + #---------------------------------------------------------------------- + def onRspUserLogout(self, data, error, n, last): + """登出回报""" + event = Event(type_=EVENT_LOG) + + if error['ErrorID'] == 0: + log = u'交易服务器登出成功' + else: + log = u'登出回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspUserPasswordUpdate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspTradingAccountPasswordUpdate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspOrderInsert(self, data, error, n, last): + """发单错误(柜台)""" + event = Event(type_=EVENT_LOG) + log = u' 发单错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspParkedOrderInsert(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspParkedOrderAction(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspOrderAction(self, data, error, n, last): + """撤单错误(柜台)""" + event = Event(type_=EVENT_LOG) + log = u'撤单错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspQueryMaxOrderVolume(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspSettlementInfoConfirm(self, data, error, n, last): + """确认结算信息回报""" + event = Event(type_=EVENT_LOG) + log = u'结算信息确认完成' + event.dict_['log'] = log + self.__eventEngine.put(event) + + event = Event(type_=EVENT_TDLOGIN) + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspRemoveParkedOrder(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspRemoveParkedOrderAction(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspExecOrderInsert(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspExecOrderAction(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspForQuoteInsert(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQuoteInsert(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQuoteAction(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryOrder(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTrade(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorPosition(self, data, error, n, last): + """持仓查询回报""" + if error['ErrorID'] == 0: + event = Event(type_=EVENT_POSITION) + event.dict_['data'] = data + self.__eventEngine.put(event) + else: + event = Event(type_=EVENT_LOG) + log = u'持仓查询回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspQryTradingAccount(self, data, error, n, last): + """资金账户查询回报""" + if error['ErrorID'] == 0: + event = Event(type_=EVENT_ACCOUNT) + event.dict_['data'] = data + self.__eventEngine.put(event) + else: + event = Event(type_=EVENT_LOG) + log = u'账户查询回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspQryInvestor(self, data, error, n, last): + """投资者查询回报""" + if error['ErrorID'] == 0: + event = Event(type_=EVENT_INVESTOR) + event.dict_['data'] = data + self.__eventEngine.put(event) + else: + event = Event(type_=EVENT_LOG) + log = u'合约投资者回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspQryTradingCode(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInstrumentMarginRate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInstrumentCommissionRate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExchange(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryProduct(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInstrument(self, data, error, n, last): + """ + 合约查询回报 + 由于该回报的推送速度极快,因此不适合全部存入队列中处理, + 选择先储存在一个本地字典中,全部收集完毕后再推送到队列中 + (由于耗时过长目前使用其他进程读取) + """ + if error['ErrorID'] == 0: + event = Event(type_=EVENT_INSTRUMENT) + event.dict_['data'] = data + event.dict_['last'] = last + self.__eventEngine.put(event) + else: + event = Event(type_=EVENT_LOG) + log = u'合约投资者回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRspQryDepthMarketData(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQrySettlementInfo(self, data, error, n, last): + """查询结算信息回报""" + event = Event(type_=EVENT_LOG) + log = u'结算信息查询完成' + event.dict_['log'] = log + self.__eventEngine.put(event) + + self.confirmSettlement() # 查询完成后立即确认结算信息 + + #---------------------------------------------------------------------- + def onRspQryTransferBank(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorPositionDetail(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryNotice(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQrySettlementInfoConfirm(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorPositionCombineDetail(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryCFMMCTradingAccountKey(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryEWarrantOffset(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorProductGroupMargin(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExchangeMarginRate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExchangeMarginRateAdjust(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExchangeRate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQrySecAgentACIDMap(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryOptionInstrTradeCost(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryOptionInstrCommRate(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExecOrder(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryForQuote(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryQuote(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTransferSerial(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryAccountregister(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspError(self, error, n, last): + """错误回报""" + event = Event(type_=EVENT_LOG) + log = u'交易错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRtnOrder(self, data): + """报单回报""" + # 更新最大报单编号 + newref = data['OrderRef'] + self.__orderref = max(self.__orderref, int(newref)) + + # 常规报单事件 + event1 = Event(type_=EVENT_ORDER) + event1.dict_['data'] = data + self.__eventEngine.put(event1) + + # 特定合约行情事件 + event2 = Event(type_=(EVENT_ORDER_ORDERREF+data['OrderRef'])) + event2.dict_['data'] = data + self.__eventEngine.put(event2) + + #---------------------------------------------------------------------- + def onRtnTrade(self, data): + """成交回报""" + # 常规成交事件 + event1 = Event(type_=EVENT_TRADE) + event1.dict_['data'] = data + self.__eventEngine.put(event1) + + # 特定合约成交事件 + event2 = Event(type_=(EVENT_TRADE_CONTRACT+data['InstrumentID'])) + event2.dict_['data'] = data + self.__eventEngine.put(event2) + + #---------------------------------------------------------------------- + def onErrRtnOrderInsert(self, data, error): + """发单错误回报(交易所)""" + event = Event(type_=EVENT_LOG) + log = u'发单错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onErrRtnOrderAction(self, data, error): + """撤单错误回报(交易所)""" + event = Event(type_=EVENT_LOG) + log = u'撤单错误回报,错误代码:' + unicode(error['ErrorID']) + u',' + u'错误信息:' + error['ErrorMsg'].decode('gbk') + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def onRtnInstrumentStatus(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnTradingNotice(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnErrorConditionalOrder(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnExecOrder(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnExecOrderInsert(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnExecOrderAction(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnForQuoteInsert(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnQuote(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnQuoteInsert(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnQuoteAction(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnForQuoteRsp(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryContractBank(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryParkedOrder(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryParkedOrderAction(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTradingNotice(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryBrokerTradingParams(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryBrokerTradingAlgos(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromBankToFutureByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromFutureToBankByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromBankToFutureByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromFutureToBankByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromBankToFutureByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromFutureToBankByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromBankToFutureByFutureManual(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromFutureToBankByFutureManual(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnQueryBankBalanceByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnBankToFutureByFuture(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnFutureToBankByFuture(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnRepealBankToFutureByFutureManual(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnRepealFutureToBankByFutureManual(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnQueryBankBalanceByFuture(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromBankToFutureByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnRepealFromFutureToBankByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRspFromBankToFutureByFuture(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspFromFutureToBankByFuture(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQueryBankAccountMoneyByFuture(self, data, error, n, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnOpenAccountByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnCancelAccountByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnChangeAccountByBank(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def login(self, address, userid, password, brokerid): + """连接服务器""" + self.__userid = userid + self.__password = password + self.__brokerid = brokerid + + # 数据重传模式设为从本日开始 + self.subscribePrivateTopic(0) + self.subscribePublicTopic(0) + + # 注册服务器地址 + self.registerFront(address) + + # 初始化连接,成功会调用onFrontConnected + self.init() + + #---------------------------------------------------------------------- + def getInstrument(self): + """查询合约""" + self.__reqid = self.__reqid + 1 + self.reqQryInstrument({}, self.__reqid) + + #---------------------------------------------------------------------- + def getAccount(self): + """查询账户""" + self.__reqid = self.__reqid + 1 + self.reqQryTradingAccount({}, self.__reqid) + + #---------------------------------------------------------------------- + def getInvestor(self): + """查询投资者""" + self.__reqid = self.__reqid + 1 + self.reqQryInvestor({}, self.__reqid) + + #---------------------------------------------------------------------- + def getPosition(self): + """查询持仓""" + self.__reqid = self.__reqid + 1 + req = {} + req['BrokerID'] = self.__brokerid + req['InvestorID'] = self.__userid + self.reqQryInvestorPosition(req, self.__reqid) + + #---------------------------------------------------------------------- + def sendOrder(self, instrumentid, exchangeid, price, pricetype, volume, direction, offset): + """发单""" + self.__reqid = self.__reqid + 1 + req = {} + + req['InstrumentID'] = instrumentid + req['OrderPriceType'] = pricetype + req['LimitPrice'] = price + req['VolumeTotalOriginal'] = volume + req['Direction'] = direction + req['CombOffsetFlag'] = offset + + self.__orderref = self.__orderref + 1 + req['OrderRef'] = str(self.__orderref) + + req['InvestorID'] = self.__userid + req['UserID'] = self.__userid + req['BrokerID'] = self.__brokerid + req['CombHedgeFlag'] = defineDict['THOST_FTDC_HF_Speculation'] # 投机单 + req['ContingentCondition'] = defineDict['THOST_FTDC_CC_Immediately'] # 立即发单 + req['ForceCloseReason'] = defineDict['THOST_FTDC_FCC_NotForceClose'] # 非强平 + req['IsAutoSuspend'] = 0 # 非自动挂起 + req['TimeCondition'] = defineDict['THOST_FTDC_TC_GFD'] # 今日有效 + req['VolumeCondition'] = defineDict['THOST_FTDC_VC_AV'] # 任意成交量 + req['MinVolume'] = 1 # 最小成交量为1 + + self.reqOrderInsert(req, self.__reqid) + + # 返回订单号,便于某些算法进行动态管理 + return self.__orderref + + #---------------------------------------------------------------------- + def cancelOrder(self, instrumentid, exchangeid, orderref, frontid, sessionid): + """撤单""" + self.__reqid = self.__reqid + 1 + req = {} + + req['InstrumentID'] = instrumentid + req['ExchangeID'] = exchangeid + req['OrderRef'] = orderref + req['FrontID'] = frontid + req['SessionID'] = sessionid + + req['ActionFlag'] = defineDict['THOST_FTDC_AF_Delete'] + req['BrokerID'] = self.__brokerid + req['InvestorID'] = self.__userid + + self.reqOrderAction(req, self.__reqid) + + #---------------------------------------------------------------------- + def getSettlement(self): + """查询结算信息""" + self.__reqid = self.__reqid + 1 + req = {} + + req['BrokerID'] = self.__brokerid + req['InvestorID'] = self.__userid + + self.reqQrySettlementInfo(req, self.__reqid) + + #---------------------------------------------------------------------- + def confirmSettlement(self): + """确认结算信息""" + self.__reqid = self.__reqid + 1 + req = {} + + req['BrokerID'] = self.__brokerid + req['InvestorID'] = self.__userid + + self.reqSettlementInfoConfirm(req, self.__reqid) \ No newline at end of file diff --git a/vn.strategy/strategydemo/demoEngine.py b/vn.strategy/strategydemo/demoEngine.py new file mode 100644 index 00000000..6cd4a603 --- /dev/null +++ b/vn.strategy/strategydemo/demoEngine.py @@ -0,0 +1,189 @@ +# encoding: UTF-8 + +""" +该文件中包含的是交易平台的中间层, +将API和事件引擎包装到一个主引擎类中,便于管理。 + +当客户想采用服务器-客户机模式,实现交易功能放在托管机房, +而图形控制功能在本地电脑时,该主引擎负责实现远程通讯。 +""" + +import sys +from datetime import date +from time import sleep +import shelve + +from PyQt4 import QtCore + +from demoApi import * +from eventEngine import EventEngine + + +######################################################################## +class MainEngine: + """主引擎,负责对API的调度""" + + #---------------------------------------------------------------------- + def __init__(self): + """Constructor""" + self.ee = EventEngine() # 创建事件驱动引擎 + + self.md = DemoMdApi(self.ee) # 创建API接口 + self.td = DemoTdApi(self.ee) + + self.ee.start() # 启动事件驱动引擎 + + # 循环查询持仓和账户相关 + self.countGet = 0 # 查询延时计数 + self.lastGet = 'Account' # 上次查询的性质 + self.ee.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 + + # 合约储存相关 + self.dictInstrument = {} # 字典(保存合约查询数据) + self.ee.register(EVENT_INSTRUMENT, self.insertInstrument) + + #---------------------------------------------------------------------- + def login(self, userid, password, brokerid, mdAddress, tdAddress): + """登陆""" + self.md.login(mdAddress, userid, password, brokerid) + self.td.login(tdAddress, userid, password, brokerid) + + #---------------------------------------------------------------------- + def subscribe(self, instrumentid, exchangeid): + """订阅合约""" + self.md.subscribe(instrumentid, exchangeid) + + #---------------------------------------------------------------------- + def getAccount(self): + """查询账户""" + self.td.getAccount() + + #---------------------------------------------------------------------- + def getInvestor(self): + """查询投资者""" + self.td.getInvestor() + + #---------------------------------------------------------------------- + def getPosition(self): + """查询持仓""" + self.td.getPosition() + + #---------------------------------------------------------------------- + def getInstrument(self): + """获取合约""" + event = Event(type_=EVENT_LOG) + log = u'查询合约信息' + event.dict_['log'] = log + self.ee.put(event) + + self.td.getInstrument() + + #---------------------------------------------------------------------- + def sendOrder(self, instrumentid, exchangeid, price, pricetype, volume, direction, offset): + """发单""" + ref = self.td.sendOrder(instrumentid, exchangeid, price, pricetype, volume, direction, offset) + return ref + + #---------------------------------------------------------------------- + def cancelOrder(self, instrumentid, exchangeid, orderref, frontid, sessionid): + """撤单""" + self.td.cancelOrder(instrumentid, exchangeid, orderref, frontid, sessionid) + + #---------------------------------------------------------------------- + def getAccountPosition(self, event): + """循环查询账户和持仓""" + self.countGet = self.countGet + 1 + + # 每5秒发一次查询 + if self.countGet > 5: + self.countGet = 0 # 清空计数 + + if self.lastGet == 'Account': + self.getPosition() + self.lastGet = 'Position' + else: + self.getAccount() + self.lastGet = 'Account' + + #---------------------------------------------------------------------- + def initGet(self, event): + """在交易服务器登录成功后,开始初始化查询""" + # 打开设定文件setting.vn + f = shelve.open('setting.vn') + + # 尝试读取设定字典,若该字典不存在,则发出查询请求 + try: + d = f['instrument'] + + # 如果本地保存的合约数据是今日的,则载入,否则发出查询请求 + today = date.today() + if d['date'] == today: + self.dictInstrument = d['dictInstrument'] + + event = Event(type_=EVENT_LOG) + log = u'合约信息读取完成' + event.dict_['log'] = log + self.ee.put(event) + + self.getInvestor() + + # 开始循环查询 + self.ee.register(EVENT_TIMER, self.getAccountPosition) + else: + self.getInstrument() + except KeyError: + self.getInstrument() + + f.close() + + #---------------------------------------------------------------------- + def insertInstrument(self, event): + """插入合约对象""" + data = event.dict_['data'] + last = event.dict_['last'] + + self.dictInstrument[data['InstrumentID']] = data + + # 合约对象查询完成后,查询投资者信息并开始循环查询 + if last: + # 将查询完成的合约信息保存到本地文件,今日登录可直接使用不再查询 + self.saveInstrument() + + event = Event(type_=EVENT_LOG) + log = u'合约信息查询完成' + event.dict_['log'] = log + self.ee.put(event) + + self.getInvestor() + + # 开始循环查询 + self.ee.register(EVENT_TIMER, self.getAccountPosition) + + #---------------------------------------------------------------------- + def selectInstrument(self, instrumentid): + """获取合约信息对象""" + try: + instrument = self.dictInstrument[instrumentid] + except KeyError: + instrument = None + return instrument + + #---------------------------------------------------------------------- + def exit(self): + """退出""" + # 销毁API对象 + self.td = None + self.md = None + + # 停止事件驱动引擎 + self.ee.stop() + + #---------------------------------------------------------------------- + def saveInstrument(self): + """保存合约属性数据""" + f = shelve.open('setting.vn') + d = {} + d['dictInstrument'] = self.dictInstrument + d['date'] = date.today() + f['instrument'] = d + f.close() \ No newline at end of file diff --git a/vn.strategy/strategydemo/demoMain.py b/vn.strategy/strategydemo/demoMain.py new file mode 100644 index 00000000..fe5ab501 --- /dev/null +++ b/vn.strategy/strategydemo/demoMain.py @@ -0,0 +1,32 @@ +# encoding: UTF-8 + +""" +该文件中包含的是交易平台的主函数, +将底层、中层、上层的功能导入,并运行。 +""" + +import ctypes +import sys + +from demoEngine import MainEngine +from demoUi import * + +#---------------------------------------------------------------------- +def main(): + """主程序入口""" + ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('vn.py demo') # win7以下请注释掉该行 + + app = QtGui.QApplication(sys.argv) + app.setWindowIcon(QtGui.QIcon('vnpy.ico')) + + me = MainEngine() + + mw = MainWindow(me.ee, me) + mw.showMaximized() + + sys.exit(app.exec_()) + + +if __name__ == '__main__': + main() + diff --git a/vn.strategy/strategydemo/demoStrategy.py b/vn.strategy/strategydemo/demoStrategy.py new file mode 100644 index 00000000..dc09763e --- /dev/null +++ b/vn.strategy/strategydemo/demoStrategy.py @@ -0,0 +1,18 @@ +# encoding: UTF-8 + +from strategyEngine import StrategyTemplate + + +######################################################################## +class SimpleEmaStrategy(StrategyTemplate): + """简单双指数移动均线策略""" + + #---------------------------------------------------------------------- + def __init__(self, name, symbol, engine): + """Constructor""" + super(SimpleEmaStrategy, self).__init__(name, symbol, engine) + + + + + \ No newline at end of file diff --git a/vn.strategy/strategydemo/demoUi.py b/vn.strategy/strategydemo/demoUi.py new file mode 100644 index 00000000..d972fa97 --- /dev/null +++ b/vn.strategy/strategydemo/demoUi.py @@ -0,0 +1,1269 @@ +# encoding: UTF-8 + +""" +该文件中包含的是交易平台的上层UI部分, +通过图形界面调用中间层的主动函数,并监控相关数据更新。 + +Monitor主要负责监控数据,有部分包含主动功能。 +Widget主要用于调用主动功能,有部分包含数据监控。 +""" + +from __future__ import division + +import time +import sys +import shelve +from collections import OrderedDict + +import sip +from PyQt4 import QtCore, QtGui + +from eventEngine import * + + + +######################################################################## +class LogMonitor(QtGui.QTableWidget): + """用于显示日志""" + signal = QtCore.pyqtSignal(type(Event())) + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, parent=None): + """Constructor""" + super(LogMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """初始化界面""" + self.setWindowTitle(u'日志') + + self.setColumnCount(2) + self.setHorizontalHeaderLabels([u'时间', u'日志']) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + # 自动调整列宽 + self.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.ResizeToContents) + self.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.Stretch) + + #---------------------------------------------------------------------- + def registerEvent(self): + """注册事件监听""" + # Qt图形组件的GUI更新必须使用Signal/Slot机制,否则有可能导致程序崩溃 + # 因此这里先将图形更新函数作为Slot,和信号连接起来 + # 然后将信号的触发函数注册到事件驱动引擎中 + self.signal.connect(self.updateLog) + self.__eventEngine.register(EVENT_LOG, self.signal.emit) + + #---------------------------------------------------------------------- + def updateLog(self, event): + """更新日志""" + # 获取当前时间和日志内容 + t = time.strftime('%H:%M:%S',time.localtime(time.time())) + log = event.dict_['log'] + + # 在表格最上方插入一行 + self.insertRow(0) + + # 创建单元格 + cellTime = QtGui.QTableWidgetItem(t) + cellLog = QtGui.QTableWidgetItem(log) + + # 将单元格插入表格 + self.setItem(0, 0, cellTime) + self.setItem(0, 1, cellLog) + + +######################################################################## +class AccountMonitor(QtGui.QTableWidget): + """用于显示账户""" + signal = QtCore.pyqtSignal(type(Event())) + + dictLabels = OrderedDict() + dictLabels['AccountID'] = u'投资者账户' + dictLabels['PreBalance'] = u'昨结' + dictLabels['Withdraw'] = u'出金' + dictLabels['Deposit'] = u'入金' + dictLabels['FrozenCash'] = u'冻结资金' + dictLabels['FrozenMargin'] = u'冻结保证金' + dictLabels['FrozenCommission'] = u'冻结手续费' + dictLabels['Commission'] = u'手续费' + dictLabels['CurrMargin'] = u'当前保证金' + dictLabels['Available'] = u'可用资金' + dictLabels['WithdrawQuota'] = u'可取资金' + dictLabels['Balance'] = u'账户资金' + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, parent=None): + """Constructor""" + super(AccountMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + + self.dictAccount = {} # 用来保存账户对应的单元格 + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'账户') + + self.setColumnCount(len(self.dictLabels)) + self.setHorizontalHeaderLabels(self.dictLabels.values()) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signal.connect(self.updateAccount) + self.__eventEngine.register(EVENT_ACCOUNT, self.signal.emit) + + #---------------------------------------------------------------------- + def updateAccount(self, event): + """""" + data = event.dict_['data'] + accountid = data['AccountID'] + + # 如果之前已经收到过这个账户的数据, 则直接更新 + if accountid in self.dictAccount: + d = self.dictAccount[accountid] + + for label, cell in d.items(): + cell.setText(str(data[label])) + # 否则插入新的一行,并更新 + else: + self.insertRow(0) + d = {} + + for col, label in enumerate(self.dictLabels.keys()): + cell = QtGui.QTableWidgetItem(str(data[label])) + self.setItem(0, col, cell) + d[label] = cell + + self.dictAccount[accountid] = d + + +######################################################################## +class TradeMonitor(QtGui.QTableWidget): + """用于显示成交记录""" + signal = QtCore.pyqtSignal(type(Event())) + + dictLabels = OrderedDict() + dictLabels['InstrumentID'] = u'合约代码' + dictLabels['ExchangeInstID'] = u'交易所合约代码' + dictLabels['ExchangeID'] = u'交易所' + dictLabels['Direction'] = u'方向' + dictLabels['OffsetFlag'] = u'开平' + dictLabels['TradeID'] = u'成交编号' + dictLabels['TradeTime'] = u'成交时间' + dictLabels['Volume'] = u'数量' + dictLabels['Price'] = u'价格' + dictLabels['OrderRef'] = u'报单号' + dictLabels['OrderSysID'] = u'报单系统号' + + dictDirection = {} + dictDirection['0'] = u'买' + dictDirection['1'] = u'卖' + dictDirection['2'] = u'ETF申购' + dictDirection['3'] = u'ETF赎回' + dictDirection['4'] = u'ETF现金替代' + dictDirection['5'] = u'债券入库' + dictDirection['6'] = u'债券出库' + dictDirection['7'] = u'配股' + dictDirection['8'] = u'转托管' + dictDirection['9'] = u'信用账户配股' + dictDirection['A'] = u'担保品买入' + dictDirection['B'] = u'担保品卖出' + dictDirection['C'] = u'担保品转入' + dictDirection['D'] = u'担保品转出' + dictDirection['E'] = u'融资买入' + dictDirection['F'] = u'融资卖出' + dictDirection['G'] = u'卖券还款' + dictDirection['H'] = u'买券还券' + dictDirection['I'] = u'直接还款' + dictDirection['J'] = u'直接换券' + dictDirection['K'] = u'余券划转' + dictDirection['L'] = u'OF申购' + dictDirection['M'] = u'OF赎回' + dictDirection['N'] = u'SF拆分' + dictDirection['O'] = u'SF合并' + dictDirection['P'] = u'备兑' + dictDirection['Q'] = u'证券冻结/解冻' + dictDirection['R'] = u'行权' + + dictOffset = {} + dictOffset['0'] = u'开仓' + dictOffset['1'] = u'平仓' + dictOffset['2'] = u'强平' + dictOffset['3'] = u'平今' + dictOffset['4'] = u'平昨' + dictOffset['5'] = u'强减' + dictOffset['6'] = u'本地强平' + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, parent=None): + """Constructor""" + super(TradeMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'成交') + + self.setColumnCount(len(self.dictLabels)) + self.setHorizontalHeaderLabels(self.dictLabels.values()) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signal.connect(self.updateTrade) + self.__eventEngine.register(EVENT_TRADE, self.signal.emit) + + #---------------------------------------------------------------------- + def updateTrade(self, event): + """""" + data = event.dict_['data'] + + self.insertRow(0) + + for col, label in enumerate(self.dictLabels.keys()): + if label == 'Direction': + try: + value = self.dictDirection[data[label]] + except KeyError: + value = u'未知类型' + elif label == 'OffsetFlag': + try: + value = self.dictOffset[data[label]] + except KeyError: + value = u'未知类型' + else: + value = str(data[label]) + + cell = QtGui.QTableWidgetItem(value) + self.setItem(0, col, cell) + + +######################################################################## +class PositionMonitor(QtGui.QTableWidget): + """用于显示持仓""" + signal = QtCore.pyqtSignal(type(Event())) + + dictLabels = OrderedDict() + dictLabels['InstrumentID'] = u'合约代码' + dictLabels['PosiDirection'] = u'方向' + dictLabels['Position'] = u'持仓' + dictLabels['LongFrozen'] = u'多头冻结' + dictLabels['ShortFrozen'] = u'空头冻结' + dictLabels['PositionCost'] = u'持仓成本' + dictLabels['OpenCost'] = u'开仓成本' + + dictPosiDirection = {} + dictPosiDirection['1'] = u'净' + dictPosiDirection['2'] = u'多' + dictPosiDirection['3'] = u'空' + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, parent=None): + """Constructor""" + super(PositionMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + + self.dictPosition = {} # 用来保存持仓对应的单元格 + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'持仓') + + self.setColumnCount(len(self.dictLabels)) + self.setHorizontalHeaderLabels(self.dictLabels.values()) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signal.connect(self.updatePosition) + self.__eventEngine.register(EVENT_POSITION, self.signal.emit) + + #---------------------------------------------------------------------- + def updatePosition(self, event): + """""" + data = event.dict_['data'] + + # 过滤返回值为空的情况 + if data['InstrumentID']: + posid = data['InstrumentID'] + '.' + data['PosiDirection'] + + # 如果之前已经收到过这个账户的数据, 则直接更新 + if posid in self.dictPosition: + d = self.dictPosition[posid] + + for label, cell in d.items(): + if label == 'PosiDirection': + try: + value = self.dictPosiDirection[data[label]] + except KeyError: + value = u'未知类型' + else: + value = str(data[label]) + cell.setText(value) + # 否则插入新的一行,并更新 + else: + self.insertRow(0) + d = {} + + for col, label in enumerate(self.dictLabels.keys()): + if label == 'PosiDirection': + try: + value = self.dictPosiDirection[data[label]] + except KeyError: + value = u'未知类型' + else: + value = str(data[label]) + cell = QtGui.QTableWidgetItem(value) + self.setItem(0, col, cell) + d[label] = cell + + self.dictPosition[posid] = d + + +######################################################################## +class OrderMonitor(QtGui.QTableWidget): + """用于显示所有报单""" + signal = QtCore.pyqtSignal(type(Event())) + + dictLabels = OrderedDict() + dictLabels['OrderRef'] = u'报单号' + dictLabels['OrderSysID'] = u'系统编号' + dictLabels['InstrumentID'] = u'合约代码' + dictLabels['ExchangeInstID'] = u'交易所合约代码' + dictLabels['Direction'] = u'方向' + dictLabels['CombOffsetFlag'] = u'开平' + dictLabels['LimitPrice'] = u'价格' + dictLabels['VolumeTotalOriginal'] = u'委托数量' + dictLabels['VolumeTraded'] = u'成交数量' + dictLabels['InsertTime'] = u'委托时间' + dictLabels['CancelTime'] = u'撤销时间' + dictLabels['StatusMsg'] = u'状态信息' + + dictDirection = {} + dictDirection['0'] = u'买' + dictDirection['1'] = u'卖' + dictDirection['2'] = u'ETF申购' + dictDirection['3'] = u'ETF赎回' + dictDirection['4'] = u'ETF现金替代' + dictDirection['5'] = u'债券入库' + dictDirection['6'] = u'债券出库' + dictDirection['7'] = u'配股' + dictDirection['8'] = u'转托管' + dictDirection['9'] = u'信用账户配股' + dictDirection['A'] = u'担保品买入' + dictDirection['B'] = u'担保品卖出' + dictDirection['C'] = u'担保品转入' + dictDirection['D'] = u'担保品转出' + dictDirection['E'] = u'融资买入' + dictDirection['F'] = u'融资卖出' + dictDirection['G'] = u'卖券还款' + dictDirection['H'] = u'买券还券' + dictDirection['I'] = u'直接还款' + dictDirection['J'] = u'直接换券' + dictDirection['K'] = u'余券划转' + dictDirection['L'] = u'OF申购' + dictDirection['M'] = u'OF赎回' + dictDirection['N'] = u'SF拆分' + dictDirection['O'] = u'SF合并' + dictDirection['P'] = u'备兑' + dictDirection['Q'] = u'证券冻结/解冻' + dictDirection['R'] = u'行权' + + dictOffset = {} + dictOffset['0'] = u'开仓' + dictOffset['1'] = u'平仓' + dictOffset['2'] = u'强平' + dictOffset['3'] = u'平今' + dictOffset['4'] = u'平昨' + dictOffset['5'] = u'强减' + dictOffset['6'] = u'本地强平' + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine, parent=None): + """Constructor""" + super(OrderMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + self.__mainEngine = mainEngine + + self.dictOrder = {} # 用来保存报单号对应的单元格对象 + self.dictOrderData = {} # 用来保存报单数据 + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'报单') + + self.setColumnCount(len(self.dictLabels)) + self.setHorizontalHeaderLabels(self.dictLabels.values()) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signal.connect(self.updateOrder) + self.__eventEngine.register(EVENT_ORDER, self.signal.emit) + + self.itemDoubleClicked.connect(self.cancelOrder) + + #---------------------------------------------------------------------- + def updateOrder(self, event): + """""" + data = event.dict_['data'] + orderref = data['OrderRef'] + + self.dictOrderData[orderref] = data + + # 如果之前已经收到过这个账户的数据, 则直接更新 + if orderref in self.dictOrder: + d = self.dictOrder[orderref] + + for label, cell in d.items(): + if label == 'Direction': + try: + value = self.dictDirection[data[label]] + except KeyError: + value = u'未知类型' + elif label == 'CombOffsetFlag': + try: + value = self.dictOffset[data[label]] + except KeyError: + value = u'未知类型' + elif label == 'StatusMsg': + value = data[label].decode('gbk') + else: + value = str(data[label]) + + cell.setText(value) + # 否则插入新的一行,并更新 + else: + self.insertRow(0) + d = {} + + for col, label in enumerate(self.dictLabels.keys()): + if label == 'Direction': + try: + value = self.dictDirection[data[label]] + except KeyError: + value = u'未知类型' + elif label == 'CombOffsetFlag': + try: + value = self.dictOffset[data[label]] + except KeyError: + value = u'未知类型' + elif label == 'StatusMsg': + value = data[label].decode('gbk') + else: + value = str(data[label]) + + cell = QtGui.QTableWidgetItem(value) + self.setItem(0, col, cell) + d[label] = cell + + cell.orderref = orderref # 动态绑定报单号到单元格上 + + self.dictOrder[orderref] = d + + #---------------------------------------------------------------------- + def cancelOrder(self, cell): + """双击撤单""" + orderref = cell.orderref + order = self.dictOrderData[orderref] + + # 撤单前检查报单是否已经撤销或者全部成交 + if not (order['OrderStatus'] == '0' or order['OrderStatus'] == '5'): + self.__mainEngine.cancelOrder(order['InstrumentID'], + order['ExchangeID'], + orderref, + order['FrontID'], + order['SessionID']) + + #---------------------------------------------------------------------- + def cancelAll(self): + """全撤""" + for order in self.dictOrderData.values(): + if not (order['OrderStatus'] == '0' or order['OrderStatus'] == '5'): + self.__mainEngine.cancelOrder(order['InstrumentID'], + order['ExchangeID'], + order['OrderRef'], + order['FrontID'], + order['SessionID']) + + +######################################################################## +class MarketDataMonitor(QtGui.QTableWidget): + """用于显示行情""" + signal = QtCore.pyqtSignal(type(Event())) + + dictLabels = OrderedDict() + dictLabels['Name'] = u'合约名称' + dictLabels['InstrumentID'] = u'合约代码' + dictLabels['ExchangeInstID'] = u'合约交易所代码' + + dictLabels['BidPrice1'] = u'买一价' + dictLabels['BidVolume1'] = u'买一量' + dictLabels['AskPrice1'] = u'卖一价' + dictLabels['AskVolume1'] = u'卖一量' + + dictLabels['LastPrice'] = u'最新价' + dictLabels['Volume'] = u'成交量' + + dictLabels['UpdateTime'] = u'更新时间' + + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine, parent=None): + """Constructor""" + super(MarketDataMonitor, self).__init__(parent) + self.__eventEngine = eventEngine + self.__mainEngine = mainEngine + + self.dictData = {} + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'行情') + + self.setColumnCount(len(self.dictLabels)) + self.setHorizontalHeaderLabels(self.dictLabels.values()) + + self.verticalHeader().setVisible(False) # 关闭左边的垂直表头 + self.setEditTriggers(QtGui.QTableWidget.NoEditTriggers) # 设为不可编辑状态 + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signal.connect(self.updateData) + self.__eventEngine.register(EVENT_MARKETDATA, self.signal.emit) + + #---------------------------------------------------------------------- + def updateData(self, event): + """""" + data = event.dict_['data'] + instrumentid = data['InstrumentID'] + + # 如果之前已经收到过这个账户的数据, 则直接更新 + if instrumentid in self.dictData: + d = self.dictData[instrumentid] + + for label, cell in d.items(): + if label != 'Name': + value = str(data[label]) + else: + value = self.getName(data['InstrumentID']) + cell.setText(value) + # 否则插入新的一行,并更新 + else: + row = self.rowCount() + self.insertRow(row) + d = {} + + for col, label in enumerate(self.dictLabels.keys()): + if label != 'Name': + value = str(data[label]) + cell = QtGui.QTableWidgetItem(value) + self.setItem(row, col, cell) + d[label] = cell + else: + name = self.getName(data['InstrumentID']) + cell = QtGui.QTableWidgetItem(name) + self.setItem(row, col, cell) + d[label] = cell + + self.dictData[instrumentid] = d + + #---------------------------------------------------------------------- + def getName(self, instrumentid): + """获取名称""" + instrument = self.__mainEngine.selectInstrument(instrumentid) + if instrument: + return instrument['InstrumentName'].decode('GBK') + else: + return '' + + +######################################################################## +class LoginWidget(QtGui.QDialog): + """登录""" + + #---------------------------------------------------------------------- + def __init__(self, mainEngine, parent=None): + """Constructor""" + super(LoginWidget, self).__init__() + self.__mainEngine = mainEngine + + self.initUi() + self.loadData() + + #---------------------------------------------------------------------- + def initUi(self): + """初始化界面""" + self.setWindowTitle(u'登录') + + # 设置组件 + labelUserID = QtGui.QLabel(u'账号:') + labelPassword = QtGui.QLabel(u'密码:') + labelMdAddress = QtGui.QLabel(u'行情服务器:') + labelTdAddress = QtGui.QLabel(u'交易服务器:') + labelBrokerID = QtGui.QLabel(u'经纪商代码') + + self.editUserID = QtGui.QLineEdit() + self.editPassword = QtGui.QLineEdit() + self.editMdAddress = QtGui.QLineEdit() + self.editTdAddress = QtGui.QLineEdit() + self.editBrokerID = QtGui.QLineEdit() + + self.editUserID.setMinimumWidth(200) + + buttonLogin = QtGui.QPushButton(u'登录') + buttonCancel = QtGui.QPushButton(u'取消') + buttonLogin.clicked.connect(self.login) + buttonCancel.clicked.connect(self.close) + + # 设置布局 + buttonHBox = QtGui.QHBoxLayout() + buttonHBox.addStretch() + buttonHBox.addWidget(buttonLogin) + buttonHBox.addWidget(buttonCancel) + + grid = QtGui.QGridLayout() + grid.addWidget(labelUserID, 0, 0) + grid.addWidget(labelPassword, 1, 0) + grid.addWidget(labelMdAddress, 2, 0) + grid.addWidget(labelTdAddress, 3, 0) + grid.addWidget(labelBrokerID, 4, 0) + grid.addWidget(self.editUserID, 0, 1) + grid.addWidget(self.editPassword, 1, 1) + grid.addWidget(self.editMdAddress, 2, 1) + grid.addWidget(self.editTdAddress, 3, 1) + grid.addWidget(self.editBrokerID, 4, 1) + grid.addLayout(buttonHBox, 5, 0, 1, 2) + + self.setLayout(grid) + + #---------------------------------------------------------------------- + def login(self): + """登录""" + userid = str(self.editUserID.text()) + password = str(self.editPassword.text()) + mdAddress = str(self.editMdAddress.text()) + tdAddress = str(self.editTdAddress.text()) + brokerid = str(self.editBrokerID.text()) + + self.__mainEngine.login(userid, password, brokerid, mdAddress, tdAddress) + self.close() + + #---------------------------------------------------------------------- + def loadData(self): + """读取数据""" + f = shelve.open('setting.vn') + + try: + setting = f['login'] + userid = setting['userid'] + password = setting['password'] + mdAddress = setting['mdAddress'] + tdAddress = setting['tdAddress'] + brokerid = setting['brokerid'] + + self.editUserID.setText(userid) + self.editPassword.setText(password) + self.editMdAddress.setText(mdAddress) + self.editTdAddress.setText(tdAddress) + self.editBrokerID.setText(brokerid) + except KeyError: + pass + + f.close() + + #---------------------------------------------------------------------- + def saveData(self): + """保存数据""" + setting = {} + setting['userid'] = str(self.editUserID.text()) + setting['password'] = str(self.editPassword.text()) + setting['mdAddress'] = str(self.editMdAddress.text()) + setting['tdAddress'] = str(self.editTdAddress.text()) + setting['brokerid'] = str(self.editBrokerID.text()) + + f = shelve.open('setting.vn') + f['login'] = setting + f.close() + + #---------------------------------------------------------------------- + def closeEvent(self, event): + """关闭事件处理""" + # 当窗口被关闭时,先保存登录数据,再关闭 + self.saveData() + event.accept() + + +######################################################################## +class ControlWidget(QtGui.QWidget): + """调用查询函数""" + + #---------------------------------------------------------------------- + def __init__(self, mainEngine, parent=None): + """Constructor""" + super(ControlWidget, self).__init__() + self.__mainEngine = mainEngine + + self.initUi() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'测试') + + buttonAccount = QtGui.QPushButton(u'查询账户') + buttonInvestor = QtGui.QPushButton(u'查询投资者') + buttonPosition = QtGui.QPushButton(u'查询持仓') + + buttonAccount.clicked.connect(self.__mainEngine.getAccount) + buttonInvestor.clicked.connect(self.__mainEngine.getInvestor) + buttonPosition.clicked.connect(self.__mainEngine.getPosition) + + hBox = QtGui.QHBoxLayout() + hBox.addWidget(buttonAccount) + hBox.addWidget(buttonInvestor) + hBox.addWidget(buttonPosition) + + self.setLayout(hBox) + + +######################################################################## +class TradingWidget(QtGui.QWidget): + """交易""" + signal = QtCore.pyqtSignal(type(Event())) + + dictDirection = OrderedDict() + dictDirection['0'] = u'买' + dictDirection['1'] = u'卖' + + dictOffset = OrderedDict() + dictOffset['0'] = u'开仓' + dictOffset['1'] = u'平仓' + dictOffset['3'] = u'平今' + + dictPriceType = OrderedDict() + dictPriceType['1'] = u'任意价' + dictPriceType['2'] = u'限价' + dictPriceType['3'] = u'最优价' + dictPriceType['4'] = u'最新价' + + # 反转字典 + dictDirectionReverse = {value:key for key,value in dictDirection.items()} + dictOffsetReverse = {value:key for key, value in dictOffset.items()} + dictPriceTypeReverse = {value:key for key, value in dictPriceType.items()} + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine, orderMonitor, parent=None): + """Constructor""" + super(TradingWidget, self).__init__() + self.__eventEngine = eventEngine + self.__mainEngine = mainEngine + self.__orderMonitor = orderMonitor + + self.instrumentid = '' + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """初始化界面""" + self.setWindowTitle(u'交易') + + # 左边部分 + labelID = QtGui.QLabel(u'代码') + labelName = QtGui.QLabel(u'名称') + labelDirection = QtGui.QLabel(u'委托类型') + labelOffset = QtGui.QLabel(u'开平') + labelPrice = QtGui.QLabel(u'价格') + labelVolume = QtGui.QLabel(u'数量') + labelPriceType = QtGui.QLabel(u'价格类型') + + self.lineID = QtGui.QLineEdit() + self.lineName = QtGui.QLineEdit() + + self.comboDirection = QtGui.QComboBox() + self.comboDirection.addItems(self.dictDirection.values()) + + self.comboOffset = QtGui.QComboBox() + self.comboOffset.addItems(self.dictOffset.values()) + + self.spinPrice = QtGui.QDoubleSpinBox() + self.spinPrice.setDecimals(4) + self.spinPrice.setMinimum(0) + self.spinPrice.setMaximum(10000) + + self.spinVolume = QtGui.QSpinBox() + self.spinVolume.setMinimum(0) + self.spinVolume.setMaximum(1000000) + + self.comboPriceType = QtGui.QComboBox() + self.comboPriceType.addItems(self.dictPriceType.values()) + + gridleft = QtGui.QGridLayout() + gridleft.addWidget(labelID, 0, 0) + gridleft.addWidget(labelName, 1, 0) + gridleft.addWidget(labelDirection, 2, 0) + gridleft.addWidget(labelOffset, 3, 0) + gridleft.addWidget(labelPrice, 4, 0) + gridleft.addWidget(labelVolume, 5, 0) + gridleft.addWidget(labelPriceType, 6, 0) + gridleft.addWidget(self.lineID, 0, 1) + gridleft.addWidget(self.lineName, 1, 1) + gridleft.addWidget(self.comboDirection, 2, 1) + gridleft.addWidget(self.comboOffset, 3, 1) + gridleft.addWidget(self.spinPrice, 4, 1) + gridleft.addWidget(self.spinVolume, 5, 1) + gridleft.addWidget(self.comboPriceType, 6, 1) + + # 右边部分 + labelBid1 = QtGui.QLabel(u'买一') + labelBid2 = QtGui.QLabel(u'买二') + labelBid3 = QtGui.QLabel(u'买三') + labelBid4 = QtGui.QLabel(u'买四') + labelBid5 = QtGui.QLabel(u'买五') + + labelAsk1 = QtGui.QLabel(u'卖一') + labelAsk2 = QtGui.QLabel(u'卖二') + labelAsk3 = QtGui.QLabel(u'卖三') + labelAsk4 = QtGui.QLabel(u'卖四') + labelAsk5 = QtGui.QLabel(u'卖五') + + self.labelBidPrice1 = QtGui.QLabel() + self.labelBidPrice2 = QtGui.QLabel() + self.labelBidPrice3 = QtGui.QLabel() + self.labelBidPrice4 = QtGui.QLabel() + self.labelBidPrice5 = QtGui.QLabel() + self.labelBidVolume1 = QtGui.QLabel() + self.labelBidVolume2 = QtGui.QLabel() + self.labelBidVolume3 = QtGui.QLabel() + self.labelBidVolume4 = QtGui.QLabel() + self.labelBidVolume5 = QtGui.QLabel() + + self.labelAskPrice1 = QtGui.QLabel() + self.labelAskPrice2 = QtGui.QLabel() + self.labelAskPrice3 = QtGui.QLabel() + self.labelAskPrice4 = QtGui.QLabel() + self.labelAskPrice5 = QtGui.QLabel() + self.labelAskVolume1 = QtGui.QLabel() + self.labelAskVolume2 = QtGui.QLabel() + self.labelAskVolume3 = QtGui.QLabel() + self.labelAskVolume4 = QtGui.QLabel() + self.labelAskVolume5 = QtGui.QLabel() + + labelLast = QtGui.QLabel(u'最新') + self.labelLastPrice = QtGui.QLabel() + self.labelReturn = QtGui.QLabel() + + self.labelLastPrice.setMinimumWidth(60) + self.labelReturn.setMinimumWidth(60) + + gridRight = QtGui.QGridLayout() + gridRight.addWidget(labelAsk5, 0, 0) + gridRight.addWidget(labelAsk4, 1, 0) + gridRight.addWidget(labelAsk3, 2, 0) + gridRight.addWidget(labelAsk2, 3, 0) + gridRight.addWidget(labelAsk1, 4, 0) + gridRight.addWidget(labelLast, 5, 0) + gridRight.addWidget(labelBid1, 6, 0) + gridRight.addWidget(labelBid2, 7, 0) + gridRight.addWidget(labelBid3, 8, 0) + gridRight.addWidget(labelBid4, 9, 0) + gridRight.addWidget(labelBid5, 10, 0) + + gridRight.addWidget(self.labelAskPrice5, 0, 1) + gridRight.addWidget(self.labelAskPrice4, 1, 1) + gridRight.addWidget(self.labelAskPrice3, 2, 1) + gridRight.addWidget(self.labelAskPrice2, 3, 1) + gridRight.addWidget(self.labelAskPrice1, 4, 1) + gridRight.addWidget(self.labelLastPrice, 5, 1) + gridRight.addWidget(self.labelBidPrice1, 6, 1) + gridRight.addWidget(self.labelBidPrice2, 7, 1) + gridRight.addWidget(self.labelBidPrice3, 8, 1) + gridRight.addWidget(self.labelBidPrice4, 9, 1) + gridRight.addWidget(self.labelBidPrice5, 10, 1) + + gridRight.addWidget(self.labelAskVolume5, 0, 2) + gridRight.addWidget(self.labelAskVolume4, 1, 2) + gridRight.addWidget(self.labelAskVolume3, 2, 2) + gridRight.addWidget(self.labelAskVolume2, 3, 2) + gridRight.addWidget(self.labelAskVolume1, 4, 2) + gridRight.addWidget(self.labelReturn, 5, 2) + gridRight.addWidget(self.labelBidVolume1, 6, 2) + gridRight.addWidget(self.labelBidVolume2, 7, 2) + gridRight.addWidget(self.labelBidVolume3, 8, 2) + gridRight.addWidget(self.labelBidVolume4, 9, 2) + gridRight.addWidget(self.labelBidVolume5, 10, 2) + + # 发单按钮 + buttonSendOrder = QtGui.QPushButton(u'发单') + buttonCancelAll = QtGui.QPushButton(u'全撤') + + # 整合布局 + hbox = QtGui.QHBoxLayout() + hbox.addLayout(gridleft) + hbox.addLayout(gridRight) + + vbox = QtGui.QVBoxLayout() + vbox.addLayout(hbox) + vbox.addWidget(buttonSendOrder) + vbox.addWidget(buttonCancelAll) + + self.setLayout(vbox) + + # 关联更新 + buttonSendOrder.clicked.connect(self.sendOrder) + buttonCancelAll.clicked.connect(self.__orderMonitor.cancelAll) + self.lineID.returnPressed.connect(self.updateID) + + #---------------------------------------------------------------------- + def updateID(self): + """合约变化""" + instrumentid = str(self.lineID.text()) + + # 获取合约 + instrument = self.__mainEngine.selectInstrument(instrumentid) + if instrument: + self.lineName.setText(instrument['InstrumentName'].decode('GBK')) + + # 清空价格数量 + self.spinPrice.setValue(0) + self.spinVolume.setValue(0) + + # 清空行情显示 + self.labelBidPrice1.setText('') + self.labelBidPrice2.setText('') + self.labelBidPrice3.setText('') + self.labelBidPrice4.setText('') + self.labelBidPrice5.setText('') + self.labelBidVolume1.setText('') + self.labelBidVolume2.setText('') + self.labelBidVolume3.setText('') + self.labelBidVolume4.setText('') + self.labelBidVolume5.setText('') + self.labelAskPrice1.setText('') + self.labelAskPrice2.setText('') + self.labelAskPrice3.setText('') + self.labelAskPrice4.setText('') + self.labelAskPrice5.setText('') + self.labelAskVolume1.setText('') + self.labelAskVolume2.setText('') + self.labelAskVolume3.setText('') + self.labelAskVolume4.setText('') + self.labelAskVolume5.setText('') + self.labelLastPrice.setText('') + self.labelReturn.setText('') + + # 重新注册事件监听 + self.__eventEngine.unregister(EVENT_MARKETDATA_CONTRACT+self.instrumentid, self.signal.emit) + self.__eventEngine.register(EVENT_MARKETDATA_CONTRACT+instrumentid, self.signal.emit) + + # 订阅合约 + self.__mainEngine.subscribe(instrumentid, instrument['ExchangeID']) + + # 更新目前的合约 + self.instrumentid = instrumentid + + #---------------------------------------------------------------------- + def updateMarketData(self, event): + """更新行情""" + data = event.dict_['data'] + + if data['InstrumentID'] == self.instrumentid: + self.labelBidPrice1.setText(str(data['BidPrice1'])) + self.labelAskPrice1.setText(str(data['AskPrice1'])) + self.labelBidVolume1.setText(str(data['BidVolume1'])) + self.labelAskVolume1.setText(str(data['AskVolume1'])) + + if data['BidVolume2']: + self.labelBidPrice2.setText(str(data['BidPrice2'])) + self.labelBidPrice3.setText(str(data['BidPrice3'])) + self.labelBidPrice4.setText(str(data['BidPrice4'])) + self.labelBidPrice5.setText(str(data['BidPrice5'])) + + self.labelAskPrice2.setText(str(data['AskPrice2'])) + self.labelAskPrice3.setText(str(data['AskPrice3'])) + self.labelAskPrice4.setText(str(data['AskPrice4'])) + self.labelAskPrice5.setText(str(data['AskPrice5'])) + + self.labelBidVolume2.setText(str(data['BidVolume2'])) + self.labelBidVolume3.setText(str(data['BidVolume3'])) + self.labelBidVolume4.setText(str(data['BidVolume4'])) + self.labelBidVolume5.setText(str(data['BidVolume5'])) + + self.labelAskVolume2.setText(str(data['AskVolume2'])) + self.labelAskVolume3.setText(str(data['AskVolume3'])) + self.labelAskVolume4.setText(str(data['AskVolume4'])) + self.labelAskVolume5.setText(str(data['AskVolume5'])) + + self.labelLastPrice.setText(str(data['LastPrice'])) + rt = (data['LastPrice']/data['PreClosePrice'])-1 + self.labelReturn.setText(('%.2f' %(rt*100))+'%') + + #---------------------------------------------------------------------- + def registerEvent(self): + """注册事件监听""" + self.signal.connect(self.updateMarketData) + + #---------------------------------------------------------------------- + def sendOrder(self): + """发单""" + instrumentid = str(self.lineID.text()) + + instrument = self.__mainEngine.selectInstrument(instrumentid) + if instrument: + exchangeid = instrument['ExchangeID'] + direction = self.dictDirectionReverse[unicode(self.comboDirection.currentText())] + offset = self.dictOffsetReverse[unicode(self.comboOffset.currentText())] + price = float(self.spinPrice.value()) + volume = int(self.spinVolume.value()) + pricetype = self.dictPriceTypeReverse[unicode(self.comboPriceType.currentText())] + self.__mainEngine.sendOrder(instrumentid, exchangeid, price, pricetype, volume ,direction, offset) + + +######################################################################## +class AboutWidget(QtGui.QDialog): + """显示关于信息""" + + #---------------------------------------------------------------------- + def __init__(self, parent): + """Constructor""" + super(AboutWidget, self).__init__(parent) + + self.initUi() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + self.setWindowTitle(u'关于') + + text = u""" + vn.py框架Demo + + 完成日期:2015/4/17 + + 作者:用Python的交易员 + + License:MIT + + 主页:vnpy.org + + Github:github.com/vnpy/vnpy + + QQ交流群:262656087 + + + + + 开发环境 + + 操作系统:Windows 7 专业版 64位 + + Python发行版:Python 2.7.6 (Anaconda 1.9.2 Win-32) + + 图形库:PyQt4 4.11.3 Py2.7-x32 + + 交易接口:vn.lts/vn.ctp + + 事件驱动引擎:vn.event + + 开发环境:WingIDE 5.0.6 + + EXE打包:Nuitka 0.5.12.1 Python2.7 32 bit MSI + """ + + label = QtGui.QLabel() + label.setText(text) + label.setMinimumWidth(450) + + vbox = QtGui.QVBoxLayout() + vbox.addWidget(label) + + self.setLayout(vbox) + + +######################################################################## +class MainWindow(QtGui.QMainWindow): + """主窗口""" + signalInvestor = QtCore.pyqtSignal(type(Event())) + signalLog = QtCore.pyqtSignal(type(Event())) + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine): + """Constructor""" + super(MainWindow, self).__init__() + self.__eventEngine = eventEngine + self.__mainEngine = mainEngine + + self.initUi() + self.registerEvent() + + #---------------------------------------------------------------------- + def initUi(self): + """""" + # 设置名称 + self.setWindowTitle(u'欢迎使用vn.py框架Demo') + + # 布局设置 + self.logM = LogMonitor(self.__eventEngine, self) + self.accountM = AccountMonitor(self.__eventEngine, self) + self.positionM = PositionMonitor(self.__eventEngine, self) + self.tradeM = TradeMonitor(self.__eventEngine, self) + self.orderM = OrderMonitor(self.__eventEngine, self.__mainEngine, self) + self.marketdataM = MarketDataMonitor(self.__eventEngine, self.__mainEngine, self) + self.tradingW = TradingWidget(self.__eventEngine, self.__mainEngine, self.orderM, self) + + righttab = QtGui.QTabWidget() + righttab.addTab(self.positionM, u'持仓') + righttab.addTab(self.accountM, u'账户') + + lefttab = QtGui.QTabWidget() + lefttab.addTab(self.orderM, u'报单') + lefttab.addTab(self.tradeM, u'成交') + lefttab.addTab(self.logM, u'日志') + + self.tradingW.setMaximumWidth(400) + tradingVBox = QtGui.QVBoxLayout() + tradingVBox.addWidget(self.tradingW) + tradingVBox.addStretch() + + upHBox = QtGui.QHBoxLayout() + upHBox.addLayout(tradingVBox) + upHBox.addWidget(self.marketdataM) + + downHBox = QtGui.QHBoxLayout() + downHBox.addWidget(lefttab) + downHBox.addWidget(righttab) + + vBox = QtGui.QVBoxLayout() + vBox.addLayout(upHBox) + vBox.addLayout(downHBox) + + centralwidget = QtGui.QWidget() + centralwidget.setLayout(vBox) + self.setCentralWidget(centralwidget) + + # 设置状态栏 + self.bar = self.statusBar() + self.bar.showMessage(u'启动Demo') + + # 设置菜单栏 + actionLogin = QtGui.QAction(u'登录', self) + actionLogin.triggered.connect(self.openLoginWidget) + actionExit = QtGui.QAction(u'退出', self) + actionExit.triggered.connect(self.close) + + actionAbout = QtGui.QAction(u'关于', self) + actionAbout.triggered.connect(self.openAboutWidget) + + menubar = self.menuBar() + sysMenu = menubar.addMenu(u'系统') + sysMenu.addAction(actionLogin) + sysMenu.addAction(actionExit) + + helpMenu = menubar.addMenu(u'帮助') + helpMenu.addAction(actionAbout) + + #---------------------------------------------------------------------- + def registerEvent(self): + """""" + self.signalInvestor.connect(self.updateInvestor) + self.signalLog.connect(self.updateLog) + + self.__eventEngine.register(EVENT_INVESTOR, self.signalInvestor.emit) + self.__eventEngine.register(EVENT_LOG, self.signalLog.emit) + + #---------------------------------------------------------------------- + def updateInvestor(self, event): + """""" + data = event.dict_['data'] + + self.setWindowTitle(u'欢迎使用vn.py框架Demo ' + data['InvestorName'].decode('GBK')) + + #---------------------------------------------------------------------- + def updateLog(self, event): + """""" + log = event.dict_['log'] + + self.bar.showMessage(log) + + #---------------------------------------------------------------------- + def openLoginWidget(self): + """打开登录""" + try: + self.loginW.show() + except AttributeError: + self.loginW = LoginWidget(self.__mainEngine, self) + self.loginW.show() + + #---------------------------------------------------------------------- + def openAboutWidget(self): + """打开关于""" + try: + self.aboutW.show() + except AttributeError: + self.aboutW = AboutWidget(self) + self.aboutW.show() + + #---------------------------------------------------------------------- + def closeEvent(self, event): + """退出事件处理""" + reply = QtGui.QMessageBox.question(self, u'退出', + u'确认退出?', QtGui.QMessageBox.Yes | + QtGui.QMessageBox.No, QtGui.QMessageBox.No) + + if reply == QtGui.QMessageBox.Yes: + self.__mainEngine.exit() + event.accept() + else: + event.ignore() + + + + + + + + + + diff --git a/vn.strategy/strategydemo/eventEngine.py b/vn.strategy/strategydemo/eventEngine.py new file mode 100644 index 00000000..c0fc249a --- /dev/null +++ b/vn.strategy/strategydemo/eventEngine.py @@ -0,0 +1,196 @@ +# encoding: UTF-8 + +# 系统模块 +from Queue import Queue, Empty +from threading import Thread + +# 第三方模块 +from PyQt4.QtCore import QTimer + +# 自己开发的模块 +from eventType import * + + +######################################################################## +class EventEngine: + """ + 事件驱动引擎 + + 事件驱动引擎中所有的变量都设置为了私有,这是为了防止不小心 + 从外部修改了这些变量的值或状态,导致bug。 + + 变量说明 + __queue:私有变量,事件队列 + __active:私有变量,事件引擎开关 + __thread:私有变量,事件处理线程 + __timer:私有变量,计时器 + __handlers:私有变量,事件处理函数字典 + + + 方法说明 + __run: 私有方法,事件处理线程连续运行用 + __process: 私有方法,处理事件,调用注册在引擎中的监听函数 + __onTimer:私有方法,计时器固定事件间隔触发后,向事件队列中存入计时器事件 + start: 公共方法,启动引擎 + stop:公共方法,停止引擎 + register:公共方法,向引擎中注册监听函数 + unregister:公共方法,向引擎中注销监听函数 + put:公共方法,向事件队列中存入新的事件 + + 事件监听函数必须定义为输入参数仅为一个event对象,即: + + 函数 + def func(event) + ... + + 对象方法 + def method(self, event) + ... + + """ + + #---------------------------------------------------------------------- + def __init__(self): + """初始化事件引擎""" + # 事件队列 + self.__queue = Queue() + + # 事件引擎开关 + self.__active = False + + # 事件处理线程 + self.__thread = Thread(target = self.__run) + + # 计时器,用于触发计时器事件 + self.__timer = QTimer() + self.__timer.timeout.connect(self.__onTimer) + + # 这里的__handlers是一个字典,用来保存对应的事件调用关系 + # 其中每个键对应的值是一个列表,列表中保存了对该事件进行监听的函数功能 + self.__handlers = {} + + #---------------------------------------------------------------------- + def __run(self): + """引擎运行""" + while self.__active == True: + try: + event = self.__queue.get(block = True, timeout = 1) # 获取事件的阻塞时间设为1秒 + self.__process(event) + except Empty: + pass + + #---------------------------------------------------------------------- + def __process(self, event): + """处理事件""" + # 检查是否存在对该事件进行监听的处理函数 + if event.type_ in self.__handlers: + #若存在,则按顺序将事件传递给处理函数执行 + [handler(event) for handler in self.__handlers[event.type_]] + + #以上语句为Python列表解析方式的写法,对应的常规循环写法为: + #for handler in self.__handlers[event.type_]: + #handler(event) + + #---------------------------------------------------------------------- + def __onTimer(self): + """向事件队列中存入计时器事件""" + # 创建计时器事件 + event = Event(type_=EVENT_TIMER) + + # 向队列中存入计时器事件 + self.put(event) + + #---------------------------------------------------------------------- + def start(self): + """引擎启动""" + # 将引擎设为启动 + self.__active = True + + # 启动事件处理线程 + self.__thread.start() + + # 启动计时器,计时器事件间隔默认设定为1秒 + self.__timer.start(1000) + + #---------------------------------------------------------------------- + def stop(self): + """停止引擎""" + # 将引擎设为停止 + self.__active = False + + # 停止计时器 + self.__timer.stop() + + # 等待事件处理线程退出 + self.__thread.join() + + #---------------------------------------------------------------------- + def register(self, type_, handler): + """注册事件处理函数监听""" + # 尝试获取该事件类型对应的处理函数列表,若无则创建 + try: + handlerList = self.__handlers[type_] + except KeyError: + handlerList = [] + self.__handlers[type_] = handlerList + + # 若要注册的处理器不在该事件的处理器列表中,则注册该事件 + if handler not in handlerList: + handlerList.append(handler) + + #---------------------------------------------------------------------- + def unregister(self, type_, handler): + """注销事件处理函数监听""" + # 尝试获取该事件类型对应的处理函数列表,若无则忽略该次注销请求 + try: + handlerList = self.__handlers[type_] + + # 如果该函数存在于列表中,则移除 + if handler in handlerList: + handlerList.remove(handler) + + # 如果函数列表为空,则从引擎中移除该事件类型 + if not handlerList: + del self.__handlers[type_] + except KeyError: + pass + + #---------------------------------------------------------------------- + def put(self, event): + """向事件队列中存入事件""" + self.__queue.put(event) + + +######################################################################## +class Event: + """事件对象""" + + #---------------------------------------------------------------------- + def __init__(self, type_=None): + """Constructor""" + self.type_ = type_ # 事件类型 + self.dict_ = {} # 字典用于保存具体的事件数据 + + +#---------------------------------------------------------------------- +def test(): + """测试函数""" + import sys + from datetime import datetime + from PyQt4.QtCore import QCoreApplication + + def simpletest(event): + print u'处理每秒触发的计时器事件:%s' % str(datetime.now()) + + app = QCoreApplication(sys.argv) + + ee = EventEngine() + ee.register(EVENT_TIMER, simpletest) + ee.start() + + app.exec_() + + +# 直接运行脚本可以进行测试 +if __name__ == '__main__': + test() \ No newline at end of file diff --git a/vn.strategy/strategydemo/eventType.py b/vn.strategy/strategydemo/eventType.py new file mode 100644 index 00000000..38303440 --- /dev/null +++ b/vn.strategy/strategydemo/eventType.py @@ -0,0 +1,61 @@ +# encoding: UTF-8 + +''' +本文件仅用于存放对于事件类型常量的定义。 + +由于python中不存在真正的常量概念,因此选择使用全大写的变量名来代替常量。 +这里设计的命名规则以EVENT_前缀开头。 + +常量的内容通常选择一个能够代表真实意义的字符串(便于理解)。 + +建议将所有的常量定义放在该文件中,便于检查是否存在重复的现象。 +''' + + +EVENT_TIMER = 'eTimer' # 计时器事件,每隔1秒发送一次 +EVENT_LOG = 'eLog' # 日志事件,通常使用某个监听函数直接显示 + +EVENT_TDLOGIN = 'eTdLogin' # 交易服务器登录成功事件 + +EVENT_MARKETDATA = 'eMarketData' # 行情推送事件 +EVENT_MARKETDATA_CONTRACT = 'eMarketData.' # 特定合约的行情事件 + +EVENT_TRADE = 'eTrade' # 成交推送事件 +EVENT_TRADE_CONTRACT = 'eTrade.' # 特定合约的成交事件 + +EVENT_ORDER = 'eOrder' # 报单推送事件 +EVENT_ORDER_ORDERREF = 'eOrder.' # 特定报单号的报单事件 + +EVENT_POSITION = 'ePosition' # 持仓查询回报事件 + +EVENT_INSTRUMENT = 'eInstrument' # 合约查询回报事件 +EVENT_INVESTOR = 'eInvestor' # 投资者查询回报事件 +EVENT_ACCOUNT = 'eAccount' # 账户查询回报事件 + +#---------------------------------------------------------------------- +def test(): + """检查是否存在内容重复的常量定义""" + check_dict = {} + + global_dict = globals() + + for key, value in global_dict.items(): + if '__' not in key: # 不检查python内置对象 + if value in check_dict: + check_dict[value].append(key) + else: + check_dict[value] = [key] + + for key, value in check_dict.items(): + if len(value)>1: + print u'存在重复的常量定义:' + str(key) + for name in value: + print name + print '' + + print u'测试完毕' + + +# 直接运行脚本可以进行测试 +if __name__ == '__main__': + test() \ No newline at end of file diff --git a/vn.strategy/strategydemo/mdconnection/empty.txt b/vn.strategy/strategydemo/mdconnection/empty.txt new file mode 100644 index 00000000..41861087 --- /dev/null +++ b/vn.strategy/strategydemo/mdconnection/empty.txt @@ -0,0 +1 @@ +ļgithubʶļ \ No newline at end of file diff --git a/vn.strategy/strategydemo/strategyEngine.py b/vn.strategy/strategydemo/strategyEngine.py new file mode 100644 index 00000000..221b0463 --- /dev/null +++ b/vn.strategy/strategydemo/strategyEngine.py @@ -0,0 +1,631 @@ +# encoding: UTF-8 + +from datetime import datetime + +from pymongo import Connection +from pymongo.errors import * + +from eventEngine import * + + +# 常量定义 +OFFSET_OPEN = '0' # 开仓 +OFFSET_CLOSE = '1' # 平仓 + +DIRECTION_BUY = '0' # 买入 +DIRECTION_SELL = '1' # 卖出 + +PRICETYPE_LIMIT = '2' # 限价 + + + +######################################################################## +class Tick: + """Tick数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.openPrice = 0 # OHLC + self.highPrice = 0 + self.lowPrice = 0 + self.lastPrice = 0 + + self.volume = 0 # 成交量 + self.openInterest = 0 # 持仓量 + + self.upperLimit = 0 # 涨停价 + self.lowerLimit = 0 # 跌停价 + + self.time = '' # 更新时间和毫秒 + self.ms= 0 + + self.bidPrice1 = 0 # 深度行情 + self.bidPrice2 = 0 + self.bidPrice3 = 0 + self.bidPrice4 = 0 + self.bidPrice5 = 0 + + self.askPrice1 = 0 + self.askPrice2 = 0 + self.askPrice3 = 0 + self.askPrice4 = 0 + self.askPrice5 = 0 + + self.bidVolume1 = 0 + self.bidVolume2 = 0 + self.bidVolume3 = 0 + self.bidVolume4 = 0 + self.bidVolume5 = 0 + + self.askVolume1 = 0 + self.askVolume2 = 0 + self.askVolume3 = 0 + self.askVolume4 = 0 + self.askVolume5 = 0 + + +######################################################################## +class Trade: + """成交数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.orderRef = '' # 报单号 + self.tradeID = '' # 成交编号 + + self.direction = None # 方向 + self.offset = None # 开平 + self.price = 0 # 成交价 + self.volume = 0 # 成交量 + + +######################################################################## +class Order: + """报单数据对象""" + + #---------------------------------------------------------------------- + def __init__(self, symbol): + """Constructor""" + self.symbol = symbol # 合约代码 + + self.orderRef = '' # 报单编号 + + self.direction = None # 方向 + self.offset = None # 开平 + self.price = 0 # 委托价 + self.volumeOriginal = 0 # 报单量 + self.volumeTraded = 0 # 已成交数量 + + self.insertTime = '' # 报单时间 + self.cancelTime = '' # 撤单时间 + + self.frontID = 0 # 前置机编号 + self.sessionID = 0 # 会话编号 + + self.status = '' # 报单状态代码 + + +######################################################################## +class StopOrder: + """ + 停止单对象 + 用于实现价格突破某一水平后自动追入 + 即通常的条件单和止损单 + """ + + #---------------------------------------------------------------------- + def __init__(self, symbol, direction, offset, price, volume, strategy): + """Constructor""" + self.symbol = symbol + self.direction = direction + self.offset = offset + self.price = price + self.volume = volume + self.strategy = strategy + + +######################################################################## +class StrategyEngine(object): + """策略引擎""" + + #---------------------------------------------------------------------- + def __init__(self, eventEngine, mainEngine): + """Constructor""" + self.__eventEngine = eventEngine + self.mainEngine = mainEngine + + # 获取代表今日的datetime + t = datetime.today() + self.today = t.replace(hour=0, minute=0, second=0, microsecond=0) + + # 保存所有报单数据的字典 + self.__dictOrder = {} + + # 保存策略对象的字典 + # key为策略名称 + # value为策略对象 + self.dictStrategy = {} + + # 保存合约代码和策略对象映射关系的字典 + # key为合约代码 + # value为交易该合约的策略列表 + self.__dictSymbolStrategy = {} + + # 保存报单编号和策略对象映射关系的字典 + # key为报单编号 + # value为策略对象 + self.__dictOrderRefStrategy = {} + + # 保存合约代码和相关停止单的字典 + # key为合约代码 + # value为该合约相关的停止单列表 + self.__dictStopOrder = {} + + # MongoDB数据库相关 + self.__mongoConnected = False + self.__mongoConnection = None + self.__mongoTickDB = None + + # 调用函数 + self.__connectMongo() + self.createStrategy() + self.__registerEvent() + + #---------------------------------------------------------------------- + def createStrategy(self, strategyName, strategySymbol, strategyClass, strategySetting): + """创建策略""" + strategy = strategyClass(strategyName, strategySymbol, self) + self.dictStrategy[strategyName] = strategy + strategy.initSetting(strategySetting) + + #---------------------------------------------------------------------- + def __connectMongo(self): + """连接MongoDB数据库""" + try: + self.__mongoConnection = Connection() + self.__mongoConnected = True + self.__mongoTickDB = self.__mongoConnection['TickDB'] + self.writeLog(u'策略引擎连接MongoDB成功') + except ConnectionFailure: + self.writeLog(u'策略引擎连接MongoDB失败') + + #---------------------------------------------------------------------- + def __recordTick(self, data): + """将Tick数据插入到MongoDB中""" + if self.__mongoConnected: + symbol = data['InstrumentID'] + data['date'] = self.today + self.__mongoTickDB[symbol].insert(data) + + #---------------------------------------------------------------------- + def loadTick(self, symbol, dt): + """从MongoDB中读取Tick数据""" + if self.__mongoConnected: + collection = self.__mongoTickDB[symbol] + cx = collection.find({'date':{'$gte':dt}}) + return cx + else: + return None + + #---------------------------------------------------------------------- + def __updateMarketData(self, event): + """行情更新""" + data = event.dict_['data'] + symbol = data['InstrumentID'] + + # 检查是否存在交易该合约的策略 + if symbol in self.__dictSymbolStrategy: + # 创建TICK数据对象并更新数据 + tick = Tick(symbol) + + tick.openPrice = data['OpenPrice'] + tick.highPrice = data['HighestPrice'] + tick.lowPrice = data['LowestPrice'] + tick.lastPrice = data['LastPrice'] + + tick.volume = data['Volume'] + tick.openInterest = data['OpenInterest'] + + tick.upperLimit = data['UpperLimitPrice'] + tick.lowerLimit = data['LowerLimitPrice'] + + tick.time = data['UpdateTime'] + tick.ms = data['UpdateMillisec'] + + tick.bidPrice1 = data['BidPrice1'] + tick.bidPrice2 = data['BidPrice2'] + tick.bidPrice3 = data['BidPrice3'] + tick.bidPrice4 = data['BidPrice4'] + tick.bidPrice5 = data['BidPrice5'] + + tick.askPrice1 = data['AskPrice1'] + tick.askPrice2 = data['AskPrice2'] + tick.askPrice3 = data['AskPrice3'] + tick.askPrice4 = data['AskPrice4'] + tick.askPrice5 = data['AskPrice5'] + + tick.bidVolume1 = data['BidVolume1'] + tick.bidVolume2 = data['BidVolume2'] + tick.bidVolume3 = data['BidVolume3'] + tick.bidVolume4 = data['BidVolume4'] + tick.bidVolume5 = data['BidVolume5'] + + tick.askVolume1 = data['AskVolume1'] + tick.askVolume2 = data['AskVolume2'] + tick.askVolume3 = data['AskVolume3'] + tick.askVolume4 = data['AskVolume4'] + tick.askVolume5 = data['AskVolume5'] + + # 首先检查停止单是否需要发出 + self.__processStopOrder(tick) + + # 将该TICK数据推送给每个策略 + for strategy in self.__dictSymbolStrategy[symbol]: + strategy.onTick(tick) + + # 将数据插入MongoDB数据库,实盘建议另开程序记录TICK数据 + self.__recordTick(data) + + #---------------------------------------------------------------------- + def __processStopOrder(self, tick): + """处理停止单""" + symbol = tick.symbol + lastPrice = tick.lastPrice + upperLimit = tick.upperLimit + lowerLimit = tick.lowerLimit + + # 如果当前有该合约上的止损单 + if symbol in self.__dictStopOrder: + # 获取止损单列表 + listSO = self.__dictStopOrder[symbol] # SO:stop order + + # 准备一个空的已发止损单列表 + listSent = [] + + for so in listSO: + # 如果是买入停止单,且最新成交价大于停止触发价 + if so.direction == DIRECTION_BUY and lastPrice >= so.price: + # 以当日涨停价发出限价单买入 + ref = self.sendOrder(symbol, DIRECTION_BUY, so.offset, + upperLimit, so.volume, strategy) + + # 触发策略的止损单发出更新 + so.strategy.onStopOrder(ref) + + # 将该止损单对象保存到已发送列表中 + listSent.append(so) + + # 如果是卖出停止单,且最新成交价小于停止触发价 + elif so.direction == DIRECTION_SELL and lastPrice <= so.price: + ref = self.sendOrder(symbol, DIRECTION_SELL, so.offset, + lowerLimit, so.volume, strategy) + + so.strategy.onStopOrder(ref) + + listSent.append(so) + + # 从停止单列表中移除已经发单的停止单对象 + if listSent: + for so in listSent: + listSO.remove(so) + + # 检查停止单列表是否为空,若为空,则从停止单字典中移除该合约代码 + if not listSO: + del self.__dictStopOrder[symbol] + + #---------------------------------------------------------------------- + def __updateOrder(self, event): + """报单更新""" + data = event.dict_['data'] + orderRef = data['OrderRef'] + + # 检查是否存在监听该报单的策略 + if orderRef in self.__dictOrderRefStrategy: + + # 创建Order数据对象 + order = Order(data['InstrumentID']) + + order.orderRef = data['OrderRef'] + order.direction = data['Direction'] + order.offset = data['ComboOffsetFlag'] + + order.price = data['LimitPrice'] + order.volumeOriginal = data['VolumeTotalOriginal'] + order.volumeTraded = data['VolumeTraded'] + order.insertTime = data['InsertTime'] + order.cancelTime = data['CancelTime'] + order.frontID = data['FrontID'] + order.sessionID = data['SessionID'] + + order.status = data['OrderStatus'] + + # 推送给策略 + strategy = self.__dictOrderRefStrategy[orderRef] + strategy.onOrder(order) + + # 记录该Order的数据 + self.__dictOrder[orderRef] = data + + #---------------------------------------------------------------------- + def __updateTrade(self, event): + """成交更新""" + data = event.dict_['data'] + orderRef = data['OrderRef'] + + if orderRef in self.__dictOrderRefStrategy: + + # 创建Trade数据对象 + trade = Trade(data['InstrumentID']) + + trade.orderRef = orderRef + trade.tradeID = data['TradeID'] + trade.direction = data['Direction'] + trade.offset = data['OffsetFlag'] + + trade.price = data['Price'] + trade.volume = data['Volume'] + + # 推送给策略 + strategy = self.__dictOrderRefStrategy[orderRef] + strategy.onTrade(trade) + + #---------------------------------------------------------------------- + def sendOrder(self, symbol, direction, offset, price, volume, strategy): + """ + 发单(仅允许限价单) + symbol:合约代码 + direction:方向,DIRECTION_BUY/DIRECTION_SELL + offset:开平,OFFSET_OPEN/OFFSET_CLOSE + price:下单价格 + volume:下单手数 + strategy:策略对象 + """ + contract = self.mainEngine.selectInstrument(symbol) + + if contract: + ref = self.mainEngine.sendOrder(symbol, + contract['ExchangeID'], + price, + PRICETYPE_LIMIT, + volume, + direction, + offset) + + self.__dictOrderRefStrategy[ref] = strategy + + return ref + + #---------------------------------------------------------------------- + def cancelOrder(self, orderRef): + """ + 撤单 + """ + order = self.__dictOrder[orderRef] + symbol = order['InstrumentID'] + contract = self.mainEngine.selectInstrument(symbol) + + if contract: + self.mainEngine.cancelOrder(symbol, + contract['ExchangeID'], + orderRef, + order['FrontID'], + order['SessionID']) + + #---------------------------------------------------------------------- + def __registerEvent(self): + """注册事件监听""" + self.__eventEngine.register(EVENT_MARKETDATA, self.__updateMarketData) + self.__eventEngine.register(EVENT_ORDER, self.__updateOrder) + self.__eventEngine.register(EVENT_TRADE ,self.__updateTrade) + + #---------------------------------------------------------------------- + def writeLog(self, log): + """写日志""" + event = Event(type_=EVENT_LOG) + event.dict_['log'] = log + self.__eventEngine.put(event) + + #---------------------------------------------------------------------- + def registerStrategy(self, symbol, strategy): + """注册策略对合约TICK数据的监听""" + # 尝试获取监听该合约代码的策略的列表,若无则创建 + try: + listStrategy = self.__dictSymbolStrategy[symbol] + except KeyError: + listStrategy = [] + self.__dictSymbolStrategy[symbol] = listStrategy + + # 防止重复注册 + if strategy not in listStrategy: + listStrategy.append(strategy) + + #---------------------------------------------------------------------- + def placeStopOrder(self, symbol, direction, offset, price, volume, strategy): + """ + 下停止单(运行于本地引擎中) + 注意这里的price是停止单的触发价 + """ + # 创建止损单对象 + so = StopOrder(symbol, direction, offset, price, volume, strategy) + + # 获取该合约相关的止损单列表 + try: + listSO = self.__dictStopOrder[symbol] + except KeyError: + listSO = [] + self.__dictStopOrder[symbol] = listSO + + # 将该止损单插入列表中 + listSO.append(so) + + return so + + #---------------------------------------------------------------------- + def cancelStopOrder(self, so): + """撤销停止单""" + symbol = so.symbol + + try: + listSO = self.__dictStopOrder[symbol] + + if so in listSO: + listSO.remove(so) + + if not listSO: + del self.__dictStopOrder[symbol] + except KeyError: + pass + + #---------------------------------------------------------------------- + def startAll(self): + """启动所有策略""" + for strategy in self.dictStrategy.values(): + strategy.start() + + #---------------------------------------------------------------------- + def stopAll(self): + """停止所有策略""" + for strategy in self.dictStrategy.values(): + strategy.stop() + + +######################################################################## +class StrategyTemplate(object): + """策略模板""" + + #---------------------------------------------------------------------- + def __init__(self, name, symbol, engine): + """Constructor""" + self.name = name # 策略名称(注意唯一性) + self.symbol = symbol # 策略交易的合约 + self.__engine = engine # 策略引擎对象 + + self.trading = False # 策略是否启动交易 + + #---------------------------------------------------------------------- + def onTick(self, tick): + """行情更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onTrade(self, trade): + """交易更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onOrder(self, order): + """报单更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onStopOrder(self, orderRef): + """停止单更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def onBar(self, o, h, l, c, volume, time): + """K线数据更新""" + raise NotImplementedError + + #---------------------------------------------------------------------- + def start(self): + """ + 启动交易 + 这里是最简单的改变self.trading + 有需要可以重新实现更复杂的操作 + """ + self.trading = True + + #---------------------------------------------------------------------- + def stop(self): + """ + 停止交易 + 同上 + """ + self.trading = False + + #---------------------------------------------------------------------- + def initSetting(self, setting): + """ + 初始化设置 + setting通常是一个包含了参数设置的字典 + """ + raise NotImplementedError + + #---------------------------------------------------------------------- + def __buy(self, price, volume, stopOrder=False): + """买入开仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_BUY, + OFFSET_OPEN, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_BUY, + OFFSET_OPEN, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __cover(self, price, volume, StopOrder=False): + """买入平仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_BUY, + OFFSET_CLOSE, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_BUY, + OFFSET_CLOSE, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __sell(self, price, volume, stopOrder=False): + """卖出平仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_SELL, + OFFSET_CLOSE, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_SELL, + OFFSET_CLOSE, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __short(self, price, volume, stopOrder=False): + """卖出开仓""" + if self.trading: + if stopOrder: + so = self.__engine.placeStopOrder(self.symbol, DIRECTION_SELL, + OFFSET_OPEN, price, volume, self) + return so + else: + ref = self.__engine.sendOrder(self.symbol, DIRECTION_SELL, + OFFSET_OPEN, price, volume, self) + return ref + else: + return None + + #---------------------------------------------------------------------- + def __cancelOrder(self, orderRef): + """撤单""" + self.__engine.cancelOrder(orderRef) + + #---------------------------------------------------------------------- + def __cancelStopOrder(self, so): + """撤销停止单""" + self.__engine.cancelStopOrder(so) + + \ No newline at end of file diff --git a/vn.strategy/strategydemo/tdconnection/empty.txt b/vn.strategy/strategydemo/tdconnection/empty.txt new file mode 100644 index 00000000..41861087 --- /dev/null +++ b/vn.strategy/strategydemo/tdconnection/empty.txt @@ -0,0 +1 @@ +ļgithubʶļ \ No newline at end of file diff --git a/vn.strategy/strategydemo/thostmduserapi.dll b/vn.strategy/strategydemo/thostmduserapi.dll new file mode 100644 index 00000000..c7402a35 Binary files /dev/null and b/vn.strategy/strategydemo/thostmduserapi.dll differ diff --git a/vn.strategy/strategydemo/thosttraderapi.dll b/vn.strategy/strategydemo/thosttraderapi.dll new file mode 100644 index 00000000..d0c6dea9 Binary files /dev/null and b/vn.strategy/strategydemo/thosttraderapi.dll differ diff --git a/vn.strategy/strategydemo/vnctpmd.pyd b/vn.strategy/strategydemo/vnctpmd.pyd new file mode 100644 index 00000000..4d4ec0ef Binary files /dev/null and b/vn.strategy/strategydemo/vnctpmd.pyd differ diff --git a/vn.strategy/strategydemo/vnctptd.pyd b/vn.strategy/strategydemo/vnctptd.pyd new file mode 100644 index 00000000..4701f30e Binary files /dev/null and b/vn.strategy/strategydemo/vnctptd.pyd differ diff --git a/vn.strategy/strategydemo/vnpy.ico b/vn.strategy/strategydemo/vnpy.ico new file mode 100644 index 00000000..d7013599 Binary files /dev/null and b/vn.strategy/strategydemo/vnpy.ico differ