# AlgoPlus **Repository Path**: xlx0000/AlgoPlus ## Basic Information - **Project Name**: AlgoPlus - **Description**: AlgoPlus 2.0是使用c++语言开发的用于全市场交易的SDK,提供c++/python/java接口。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: http://algo.plus - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 70 - **Created**: 2021-12-16 - **Last Updated**: 2021-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 官网 ------- ## 股票现货API * **安装方法** `pip install AlgoPlusTORAStockV3x` 操作系统:win_amd64,linux Python版本:>=3.7,<3.9 如果无法安装,可以下载安装包,然后尝试离线安装: * **业务柜台** AlgoPlusTORAStockV3x封装的是华鑫证券奇点柜台的API。对在N视界官网()注册的现货仿真交易账户开放测试,支持普通股债交易、查询等业务。 * **仿真交易测试** 1. `同步仿真环境` ``` TraderFrontAddress = "tcp://210.14.72.11:4400" MdFrontAddress = "tcp://210.14.72.11:4402" ``` 2. `7*24仿真环境` ``` TraderFrontAddress = "tcp://210.14.72.15:4400" MdFrontAddress = "tcp://210.14.72.15:4402" ``` * **客户端** 下载链接: https://pan.baidu.com/s/1jQCjl3eGAUf41HO4lPyD5g 提取码: 6aye ![](./img/jyx.png) ------- ## 期货API * **安装方法** `pip install AlgoPlusCTPV6315` 操作系统:win_amd64,linux Python版本:>=3.7,<3.9 如果无法安装,可以下载安装包,然后尝试离线安装: * **业务柜台** AlgoPlusCTPV6315封装的是上期技术CTP柜台的API。对在N视界()和SimNow()注册的期货仿真交易账户开放测试,支持期货交易、查询等相关业务。 * **仿真交易测试** 1. `NSight同步仿真环境` ``` BrokerID = "10010" TraderFrontAddress = "tcp://210.14.72.15:4600" MdFrontAddress = "tcp://210.14.72.15:4602" AppID = "" AuthCode = "" ``` 2. `SimNow同步仿真环境` ``` BrokerID = "9999" TraderFrontAddress = "tcp://180.168.146.187:10201" MdFrontAddress = "tcp://180.168.146.187:10211" AppID = "simnow_client_test" AuthCode = "0000000000000000" ``` 3. `SimNow同步仿真环境` ``` BrokerID = "9999" TraderFrontAddress = tcp://180.168.146.187:10202 MdFrontAddress = 180.168.146.187:10212 AppID = "simnow_client_test" AuthCode = "0000000000000000" ``` 4. `SimNow同步仿真环境` ``` BrokerID = "9999" TraderFrontAddress = "tcp://218.202.237.33:10203" MdFrontAddress = "tcp://218.202.237.33:10213" AppID = "simnow_client_test" AuthCode = "0000000000000000" ``` 5. `SimNow7*24仿真环境` ``` BrokerID = "9999" TraderFrontAddress = "tcp://180.168.146.187:10130" MdFrontAddress = "tcp://180.168.146.187:10131" AppID = "simnow_client_test" AuthCode = "0000000000000000" ``` * **客户端** 下载链接: https://pan.baidu.com/s/1VSza3McX-Dyy33YLr8pBMg 提取码:f5ni ![](./img/kqv2.png) ------- ## 方法列表 ```c /// 版本号 const char* getVersion(); /// 初始化 CBaseTrader* init(int nRunID, CAPLoginField* pLoginField, PyObject* pOrderEventCallback = Py_None, PyObject* pFlexibleEventCallback = Py_None, PyObject* pLoopEventCallback = Py_None, PyObject* pSnapDataEventCallback = Py_None); /// 查询初始化错误 int getInitError(); /// 查询错误信息 const char* getMessageByErrorID(TAPErrorIDType nErrorID); /// 轮询 void loop(); /// 设置运行模式。默认Debug模式:将事件相关结构体转为字符串,调用EventTextProcessor处理。 int setRunMode(TAPRunModeType chRunMode); /// 设置处理事件字符串的方法。默认输出到屏幕。 int setEventTextProcessor(PyObject* pTextProcessor); /// 订阅行情 int subscribeOne(CBaseTrader* pAPTrader, const char* szStandardID, const char* szExchangeID = NULL); /// 批量订阅行情 int subscribe(CBaseTrader* pAPTrader, char** ppStandardID, int nCount, const char* szExchangeID = NULL); /// 退订行情 int unsubscribeOne(CBaseTrader* pAPTrader, const char* szStandardID, const char* szExchangeID = NULL); /// 批量退订行情 int unsubscribe(CBaseTrader* pAPTrader, char** ppStandardID, int nCount, const char* szExchangeID = NULL); /// 买开数量 CAPOrderField* buyOpen(CBaseTrader* pAPTrader, const char* szStandardID, int nOrderVolume, char chOrderType, double dOrderPrice, const char* szExchangeID = NULL, char chDirection = ENUM_Direction_Buy); /// 卖平数量 CAPOrderField* sellClose(CBaseTrader* pAPTrader, const char* szStandardID, int nOrderVolume, char chOrderType, double dOrderPrice, const char* szExchangeID = NULL, char chDirection = ENUM_Direction_Sell, char chOffsetFlag = '\0', const char* szCreditDebtID = NULL); /// 卖开数量 CAPOrderField* sellOpen(CBaseTrader* pAPTrader, const char* szStandardID, int nOrderVolume, char chOrderType, double dOrderPrice, const char* szExchangeID = NULL, char chDirection = '\0', char chCreditQuotaType = '\0'); /// 买平数量 CAPOrderField* buyClose(CBaseTrader* pAPTrader, const char* szStandardID, int nOrderVolume, char chOrderType, double dOrderPrice, const char* szExchangeID = NULL, char chDirection = '\0', char chOffsetFlag = '\0', const char* szCreditDebtID = NULL); /// 报单 CAPOrderField* insertOrder(CBaseTrader* pAPTrader, const char* szExchangeID, const char* szStandardID, char chDirection, char chOffsetFlag, int nVolume, const char* szCombineOrderType, double dPrice, char chCreditQuotaType = '\0', const char* szCreditDebtID = NULL); /// 撤单 int cancelOrder(CBaseTrader* pAPTrader, const char* szExchangeID, const char* szStandardID, const char* szOrderSysID, int nOrderID, int nFrontID = 0, int nSessionID = 0); /// 撤单 int cancelOrderByOrderID(CBaseTrader* pAPTrader, int nOrderID); /// 以标的撤单 int cancelOrderByStandardID(CBaseTrader* pAPTrader, const char* szExchangeID = NULL, const char* szStandardID = NULL); /// 划转资金 CAPTransferAssetField* transferCash(CBaseTrader* pAPTrader, char chTransferFlag, double dAmount, const char* szAccountPassword, const char* szBankID, const char* szBankPassword, const char* szNodeID = NULL, const char* szCreditDebtID = NULL); /// 划转持仓 CAPTransferAssetField* transferPosition(CBaseTrader* pAPTrader, char chTransferFlag, int nVolume, const char* szStandardID, const char* szNodeID = NULL, const char* szCreditDebtID = NULL, const char* szExchangeID = NULL); /// 查询银行卡余额 TAPErrorIDType queryBankAccountCash(CBaseTrader* pAPTrader, const char* szAccountPassword, const char* szBankID, const char* szBankPassword); /// 修改密码 TAPErrorIDType updatePassword(CBaseTrader* pAPTrader, char chPasswordFlag, const char* szOldPassword, const char* szNewPassword); /// 添加任务 int addTask(CBaseTrader* pAPTrader, TAPEventIDType nEventID, CAPQueryCommandField* pQueryCommandField = NULL, int nMaxExecuteCount = 1, TAPTimeAnchorType nExecuteGap = -1, TAPTimeAnchorType nFailedGap = -1, bool bRefuseError = false, TAPTimeAnchorType nExecuteTimeout = -1); /// 退出 void exitX(CBaseTrader* pAPTrader = NULL); /// 事件响应结构体域名 const char* getFields(TAPEventIDType nEventID, void* pEventStruct); /// 事件响应结构体转字符串 const char* toText(TAPEventIDType nEventID, void* pEventStruct, bool bWithFieldName = false, const char* szSeparator = ",", int nPrecision = 2); /// 设置时间锚 long long setTimeAnchor(); /// 计算时间差 long long getTimeElapse(TAPTimeAnchorType nTimeAnchor = 0); ``` ------- ## 回调函数类型 ```c /// 切片行情事件回调 typedef void(*FAPSnapDataEventCallbackType)(TAPEventIDType, CAPMarketDataField*); /// 订单事件回调 typedef void(*FAPOrderEventCallbackType)(TAPEventIDType, CAPOrderField*); /// 其他事件回调 typedef void(*FAPFlexibleEventCallbackType)(TAPEventIDType, void*, bool, TAPErrorIDType, const char*, const char*); /// 线程轮询事件回调 typedef void(*FAPLoopEventCallbackType)(); ``` ------- ## 结构体 ```python class APLoginField: _fields_ = [ ('License', ctypes.c_char*256), #///许可证 ('UserType', ctypes.c_int), #///客户类型 ('UserID', ctypes.c_char*16), #///客户号 ('Password', ctypes.c_char*41), #///密码 ('InvestorID', ctypes.c_char*16), #///投资者代码,如果未设置则使用UserID ('AccountID', ctypes.c_char*21), #///资金账户,无需设置 ('DepartmentID', ctypes.c_char*11), #///部门代码,无需设置 ('TraderFrontType', ctypes.c_int), #///交易前置类型 ('TraderFrontAddress', ctypes.c_char*32), #///交易前置地址(tcp://127.0.0.1:22222) ('MdFrontType', ctypes.c_int), #///行情前置类型 ('MdFrontAddress', ctypes.c_char*32), #///行情前置地址(tcp://127.0.0.1:22222) ('ConnectTimeout', ctypes.c_longlong), #///初始化超时退出(微秒) ('TaskExecuteGap', ctypes.c_longlong), #///账户任务执行间隔(微秒) ('TaskFailedGap', ctypes.c_longlong), #///任务失败执行间隔(微秒) ('TaskExecuteTimeout', ctypes.c_longlong), #///账户任务执行超时(微秒),未设置或者小于10秒时以10秒阈值 ('LoopGap', ctypes.c_longlong), #///Loop线程间隔(微秒) ('IDRange', ctypes.c_int), #///管理标识 ('BasePath', ctypes.c_char*128), #///文件路径 ('BrokerID', ctypes.c_char*11), #///BrokerID(期货专用) ('AppID', ctypes.c_char*33), #///AppID(期货专用) ('AuthCode', ctypes.c_char*17), #///AuthCode(期货专用) ('HDSerial', ctypes.c_char*33), #///硬盘序列号 ('MacAddress', ctypes.c_char*21), #///Mac地址 ('OuterIPAddress', ctypes.c_char*16), #///公网IP地址 ('OuterPort', ctypes.c_int), #///公网IP端口号 ('InnerIPAddress', ctypes.c_char*16), #///内网IP地址 ('UserProductInfo', ctypes.c_char*11), #///产品信息 ('TerminalInfo', ctypes.c_char*256), #///终端信息 ] class APMarketDataField: _fields_ = [ ('TradingDay', ctypes.c_char*9), #///交易日 ('ExchangeID', ctypes.c_char*9), #///交易所 ('StandardID', ctypes.c_char*81), #///标准交易代码 ('MarketDataStatus', ctypes.c_char*1), #///行情状态 ('UpdateTime', ctypes.c_char*9), #///更新时间 ('UpdateMillisec', ctypes.c_int), #///更新毫秒 ('LastPrice', ctypes.c_double), #///最新价 ('PreClosePrice', ctypes.c_double), #///昨收盘价 ('PreSettlementPrice', ctypes.c_double), #///昨结算价 ('OpenPrice', ctypes.c_double), #///今开盘价 ('HighestPrice', ctypes.c_double), #///最高价 ('LowestPrice', ctypes.c_double), #///最低价 ('BidPrice1', ctypes.c_double), #///买1价 ('BidVolume1', ctypes.c_int), #///买1量 ('AskPrice1', ctypes.c_double), #///卖1价 ('AskVolume1', ctypes.c_int), #///卖1量 ('UpperLimitPrice', ctypes.c_double), #///涨停价 ('LowerLimitPrice', ctypes.c_double), #///跌停价 ('OpenInterest', ctypes.c_double), #///持仓量 ('PreOpenInterest', ctypes.c_double), #///昨持仓量 ('Volume', ctypes.c_longlong), #///成交量 ('Turnover', ctypes.c_double), #///成交金额 ('AveragePrice', ctypes.c_double), #///当日均价 ('BidPrice2', ctypes.c_double), #///买2价 ('BidVolume2', ctypes.c_int), #///买2量 ('AskPrice2', ctypes.c_double), #///卖2价 ('AskVolume2', ctypes.c_int), #///卖2量 ('BidPrice3', ctypes.c_double), #///买3价 ('BidVolume3', ctypes.c_int), #///买3量 ('AskPrice3', ctypes.c_double), #///卖3价 ('AskVolume3', ctypes.c_int), #///卖3量 ('BidPrice4', ctypes.c_double), #///买4价 ('BidVolume4', ctypes.c_int), #///买4量 ('AskPrice4', ctypes.c_double), #///卖4价 ('AskVolume4', ctypes.c_int), #///卖4量 ('BidPrice5', ctypes.c_double), #///买5价 ('BidVolume5', ctypes.c_int), #///买5量 ('AskPrice5', ctypes.c_double), #///卖5价 ('AskVolume5', ctypes.c_int), #///卖5量 ] class APOrderField: _fields_ = [ ('TradingDay', ctypes.c_char*9), #///交易日 ('UserID', ctypes.c_char*16), #///客户号 ('ShareholderID', ctypes.c_char*11), #///股东账户代码 ('SessionID', ctypes.c_int), #///会话号 ('FrontID', ctypes.c_int), #///前置号 ('OrderID', ctypes.c_int), #///报单引用 ('OrderMark', ctypes.c_int), #///订单备注 ('ExchangeID', ctypes.c_char*9), #///交易所 ('StandardID', ctypes.c_char*81), #///标准交易代码 ('Direction', ctypes.c_char*1), #///订单方向 ('OffsetFlag', ctypes.c_char*1), #///开平标志 ('OrderType', ctypes.c_char*1), #///订单类型 ('IsBuyFromMarket', ctypes.c_bool), #///是否是买入 ('IsLimitOrder', ctypes.c_bool), #///是否是限价单 ('CombineOrderType', ctypes.c_char*5), ('CreditQuotaType', ctypes.c_char*1), #///头寸类型(两融专用) ('CreditDebtID', ctypes.c_char*21), #///信用负债编号(两融专用) ('OriginalVolume', ctypes.c_int), #///报单数量 ('OriginalPrice', ctypes.c_double), #///报单价格 ('OrderLocalTime', ctypes.c_longlong), #///本地报单时间 ('OrderSysID', ctypes.c_char*21), #///系统编号 ('InsertTime', ctypes.c_char*9), #///申报时间 ('UpdateTime', ctypes.c_char*9), #///交易所接收时间 ('OrderStatus', ctypes.c_char*1), #///订单状态 ('TradedVolumeChange', ctypes.c_int), #///成交数量变化 ('TradedVolume', ctypes.c_int), #///全部成交数量 ('CanceledVolume', ctypes.c_int), #///全部撤单数量 ('LastTradedPrice', ctypes.c_double), #///最近一次成交价 ('TradedVolumeChangeOfTurnover', ctypes.c_int), #///与成交额对应的成交数量变化 ('TradedVolumeOfTurnover', ctypes.c_int), #///与成交额对应的全部成交数量 ('TurnoverChange', ctypes.c_double), #///成交额 ('Turnover', ctypes.c_double), #///成交额 ('AverageCost', ctypes.c_double), #///平均成本 ('UsableVolume', ctypes.c_int), #///可用持仓 ('UseableCash', ctypes.c_double), #///可用资金 ('ErrorID', ctypes.c_int), #///错误代码 ('Message', ctypes.c_char*256), #///信息 ] class APTransferAssetField: _fields_ = [ ('TradingDay', ctypes.c_char*9), #///交易日 ('UserID', ctypes.c_char*16), #///客户号 ('TransferID', ctypes.c_int), #///资产划转编号 ('TransferStatus', ctypes.c_char*1), #///转移状态 ('TransferFlag', ctypes.c_char*1), #///转移方向 ('Amount', ctypes.c_double), #///转移金额 ('Volume', ctypes.c_int), #///转移数量 ('ExchangeID', ctypes.c_char*9), #///交易所 ('StandardID', ctypes.c_char*81), #///标准交易代码 ('TransferPositionType', ctypes.c_char*1), #///转移持仓类型 ('CreditDebtID', ctypes.c_char*21), #///负债编号 ('BankID', ctypes.c_char*4), #///银行代码(银证转账时必填) ('ExternalNodeID', ctypes.c_char*32), #///外部节点编号 ('FrontID', ctypes.c_int), #///前置编号 ('SessionID', ctypes.c_int), #///会话编号 ('BusinessID', ctypes.c_char*32), #///转移流水号 ('ErrorID', ctypes.c_int), #///错误代码 ('Message', ctypes.c_char*256), #///信息 ] class APQueryCommandField: _fields_ = [ ('TradingDay', ctypes.c_char*9), #///交易日 ('UserID', ctypes.c_char*16), #///客户号 ('RequestID', ctypes.c_int), #///请求编号 ('ExchangeID', ctypes.c_char*9), #///交易所 ('StandardID', ctypes.c_char*81), #///标准交易代码 ('BusinessID', ctypes.c_char*32), #///业务流水号 ('CombineBusinessFlag', ctypes.c_char*3), #///业务标志组合 ('FloatValue', ctypes.c_double), #///浮点型 ('IntValue', ctypes.c_int), #///整形 ('StartTime', ctypes.c_char*9), #///开始时间 ('EndTime', ctypes.c_char*9), #///结束时间 ('StartDate', ctypes.c_char*9), #///开始日期 ('EndDate', ctypes.c_char*9), #///结束日期 ('BankID', ctypes.c_char*4), #///银行代码 ('BankPassword', ctypes.c_char*41), #///银行账户密码 ('AccountPassword', ctypes.c_char*41), #///资金账户密码 ('NodeID', ctypes.c_char*32), #///柜台节点号 ] ``` ------- ## 联系 * 微信公众号: ***AlgoPlus*** * QQ群: ***866469866***(加群注明AlgoPlus)