# smart 全局API入口对象
sdk中的顶级接口,控制整个组件的交互与运行
全局静态对象,含组件开发所需的API、事件、数据、工具等,smart为可以直接访问对象(挂在window对象上)
事件回调
- on_init - 组件页面打开进行初始化,类似domReady事件,组件所有代码都必须在该事件之后
- on_show - 组件页面被显示出来的回调
- on_hide - 组件页面被隐藏时的回调
- on_close - 组件页面被关闭的回调,用于收尾
- on_alphax_md_status_change - 功夫的md进程变化通知
- on_alphax_td_status_change - 功夫的td进程变化通知
方法
- insert_order 全局方法下单标准版不支持两融
- cancel_order 全局方法撤单
- subscribe 全局方法订阅行情
- unsubscribe 全局方法取消订阅
- subscribe_index 全局方法订阅指数行情
- unsubscribe_index 全局方法取消订阅指数行情
- insertAlgoOrder 创建并开始运行策略或母单实例标准版不支持
- subscribeETFProfit 订阅ETF折溢价预期利润
- unsubscribeETFProfit 取消订阅ETF折溢价预期利润
- createStrategy 创建一个新的策略标准版不支持
- startStrategy 开始运行策略或母单实例标准版不支持
- newStrategyInstance 创建策略实例标准版不支持
- addStrategy 登记一个策略标准版不支持
- queryCreditAssets 查询信用资产信息仅支持两融账户
- querySelfSelectStockList 查询自选股列表 标准版不支持
- getInstrument 查找一个证券
- getETFList 获取可交易的ETF列表
- getETFBasket 获取ETF的成分股列表
- getIPOList 获取IPO列表
- getBondReverseRepoList 获取国债逆回购列表
- getConvertableBond 获取可转债信息标准版不支持
- getSystemSet 获取smart系统【设置】中参数
- openGangtiseStockDetail 打开gangtise个股详情
- openSystemSet 打开smart系统【设置】菜单
- registCallableFunction- 注册给python调用的函数
- callPythonFunction 调用python的函数接口
- download 从服务器下载资源 标准版不支持
- notice 通知消息提醒,如告警
- subscribe_bar 全局方法订阅bar行情
- unsubscribe_bar 全局方法取消订阅bar行情
- query_bar_today_async 全局方法获取当天任意分钟的bar行情
- query_bar_async 全局方法查询历史bar数据
- subscribe_indicator 全局方法通用指标订阅
- unsubscribe_indicator 全局方法取消通用指标订阅
- query_market_data_async 全局方法查询市场数据-ticker行情
- get_trading_day_async 全局方法获取当前交易日及下一交易日
- query_data_async 全局方法查询数据
- query_data_page_async 全局方法分页查询数据
- add_self_select_stock 全局方法添加自选股 标准版不支持
- del_self_select_stock 全局方法删除自选股 标准版不支持
- query_etf_purchase_redemption_top_limit 全局方法查询 etf 申赎上限 标准版不支持
- close 关闭当前组件 标准版不支持
属性
- current_account 当前客户端登录的主资金账号
- account_map 当前客户端登录的所有账户集合对象,key为资金账号,value为账号Account对象
- strategy_map 所有当前客户端登录的账号下的策略列表的集合
- instrument_list 所有证券列表
- instrument_map key为证券代码_市场,方便查找证券
- instrument_map_by_type 按证券类型进行区分的证券map列表
- reverse_repo_list 国债逆回购列表
- alphax_td_list alphax的实时td列表
- alphax_md_list alphax的实时md列表
静态对象
# API全景图
smart //smart框架对象,组件开发所需的api、事件、数据、工具等的全局入口对象
|—— on_init(callback) //组件页面打开进行初始化
|—— on_show(callback) //组件页面被显示出来的回调
|—— on_hide(callback) //组件页面被隐藏时的回调
|—— on_close(callback) //组件页面被关闭的回调
|—— insert_order //全局方法下单标准版不支持两融
|—— cancel_order //全局方法撤单
|—— subscribe //全局方法订阅
|—— unsubscribe //全局方法取消订阅
|—— subscribe_index //全局方法订阅指数行情
|—— unsubscribe_index //全局方法取消订阅指数行情
|—— insertAlgoOrder //创建并开始运行策略或母单实例 标准版不支持
|—— subscribeETFProfit //订阅ETF折溢价预期利润
|—— unsubscribeETFProfit //取消订阅ETF折溢价预期利润
|—— createStrategy //创建一个全新的策略实例 标准版不支持
|—— startStrategy //开始运行策略或母单实例 标准版不支持
|—— newStrategyInstance //创建策略实例 标准版不支持
|—— addStrategy //登记一个策略 标准版不支持
|—— queryCreditAssets //查询信用资产信息 仅支持两融账户
|—— querySelfSelectStockList //查询自选股列表 标准版不支持
|—— getInstrument //查找一个证券
|—— getETFList //获取可交易的ETF列表
|—— getETFBasket //获取ETF的成分股列表
|—— getIPOList //获取IPO列表
|—— getBondReverseRepoList //获取国债逆回购列表
|—— getConvertableBond //获取可转债信息 标准版不支持
|—— getSystemSet //获取smart系统【设置】中参数
|—— openGangtiseStockDetail //打开gangtise个股详情
|—— openSystemSet //打开smart系统【设置】菜单
|—— registCallableFunction //注册给python调用的函数
|—— callPythonFunction //调用python的函数接口
|—— download //从服务器下载资源 标准版不支持
|—— notice //推送全局消息 通知消息提醒
|—— current_account //当前客户端登录的主资金账号
|—— subscribe_bar //全局方法订阅bar行情
|—— unsubscribe_bar //全局方法取消订阅bar行情
|—— query_bar_today_async //全局方法获取当天任意分钟的bar行情
|—— query_bar_async //全局方法查询历史bar数据
|—— subscribe_indicator //全局方法全局方法通用指标订阅
|—— unsubscribe_indicator //全局方法取消通用指标订阅
|—— query_market_data_async //全局方法查询市场数据-ticker行情
|—— get_trading_day_async //获取当前交易日及下一交易日
|—— query_data_async //全局方法查询数据
|—— query_data_page_async //全局方法分页查询数据
|—— add_self_select_stock //全局方法添加自选股 标准版不支持
|—— del_self_select_stock //全局方法删除自选股 标准版不支持
|—— query_etf_purchase_redemption_top_limit //全局方法查询 etf 申赎上限 标准版不支持
|—— close //全局方法关闭组件 标准版不支持
|—— instrument_list //所有证券列表(全局静态数据)
| |—— Instrument 证券对象
| |—— 各种instrument属性
|—— instrument_map //key为证券代码_市场,方便查找证券
|—— instrument_map_by_type //按证券类型进行区分的证券map列表
|—— etf_map //etf可交易map集合(全局静态数据)
| |—— ETF ETF对象
| |—— 各种etf属性
|—— reverse_repo_list //国债逆回购列表(全局静态数据)
| |—— Instrument 证券对象
| |—— 各种instrument属性
|—— alphax_td_list alphax的实时td列表
|—— alphax_md_list alphax的实时md列表
|—— strategy_map 所有当前客户端登录的账号下的策略列表的集合
|—— account_map 当前客户端登录的所有账户集合对象,key为资金账号,value为账号对象
| |—— '1090000000001':account 账号对象
| |—— account_id //资金账号
| |—— nick_name //资金账号的昵称
| |—— isLevel2 //是否是level2
| |—— exchange_right //沪深交易权限
| |—— account_type //账户类型 AccountType
| |—— source //账户的柜台类型
| |—— alphax_td_status //alphax td的实时运行状态
| |—— alphax_md_status //alphax md的实时运行状态
| |—— ipo_list //该账号的打新列表,账号相关
| |—— assets //实时账户资产Assets对象
| | |—— 各种assets属性
| |—— position_list //实时账号持仓
| | |—— position //持仓Position对象
| | |—— 各种positin属性
| |—— order_list //实时账户委托列表
| | |—— order //委托回报Order对象
| | |—— 各种order属性
| |—— trade_list //实时账户成交列表
| | |—— trade //成交回报Trade对象
| | |—— 各种trade属性
| |—— insert_order //账户级别下单标准版不支持两融
| |—— cancel_order //撤单
| |—— subscribe //订阅行情
| |—— unsubscribe //取消订阅
| |—— subscribe_index //订阅指数行情
| |—— unsubscribe_index //取消订阅指数行情
| |—— newStrategyInstance //创建策略实例 标准版不支持
| |—— modifyStrategy //修改策略 标准版不支持
| |—— removeStrategy //删除一个策略 标准版不支持
| |—— on_quote(quote=>{}) //行情变化推送
| |—— 各种Quote对象属性
| |—— on_order(order=>{}) //委托变化推送
| |—— on_cancel_fail(fail=>{}) //撤单失败的消息推送
| |—— on_trade(trade=>{}) //成交推送
| |—— on_position(position=>{}) //账户持仓变化的增量推送
| |—— on_assets(asstes=>{}) //账户资金的推送
| |—— on_credit_ticker_assign(creditTickerAssignInfo=>{}) //信用可融券头寸信息的推送 仅支持两融账户
| |—— on_credit_debt_finance(creditDebtFinance=>{}) //信用融资负债信息的推送 仅支持两融账户
| |—— on_credit_debt_security(creditDebtSecurity=>{}) //信用融券负债信息的推送 仅支持两融账户
| |—— createStrategy() // 创建一个新的策略 标准版不支持ype="warning" text="标准版不支持" />
| |—— startStrategy() // 开始运行策略 标准版不支持
| |—— insertAlgoOrder() // 创建并开始运行策略或母单实例 标准版不支持
| |—— queryCreditAsset() //查询信用资产信息
| |—— strategy_map //代表该资金账号的策略集合,key为strategy_id+'_'+StrategyPlatformType,value为strategy对象 标准版不支持
| |—— '网格交易001'+'_Algo':strategy
| |—— strategy_id //策略id
| |—— strategy_platform_type //策略平台类型StrategyPlatformType枚举
| |—— parent_order_id //母单编号,1.0.0暂未实现
| |—— status //策略状态
| |—— status_name //策略状态中文
| |—— isPrivate //是否是私有策略
| |—— round_list 轮次列表,策略每start一次为一个round
| | |—— Round 轮次信息
| | |—— 各种轮次信息的属性
| |—— last_round 最新的一个轮次Round对象
| |—— book //实时策略账簿,目前仅对AlphaX有效
| | |—— avail //可用资金
| | |—— margin //保证金
| | |—— market_value //市值
| | |—— initial_equity //初始权益
| | |—— dynamic_equity //动态权益
| | |—— static_equity //静态权益
| | |—— realized_pnl //已实现盈亏
| | |—— unrealized_pnl //可用资金
| | |—— avail //未实现盈亏
| |—— strategy_position_list //实时策略持仓列表,元素为Position对象
| |—— strategy_order_list //实时策略委托确认列表,元素为Order对象
| |—— strategy_trade_list //实时策略成交回报列表,元素为Trade对象
| |—— relation_account_map //一个策略操作多个账户时使用,value为Account对象
| | //可通过addAccount添加,每次策略启动都要动态添加
| | |—— '1090000000001':account 当前登录账号对象引用
| | |—— 该账号在策略创建时就自动挂载relation_account_map下
| | |—— 策略与账户委托的订单互相不相关
| | |—— 订阅行情通过account.subscribe及account.addEventListener添加一个本策略的处理函数
| | |—— 该账号下的数据、事件、接口均可用
| | |—— '1090000000002':account 账号对象引用
| | |—— 需要通过addAccount添加,该账号下也有了本策略对象
| | |—— 下账号级别单,通过该account.insert_order本策略on_order不会收到
| | |—— 相同的柜台,如果一个账号已经订阅了行情,另一个账号无需再订阅,这里可用于不同柜台如期货
| | |—— 该账号下的数据、事件、接口均可用
| |—— //addAccount //添加资金账号,添加后策略就能收到这个账号的订阅、order、trade 该账号也被同步加入smart.accountMap中,1.0.0暂未实现
| |—— //removeAccount //解除策略与资金账号绑定关系,策略无法收到该账户的订阅、order、trade 该账号从smart.accountMap删除,1.0.0暂未实现
| | //并不是真的删除了物理资金账号,只是解除了与策略的关系,也解除了与当前账号的关系
| |—— //uploadFile //上传策略文件,1.0.0暂未实现
| |—— startStrategy //启动策略
| |—— stopStrategy //停止策略
| |—— forceStopStrategy //强制停止策略
| |—— postStrategyParamsBeforeStart //策略启动前传参
| |—— postStrategyParams //策略运行期间向策略透传通用参数
| |—— download //将后台的策略参数下载到前台
| |—— on_alphax_msg //接收后端功夫策略的自定义消息推送
| |—— startTD //启动TD进程,AlphaX专用
| |—— startTD //启动MD进程,AlphaX专用
| |—— on_strategy_quote(quote=>{}) //1.0.0暂未实现,某策略订阅的行情推送,策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响
| |—— on_order(order=>{}) //某策略的委托变化推送
| |—— on_trade(trade=>{}) //某策略的成交回报推送
| |—— //on_position //某策略持仓增量变化推送
| |—— on_book(book=>{}) //某策略账簿变化推送
| |—— //on_strategy_cancel_fail //某策略上传结果消息推送,1.0.0暂未实现
| |—— //insert_order //策略级别的下单,入参要有account_id,strategy_platform_type、strategy_id选填,1.0.0暂未实现, 标准版不支持两融
| |—— //cancel_order //策略级别的撤单,入参要有account_id,1.0.0暂未实现
| |—— //subscribe //策略级别订阅,入参要有account_id,1.0.0暂未实现
| |—— //unsubscribe //策略级别取消订阅,入参要有account_id,1.0.0暂未实现
|—— Event 所有事件的枚举
| |—— ON_INIT //组件初始化
| |—— ON_CLOSE //组件被关闭
| |—— ON_SHOW //组件被显示
| |—— ON_HIDE //组件被隐藏
| |—— ON_RESET //组件用户数据被清空重置
| |—— ON_QUOTE //订阅行情后,行情变化推送
| |—— ON_ORDER //委托变化推送
| |—— ON_TRADE //成交变化推送
| |—— ON_CANCEL_FAIL //撤单失败的消息推送
| |—— ON_POSITION //账户持仓变化的增量推送
| |—— ON_ASSETS //账户资金的全量推送
| |—— ON_BOOK //某策略资金的全量推送
| |—— ON_STRATEGY_STATUS_CHANGE //策略状态变化时推送
| |—— ON_ALPHAX_TD_STATUS_CHANGE //alphax td状态变化时推送
| |—— ON_ALPHAX_MD_STATUS_CHANGE //alphax md状态变化时推送
| |—— ON_ALPHAX_MSG //alphax 策略往前端推送数据
| |—— ON_ETF_PROFIT//ETF 折溢价利润推送数据ETFProfit
| |—— ON_ETF_RATE_UPDATE //ETF 更新ETF套利/交易费用设置通知
| |—— ON_SYSTEM_SET_UPDATE //更新系统全局常用设置项通知
| |—— ON_CREDIT_TICKER_ASSIGN //更新信用账户可融券头寸信息 仅支持两融账户
| |—— ON_CREDIT_DEBT_FINANCE //更新融资负债合约信息 仅支持两融账户
| |—— ON_CREDIT_DEBT_SECURITY //更新融券负债合约信息 仅支持两融账户
| |—— ON_BAR //订阅bar行情后,bar行情变化推送
| |—— ON_INDICATOR //订阅通用指标后,数据变化推送
|—— Type 所有数据类型的定义
| |—— Source 柜台类型源
| |—— Exchange 交易所
| |—— InstrumentType 证券类型
| |—— PriceType 价格条件
| |—— Side 买卖方向
| |—— BusinessType 委托业务类型
| |—— Offset 开平标志
| |—— Direction 持仓方向
| |—— OrderStatus 委托状态
| |—— VolumeCondition 成交量条件
| |—— TimeCondition 成交时间条件
| |—— AccountType 账号类型, 现货|信用|期货|衍生品
| |—— StrategyPlatformType 策略平台类型 标准版不支持
| | |—— Front //客户端直接运行的js前端策略
| | |—— Algo //算法平台
| | |—— AlphaX //AlphaX即功夫
| | |—— ProgramTrade //程序化交易,客户自己的程序化
| | |—— Spec //特定平台 按ProgramTrade相同的逻辑处理,1.0.0未写入文档
| | |—— FrontPy //客户端Python策略类型
| |—— ETF 某ETF配方表明细对象定义
| |—— Position 持仓对象定义
| |—— Order 委托确认对象定义
| |—— Trade 成交回报对象定义
| |—— Quote 行情信息对象定义
| |—— Instrument 证券对象定义
| |—— IPO 新股信息
| |—— ConvertableBond 可转债信息
| |—— Round 策略执行的轮次信息对象定义
| |—— StrategyStatus 策略执行状态
| |—— CreditTickerAssignInfo 信用可融券头寸信息仅支持两融账户
| |—— CreditDebtFinance 信用融资负债信息仅支持两融账户
| |—— CreditDebtSecurity 信用融券负债信息仅支持两融账户
| |—— Strategy 策略对象标准版不支持
| |—— AlgoXStrategy 算法策略对象标准版不支持
| |—— Bar 行情bar信息对象定义
| |—— DataPageInfo 分页信息对象定义
|—— utils
| |—— isSTIStock //是否科创板股票
| |—— isETF //是否ETF基金
| |—— isSPO //是否配股代码
| |—— isReverseRepo //判断一个证券是否是国债逆回购
| |—— toCDB //将全角字符转换为半角字符
| |—— getNowFormatDate //得到当前日期的格式化形式
| |—— getBestPrice //获取买盘或者卖盘的盘口最优价格,往最新价格靠近,取有效价格
| |—— get_limit_price //获取买盘的最高有效申报价或者卖盘的最低有效申报价
|—— cache 数据存储,可用于记录在客户端的配置信息、程序运行状态的实时记录及崩溃恢复
| |—— set //赋值
| |—— del //删除
| |—— push //数组添加
|—— logger 日志工具对象
|—— log
|—— info
|—— warn
|—— error
# smart对象的事件回调
# on_init
组件页面被打开,组件运行环境初始完成后回调,为了保证程序正常,组件所有代码均在此之后执行(如订阅行情)
smart.on_init(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_INIT, function() {});
2
3
# on_close
组件页面被关闭时回调,彻底释放掉组件所有资源,如订阅
smart.on_close(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_CLOSE, function() {});
2
3
# on_show
组件页面被激活展示时的回调,可以重新申请一些on_hide释放掉的资源
smart.on_show(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_SHOW, function() {});
2
3
# on_hide
组件页面被切走时的回调,可以释放一些不必要的资源
smart.on_hide(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_HIDE, function() {});
2
3
# on_alphax_md_status_change
功夫的md进程状态变化推送
callbackFunctionstatusObject - 事件发生时返回一个alphax_md_status对象
smart.on_alphax_md_status_change(status => {});
// 或者 emitter 写法
smart.on(smart.Event.ON_ALPHAX_MD_STATUS_CHANGE, status => {});
2
3
# on_alphax_td_status_change
功夫的td进程状态变化推送
callbackFunctionstatusObject - 事件发生时返回一个alphax_td_status对象
smart.on_alphax_td_status_change(status => {});
// 或者 emitter 写法
smart.on(smart.Event.ON_ALPHAX_TD_STATUS_CHANGE, status => {});
2
3
# smart对象下的全局方法
# 下单-insert_order 标准版不支持两融
通过SDK接口向柜台委托订单。 注意:通过该接口委托的订单,不被归属于任何策略。
accountId- String(选填) - 交易账号(资金账号),默认为当前账号id
- 或 Object(必填) - 作为下单参数对象{...}包含insert_order的所有参数,仅需一个Object即可实现指定参数下单
strategyPlatformTypeString(选填) - 策略平台类型,参考StrategyPlatformType枚举值,默认为nullstrategyIdString(选填) - 策略id,默认为nullinstrumentIdString(必填) - 合约ID,证券代码 如"600000"(该参数与code参数必填其一)exchangeIdString(必填) - 交易所ID 参考Exchange枚举值 如: Exchange.SSE(该参数与code参数必填其一)limitPriceNumber(必填) - 价格 如: 10.32(市价下单时:深市选填,默认为0;沪市必填,为保护限价)volumeNumber(必填) - 数量 如: 100priceTypeNumber(选填) - 报单类型 参考PriceType枚举值,默认为LimitsideNumber(选填) - 买卖方向,参考Side枚举值,默认为BuyoffsetNumber(选填) - 开平方向,参考 Offset枚举值,默认为Initorder_client_idNumber(选填) - 客户自定义id,默认为0,请使用uint数字parent_order_idString(选填) - 母单编号,默认为"" startStrategy会得到一个母单编号,不传默认使用这个母单编号,如果客户需要自定义的母单编号可以传入,请使用数字形式businessTypeNumber (选填) - 业务类型,参考BusinessType枚举值,默认为CASHautoSplitBoolean(选填) - 自动拆单,默认为falsecodeString(必填) - 证券代码.交易所标识 选填 如'600000.SH','000001.SZ'(若该参数与instrumentId、exchangeId同时存在,以该参数为准)
返回一个订单委托回报对象Order
// 方式一:
smart.insert_order(
"",
null,
null,
"600000",
smart.Type.Exchange.SSE,
7.06,
100,
smart.Type.PriceType.Limit,
smart.Type.Side.Buy,
);
2
3
4
5
6
7
8
9
10
11
12
// 方式二:
smart.insert_order({
code:"600000.SH",
limitPrice:7.06,
volume:100,
side:smart.Type.Side.Buy,
});
2
3
4
5
6
7
# 撤单-cancel_order
通过SDK接口向柜台撤销已委托的订单。
account_idString(必填) - 交易账号(资金账号)order_idString(必填) - 订单ID
smart.cancel_order(account_id, order_id);
# 订阅行情-subscribe
订阅行情。行情变化时
smart会派发ON_QUOTE事件,通过smart.on(smart.Event.ON_QUOTE, on_quote_callback)监听行情变化。订阅数量限制规则如下:
- 总资产<=300万 可订阅证券数量<=300
- 300万<总资产<=1000万 可订阅证券数量<=1500
- 1000万<总资产<=1亿 可订阅证券数量<=3000
- 1亿<总资产<=10亿资产 可订阅证券数量<=6000
- 10亿<总资产 可订阅证券数量不限制
accountId- String 选填 - 账号id,默认为当前账号id 这里区别alphax后台的subscribe函数是后台第一个参数是source
- 或 Object 必填 - 作为订阅参数对象{...}包含subscribe的所有参数,仅需一个Object即可实现指定参数订阅
instruments必填 订阅的股票列表 数组 如['600000'](该参数与codes参数必填其一)exchangeId必填 交易所id 如Exchange.SSE(该参数与codes参数必填其一)isLevel2选填 是否level2,默认为false bool类型 True or False 目前暂不支持level2emitter选填 注册行情派发事件对象,默认为全局smart对象codes必填 订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'](若该参数与instruments、exchangeId同时存在,以该参数为准)
// 方式一:
smart.subscribe({codes:['600000.SH','300001.SZ']});
smart.on(smart.Event.ON_QUOTE, quote => {
console.log(JSON.stringify(quote));
})
2
3
4
5
// 方式二(不推荐):
smart.subscribe(smart.current_account.account_id, ['600000','600918'], smart.Type.Exchange.SSE);
smart.on(smart.Event.ON_QUOTE, quote => {
console.log(JSON.stringify(quote));
})
2
3
4
5
# 取消订阅行情-unsubscribe
取消订阅行情
account_id- String 选填 账号id,默认为当前账号id 这里区别alphax后台的unsubscribe函数是后台第一个参数是source
- 或 Object 必填 作为取消订阅参数对象{...}包含unsubscribe的所有参数,仅需一个Object即可实现指定参数取消订阅
instruments必填 数组 取消订阅的股票列表 数组 如['600000'](该参数与codes参数必填其一)exchange_id必填 交易所id 如Exchange.SSE(该参数与codes参数必填其一)is_level2选填 是否level2,默认为false bool类型 True or False 目前暂不支持level2emitter选填 注册行情派发事件对象,默认为全局smart对象codes必填 取消订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'] (若该参数与instruments、exchange_id同时存在,以该参数为准)
// 方式一:
smart.unsubscribe({codes:['600000.SH','300001.SZ']});
2
// 方式二(不推荐):
smart.unsubscribe(smart.current_account.account_id, ['600000','600918'], smart.Type.Exchange.SSE);
2
# 订阅指数行情-subscribe_index
订阅指数行情。行情变化时
smart会派发ON_QUOTE事件,通过smart.on(smart.Event.ON_QUOTE, on_quote_callback)监听行情变化。 指数行情、股票行情都从ON_QUOTE事件返回,可以通过返回quote对象的instrument_type属性进行两种行情的区分。
accountId- String 选填 - 账号id,默认为当前账号id
- 或 Object 必填 - 作为订阅指数行情参数对象{...}包含subscribe_index的所有参数,仅需一个Object即可实现指定参数订阅指数行情
instruments必填 订阅的股票列表 数组 如["000001", "CESCPD", "931646"]isLevel2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2emitter选填 注册行情派发事件对象,默认为全局smart对象
smart.subscribe_index({instruments:["000001", "CESCPD", "931646"]});
smart.on(smart.Event.ON_QUOTE, quote => {
if(quote.instrument_type == smart.Type.InstrumentType.Index){
console.log(JSON.stringify(quote));
}
})
2
3
4
5
6
# 取消订阅指数行情-unsubscribe_index
取消订阅指数行情
account_id- String 选填 账号id,默认为当前账号id
- 或 Object 必填 作为取消订阅指数行情参数对象{...}包含unsubscribe_index的所有参数,仅需一个Object即可实现指定参数取消订阅指数行情
instruments必填 数组 取消订阅的指数列表 数组 如["000001", "CESCPD", "931646"]is_level2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2emitter选填 注册行情派发事件对象,默认为全局smart对象
smart.unsubscribe_index({instruments:["000001", "CESCPD", "931646"]});
# 下算法单-insertAlgoOrder 标准版不支持
下算法单
account_idString(必填) - 账号idstrategy_idString(必填) - 母单客户唯一idconfigString(必填) - 母单下单参数
smart.insertAlgoOrder(account_id, strategy_id, config);
# 订阅ETF折溢价预期利润-subscribeETFProfit
订阅ETF折溢价预期利润,等待返回预期利润列表信息。此后ETF预期利润变动后,会通过事件 ON_ETF_PROFIT 派发订阅预期利润信息 ETFProfit
let profitList = await smart.subscribeETFProfit();//订阅并返回ETF预期利润等信息
# 取消订阅ETF折溢价预期利润-unsubscribeETFProfit
取消订阅ETF折溢价预期利润
smart.unsubscribeETFProfit();
# 创建策略实例-createStrategy 标准版不支持
从头创建一个全新的策略 AlphaX
account_idString(必填) - 账号idstrategy_platform_typeString(必填) - 策略平台类型 StrategyPlatformType 的枚举值strategy_idString(可选) - 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突configObject - 策略信息对象 记录在smartserverstrategy_pathString(可选) - 对Front为.smart包的文件名 对AlphaX不需要传,自动取strategy_id作为策略存放相对路径 对Algo不需要传 对ProgramTrade和Spec类型的为策略所在文件夹在托管机器的全路径(removeStrategy时会删除该文件夹)strategy_configfile_path_listArray< String >(可选) - 策略配置文件路径列表 对AlphaX和ProgramTrade和Spec类型的需要传递 可以多个路径strategy_log_path_listArray< String >(可选) - 策略日志文件的路径列表 仅ProgramTrade和Spec类型的需要传递 可以多个,里面的路径都会被smart的logstash收集 Front类型的日志自动被smart收集无需传递startStrategyCMDString(可选) - 策略启动的cmd命令字符串 仅ProgramTrade和Spec类型的需要传递template_codeString(可选) - 模板代码,AlphaX平台创建公共策略时必填
返回一个 策略 对象,不同的策略有不同的行为:
- AlphaX类型的登记后smart server形成一条记录 客户端策略列表中会出现,需要进一步调用newStrategyInstance拿到实例后进行uploadFile后再startStrategy
- Algo类型的不允许客户主动登记策略
- ProgramTrade类型和Spec类型的可由客户主动登记策略,记录在smartserver 提供的信息比AlphaX的多一些
- Front类型的实际就是客户向组件库登记一个私有策略,记录在smartserver,如果之后uploadFile则为向组件库上传一个纯前端的私有策略, 如果是不调用uploadFile直接startStrategy则直接启动本地组件目录中的该策略(只能是.smart包格式),如果本地不存在该策略则菜单中不显示
// 通过模板创建AlphaX策略 <Badge type="warning" text="标准版不支持" />
const strategy = await smart.createStrategy(StrategyPlatformType.AlphaX, { template_code : "A01" });
2
创建一个全新的策略或母单实例 标准版不支持
account_idString(必填) - 账号idstrategy_platform_typeString(必填) - 策略平台类型 StrategyPlatformType 的枚举值strategy_idString(必填) - 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突configString(必填) - 母单下单参数,config参数参考文档- "strategyType": AlgoX算法编号,在表格
算法类型-展示名称表中选择,如选择 "3101" - "clientStrategyId": 生成的策略ID是随机数,如str(math.floor(time.time()*1000) + (100000 + math.floor(random.random() * 100000)))
- "strategyParam": JSON格式的策略参数,在表格
算法总线参数类型中选择,策略参数包含- "quantity":数量,如1600
- "side":方向,如"BUY"
- "ticker":代码,如"000001"
- "market":市场,如"SZ"
- "limit_action":涨跌停动作,如false
- "start_time":开始时间,如"09:55:00"
- "end_time":结束时间,如"15:00:00"
- "expire_action":结束时间动作,如false
- "price":价格,如0,
- "buyDateTime":购买时间,如["14:55","14:55"]
- "loadtime":1650783403107,
- "business_type":下单类型,如"CASH",
- "task_type":任务类型,根据算法要求填写,"KFTWAP"
- "strategyType": AlgoX算法编号,在表格
smart.createStrategy(account_id, strategy_platform_type, strategy_id, config);
# 启动当前策略-startStrategy 标准版不支持
启动当前策略 AlphaX
- param Object(选填) - 启动参数(v1.1.0新增)
- 返回 Promise<策略状态对象>
出错时抛出 错误对象 - 其中 data 为 策略状态对象 或 null,可能的出错原因有
0001 未找到有效的策略信息
0001 策略未就绪,请检查策略是否上传成功
0001 策略进程已被其他操作停止,您的启动操作无效
0001 其他启动失败
try {
await strategy.startStrategy();
await strategy.startStrategy({ target: ["600000.SH", "0000001.SZ"] }); // SDK v1.1.0 后可以传参
} catch (err) {
console.error("策略启动失败!");
}
2
3
4
5
6
开始运行策略或母单实例 Algo
account_idString(必填) - 账号idstrategy_platform_typeString(必填) - 策略平台类型 StrategyPlatformType 的枚举值strategy_idString(必填) - 策略实例的ID或客户下单唯一ID
smart.startStrategy(account_id, strategy_platform_type, strategy_id);
# 创建策略实例-newStrategyInstance 标准版不支持
创建策略实例
account_id必填 账号idstrategy_platform_type策略平台类型 StrategyPlatformType的枚举值strategy_id可选String 策略id
smart.newStrategyInstance(account_id, strategy_platform_type, strategy_id);
# 登记一个策略-addStrategy 标准版不支持
登记一个策略
account_idString必填 账号idstrategy_platform_typeString必填 策略平台类型 StrategyPlatformType的枚举值 不同的策略有不同的行为:- AlphaX类型的登记后smart server形成一条记录 客户端策略列表中会出现,需要进一步调用newStrategyInstance拿到实例后进行uploadFile后再startStrategy
- Algo类型的不允许客户主动登记策略
- ProgramTrade类型和Spec类型的可由客户主动登记策略,记录在smartserver 提供的信息比AlphaX的多一些
- Front类型的实际就是客户向组件库登记一个私有策略,记录在smartserver,如果之后uploadFile则为向组件库上传一个纯前端的私有策略,如果是不调用uploadFile直接
- startStrategy则直接启动本地组件目录中的该策略(只能是.smart包格式),如果本地不存在该策略则菜单中不显示
strategy_idString可选 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突config策略信息对象 记录在smartserver
/**
* 向本账号登记一个策略
* @param account_id String必填 账号id
* @param strategy_platform_type String必填 策略平台类型 StrategyPlatformType的枚举值 不同的策略有不同的行为:
* AlphaX类型的登记后smart server形成一条记录 客户端策略列表中会出现,需要进一步调用newStrategyInstance拿到实例后进行uploadFile后再startStrategy
* Algo类型的不允许客户主动登记策略
* ProgramTrade类型和Spec类型的可由客户主动登记策略,记录在smartserver 提供的信息比AlphaX的多一些
* Front类型的实际就是客户向组件库登记一个私有策略,记录在smartserver,如果之后uploadFile则为向组件库上传一个纯前端的私有策略,如果是不调用uploadFile直接startStrategy则直接启动本地组件目录中的该策略(只能是.smart包格式),如果本地不存在该策略则菜单中不显示
* @param strategy_id String可选 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突
* @param config 策略信息对象 记录在smartserver
* {
* strategy_path:'',//String(可选) 对Front为.smart包的文件名 对AlphaX不需要传,自动取strategy_id作为策略存放相对路径 对Algo不需要传 对ProgramTrade和Spec类型的为策略所在文件夹在托管机器的全路径(removeStrategy时会删除该文件夹)
* strategy_configfile_path_list: [''],//Array< String >(可选) 策略配置文件路径列表 对AlphaX和ProgramTrade和Spec类型的需要传递 可以多个路径
* strategy_log_path_list: [''],//Array< String >(可选) 策略日志文件的路径列表 仅ProgramTrade和Spec类型的需要传递 可以多个,里面的路径都会被smart的logstash收集 Front类型的日志自动被smart收集无需传递
* startStrategyCMD: '',//String(可选) 策略启动的cmd命令字符串 仅ProgramTrade和Spec类型的需要传递
* template_code: '',//String(可选) 策略模板代码 AlphaX平台创建公共策略时必填
* }
*
* @return Promise形式返回Strategy对象
*
* 不同的策略有不同的行为:
* AlphaX类型的登记后smart server形成一条记录 客户端策略列表中会出现,需要进一步调用newStrategyInstance拿到实例后进行uploadFile后再startStrategy
* Algo类型的不允许客户主动登记策略
* ProgramTrade类型和Spec类型的可由客户主动登记策略,记录在smartserver 提供的信息比AlphaX的多一些
* Front类型的实际就是客户向组件库登记一个私有策略,记录在smartserver,如果之后uploadFile则为向组件库上传一个纯前端的私有策略, 如果是不调用uploadFile直接startStrategy则直接启动本地组件目录中的该策略(只能是.smart包格式),如果本地不存在该策略则菜单中不显示
*
*/
let strategy = await smart.addStrategy(account_id, strategy_platform_type, strategy_id, config);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查询信用资产信息-queryCreditAssets 仅支持两融账户
查询信用资产信息
account_idString(必填) - 账号id
let assets = await smart.queryCreditAssets(account_id);
# 查询自选股列表-querySelfSelectStockList 标准版不支持
查询自选股列表。添加自选股在客户端【行情】-【自选股】页面
groupNameString(必填) - 板块名称sourceString(选填) - 柜台id,默认为"xtp",目前只支持 "xtp"account_idString(选填) - 账号id,默认为当前登录账号id,目前只支持当前登录账号
let stockList = await smart.querySelfSelectStockList(groupName);
# 查找一个证券-getInstrument
查找一个证券
instrumentId- String(必填) - 证券代码如'600000'(该参数与code参数必填其一)
- 或 Object(必填) - 作为参数对象{...}包含getInstrument的所有参数,仅需一个Object即可实现指定参数获取instrument
exchangeIdString(必填) - 交易所 如'SSE'(该参数与code参数必填其一)code必填 证券代码.交易所标识 如'600000.SH','000001.SZ'(若该参数与instrumentId、exchangeId同时存在,以该参数为准)
// 方式一:
let instrument = smart.getInstrument("600000", smart.Type.Exchange.SSE);
2
// 方式二:
let instrument = smart.getInstrument({code:"600000.SH"});
2
# 获取可交易的ETF列表-getETFList
获取可交易的ETF列表
let etfList = await smart.getETFList();
# 获取ETF成分股列表-getETFBasket
获取ETF成分股列表
instrument_idString(必填) - ETF代 如"510500"
let list = await smart.getETFBasket(instrument_id);
# 获取IPO列表-getIPOList
获取IPO列表
let list = await smart.getIPOList();
# 获取国债逆回购列表-getBondReverseRepoList
获取国债逆回购列表
let list = await smart.getBondReverseRepoList();
# 获取可转债信息-getConvertableBond 标准版不支持
获取可转债信息
codeString(必填) - 证券代码.交易所标识 如 '113658.SH'
let convertableBond = await smart.getConvertableBond(code);
# 获取smart系统【设置】中参数-getSystemSet
获取smart系统【设置】中参数
/**
* 获取smart系统【设置】中参数
*system:{
*常用设置
*isModal: true //交易确认框
*isClearData: true //交易清空项
*isDbWithdrawal: false //双击撤单项
*isHideMarketCompo: false //隐藏分时/k线
*isSystemModalCLose: true //系统关闭提示框
*(isGeneralMaxValue: true //启用普通交易委托最大市值提示,
generalMaxValue: 10000)//--一起使用
*自动拆单规则设置:
*splitUnitType:
// 可选值列表
*0:按交易所单笔最大委托数量固定拆单;
*1:(按用户设置上限固定拆单;
splitMaxSplitQty: 50000-拆单上限);
*2:按交易所规定的单笔委托上下限范围随机拆单;
*3:(按单笔委托市值范围随机拆单
splitMinMarketValue: 10000:请输入最小市值,
splitMaxMarketValue: 50000:请输入最大市值)
*4:(按自定义股数范围随机拆单;
splitMinRandomQty: 10000:请输入最小拆分数量,
splitMaxRandomQty: 50000:请输入最大拆分数量)
*ETF套利/交易费用设置
*(etfPreStockPK: "S1"//溢价股票盘口:
//可选值列表
{ label: "最新价", value: "P" },
{ label: "卖一价", value: "S1" },
{ label: "卖二价", value: "S2" },
{ label: "卖三价", value: "S3" },
{ label: "卖四价", value: "S4" },
{ label: "卖五价", value: "S5" },
{ label: "买一价", value: "B1" },
{ label: "涨停价", value: "H" },
{ label: "跌停价", value: "L" })
*etfUpperBuy: false //溢价涨停挂单:开、关
*etfPreAuto: false // 溢价自动申购:开、关
*etfCancel: false //撤单即可补单:开、关
*etfDisSingleAuto: false // 折价单市场自动赎回:开关
*etfDisCrossAuto: false //折价跨市场自动赎回:开关
*etfMonitor: false // 监控列表停靠-左、右
*(etfRate:
{
//(sh-沪市,sz-深市)
is_del_fee: true //预期利润-减去交易费用
is_use: false //实现利润-减去交易费用
is_iopv_fee:false //ETF iopv计算是否减掉费用
sell_yh: 0.001 //卖出印花税
buy_yh: 0 //买入印花税
sh_etf_gh: 100 //申赎过户费(sh-沪市,sz-深市)
sh_etf_min_sx: 100 //ETF最低手续费
sh_etf_sx: 100 //ETF买卖手续费
sh_stock_gh: 100 //股票过户费
sh_stock_min_sx: 100//股票最低手续费
sh_stock_sx: 100 //股票手续费
sz_etf_gh: 100 //申赎过户费
sz_etf_min_sx: 100 //ETF最低手续费
sz_etf_sx: 100 //ETF买卖手续费
sz_stock_gh: 100 //股票过户费
sz_stock_min_sx: 100//股票最低手续费
sz_stock_sx: 100 //股票手续费
}
* 基金公司费用对象
* fundFee:
159732: 0.001
516020: 0.001
516100: 0.001
561350: 0.001
561500: 0.001
561800: 0.001
561900: 0.001
}
*/
let system = await smart.getSystemSet();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# 打开gangtise个股详情-openGangtiseStockDetail
打开gangtise个股详情
code: 个股id,如"159901.SZ"
smart.openGangtiseStockDetail({ code });
# 打开smart系统【设置】菜单-openSystemSet
打开smart系统【设置】菜单
- params:打开的设置标题
title【设置】中标题,//标题选项列表( 常用设置,自动导出,CSV报单设置,CSV报单导出设置,AlphaX/Kungfu,ETF套利/交易费用设置,组件库)
let params = { title: "ETF套利/交易费用设置" };
smart.openSystemSet(params);
2
# 注册给python调用的函数-registCallableFunction
注册给python调用的函数
functionNameString(必填) - 函数的名称function(data)String(必填) - 参数
smart.registCallableFunction(functionName,function(data));
# 调用python的函数接口-callPythonFunction
调用python的函数接口
functionNameString(必填) - js函数的名称paramsString(必填) - 参数function(data)Function(选填) - 连接python函数,返回信息
smart.callPythonFunction(functionName,params,function(data));
# 从服务器下载资源-download AlphaX标准版不支持
从服务器下载资源
optionObjecttypeString -"sample"代表示例文件strategy_platform_typeString(必填) - 策略平台类型 StrategyPlatformType的枚举值saveDialogObject | Boolean - 如果true或非空对象,则会弹出对话框让用户选择要保存的地址rawBoolean(可选) - 是否使用原始编码,默认为false,SDK会尝试文件内容转为字符串。如果希望得到二进制的文件内容,可以设置为trueparamObject - 下载时的参数,不同类型的下载不同
如果设置了saveDialog,则没有返回值,直接保存文件到指定的文件夹; 如果没有设置saveDialog,返回文件内容
await smart.download({
type: "sample",
strategy_platform_type: smart.Type.StrategyPlatformType.AlphaX,
saveDialog: true,
param: {
templateCode: "A01"
}
})
2
3
4
5
6
7
8
# 消息提醒-notice
组件消息推送到全局
level消息状态:open、info、success、warning、errortitle头部标题msg需要推送的消息内容duration消息显示时间timestamp时间戳,如当前毫秒数
let params = {
level: 'success',
title: '标题',
msg: '具体内容',
duration: 4.5,
timestamp: Date.now()
}
smart.notice(params);
2
3
4
5
6
7
8
# 订阅bar行情-subscribe_bar
订阅bar行情。监听bar行情变化有三种方式:1、订阅时传on_bar_callback,例如smart.subscribe_bar(codes, period, on_bar_callback);2、smart.on(smart.Event.ON_BAR,bar_callback);3、smart.on_bar(bar_callback),且优先级1>2>3
- 订阅分钟数>=1的整数,且<=60,单位是分钟
- 只允许股票类型的订阅
codes必填 订阅的股票列表 数组 如['600000.SH', '000001.SZ']period选填 周期 默认1m,最大60m(m代表分钟)on_bar_callback选填 接收行情推送的回调函数,emitter选填 注册行情派发事件对象, 默认为全局smart对象- 返回值(await) string类型的数组,表示订阅失败的股票列表,例如['600000.SH']
smart.subscribe_bar(codes, period, on_bar_callback, emitter);
# 取消订阅bar行情-unsubscribe_bar
取消订阅bar行情
codes必填 订阅的股票列表 数组 如['600000.SH', '000001.SZ']period选填 周期 默认1m,最大60m(m代表分钟)emitter选填 注册行情派发事件对象, 默认为全局smart对象- 返回值(await) string类型的数组,表示取消订阅失败的股票列表,例如['600000.SH']
smart.unsubscribe_bar(codes, period, emitter);
# 获取当天任意分钟的bar行情-query_bar_today_async
获取当天任意分钟的bar行情。
codes必填 订阅的股票列表 数组 如['600000.SH', '000001.SZ']period选填 周期 默认1m,最大60m(m代表分钟)- 返回值(await) 类型为Object, key 为股票代码,并且与参数 codes 中的 股票代码格式一致, value 为对应的 Bar 结构体数组
smart.query_bar_today_async(codes, period);
# 获取历史bar数据-query_bar_async
- 获取一个时间范围内的 bar 数据, 数据量较大, 请输入合适的开始结束日期
- 返回数据默认为前复权
- 当前不支持分页, 数据均存储在第一页
方式一: 通过调用query_bar_async接口
// `inParams` 必填 查询参数,具体要素如下列举
await smart.query_bar_async(
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
end_date: "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
period: "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
adjust_type: "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
}
);
// 返回结果为:Bar实体的数组
2
3
4
5
6
7
8
9
10
11
方式二:通过调用query_data_async接口,详情见数据查询
# 通用指标订阅-subscribe_indicator
通用指标订阅。监听指标数据变化有三种方式:1、订阅时传on_indicator_callback,例如subscribe_indicator(type, codes, on_indicator_callback);2、smart.on(smart.Event.ON_INDICATOR,indicator_callback);3、smart.on_bar(indicator_callback),且优先级1>2>3
type必填 指标类型参数,例如'etf'等字符串 该参数识别大小写codes选填 订阅的指标代码列表 数组 如['159732.SZ','561800.SH']on_indicator_callback选填 接收指标数据变化推送的回调函数emitter选填 注册数据派发事件对象, 默认为全局smart对象- 返回值(await) string类型的数组,表示订阅失败的指标代码列表,例如['561800.SH']
smart.subscribe_indicator(type, codes, on_indicator_callback, emitter);
# 取消通用指标订阅-unsubscribe_indicator
取消通用指标订阅
type必填 指标类型参数,例如'etf'等字符串,该参数识别大小写codes选填 订阅的指标代码列表 数组 如['600000.SH','000001.SZ']emitter选填 注册数据派发事件对象, 默认为全局smart对象- 返回值(await) string类型的数组,表示取消订阅失败的指标代码列表,例如['561800.SH']
smart.unsubscribe_indicator(type, codes, emitter);
# 获取市场数据-query_market_data_async
- 获取一个时间范围内的 市场行情数据(ticker行情), 数据量较大, 请输入合适的开始结束日期
- 当前不支持分页, 数据均存储在第一页
方式一: 通过调用query_market_data_async接口
// `inParams` 必填 查询参数,具体要素如下列举
const result = await smart.query_market_data_async(
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
end_date: "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
}
);
//返回 返回类型是Quote实体的数组
2
3
4
5
6
7
8
9
方式二:通过调用query_data_async接口,详情见数据查询
# 获取当前交易日及下一交易日-get_trading_day_async
- 获取当前交易日及下一交易日,如果当前日期不是交易日,则当前交易日返回空"" 方式一: 通过调用get_trading_day_async接口
const result = await smart.get_trading_day_async();
//返回 返回类型是Object对象
// {CURRENT_TRDY: "20240415", // 当前交易日
// NEXT_TRDY: "20240416" // 下一交易日}
2
3
4
方式二:通过调用query_data_async接口,详情见数据查询
# 查询数据接口-query_data_async
method必填 该值为"bar"、"market_data"inParams必填 查询参数对象,具体要素如下列举- 返回数据默认为前复权
method 目前支持的参数有
# method为bar-查询历史Bar数据
- 获取一个时间范围内的 bar 数据, 数据量较大, 请输入合适的开始结束日期
method必填 该值为"bar"inParams必填 查询参数,具体要素如下列举
- 返回数据默认为前复权
const result = await smart.query_data_async(
"bar", // String(必填) method方法:固定值
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2024-01-12 10:00:00", // String(必填) 开始日期
end_date: "2024-01-12 15:00:00", // String(必填) 结束日期
period: "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
adjust_type: "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
}
);
// 返回结果为:Object类型的数组
2
3
4
5
6
7
8
9
10
11
# method为market_data-查询市场数据
- 获取一个时间范围内的 市场数据(ticker行情), 数据量较大, 请输入合适的开始结束日期
method必填 该值为"market_data"inParams必填 查询参数,具体要素如下列举
const result = await smart.query_data_async(
"market_data", // String(必填) method方法:固定值
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
end_date: "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
}
);
// 返回结果为:Object类型的数组
2
3
4
5
6
7
8
9
# method为current_next_trading_day-获取当前交易日及下一交易日
- 获取当前交易日及下一交易日,如果当前日期不是交易日,则当前交易日返回空""
method必填 该值为"current_next_trading_day"inParams必填 查询参数,{}
const result = await smart.query_data_async(
"current_next_trading_day" // String(必填) method方法:固定值
);
// 返回结果为:Object类型的数组 [{CURRENT_TRDY: "20240415" // 当前交易日, NEXT_TRDY: "20240416" // 下一交易日}]
2
3
4
# 分页查询数据接口-query_data_page_async
methodString(必填) 该值为"bar"、"market_data"inParamsObject(必填) 查询参数(该参数因method而变)
method 目前支持的参数有
# method为bar-分页查询历史Bar数据
- 获取一个时间范围内的 bar 数据, 数据量较大, 请输入合适的开始结束日期
method必填 该值为"bar"inParams必填 查询参数,具体要素如下列举
- 返回数据默认为前复权
const result = await smart.query_data_page_async(
"bar", // String(必填) method方法:固定值
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2013-01-04", // String(必填) 开始日期
end_date: "2014-01-04", // String(必填) 结束日期
period: "1d", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
adjust_type: "pre", // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
current_page: 1, // 当前页,不传 默认当前页 为1
page_size: 10000 // 分页数量,最大为10000
}
);
// 返回结果为:DataPageInfo的对象
2
3
4
5
6
7
8
9
10
11
12
13
# method为market_data-分页查询市场数据
- 获取一个时间范围内的 市场数据(ticker行情), 数据量较大, 请输入合适的开始结束日期
method必填 该值为"market_data"inParams必填 查询参数,具体要素如下列举
const result = await smart.query_data_page_async(
"market_data", // String(必填) method方法:固定值
{
code: "000001.SZ", // String(必填) 证券代码 SZ:深证 SH:上海
start_date: "2024-01-12 08:30:00", // String(必填) 开始日期
end_date: "2024-01-12 15:00:00", // String(必填) 结束日期
current_page: 1, // 当前页,不传 默认当前页 为1
page_size: 1000 // 分页数量,最大为10000
}
);
// 返回结果为:DataPageInfo的对象
2
3
4
5
6
7
8
9
10
11
# 添加自选股-add_self_select_stock 标准版不支持
group_nameString(必填) 板块名称stockString(必填) 股票代码,格式如 "000001.SZ"sourceString(选填) smart.Type.Source枚举, 默认为 "xtp", 目前只支持 "xtp"account_idString(选填) 账号,默认为当前登录账号,目前只支持当前登录账号- 返回值为 json,表示添加结果, 失败时可能会抛出异常
try {
const result = await smart.add_self_select_stock("我的银行", "000001.SZ");
/*
result 如下代表添加成功
{
"code":"0000",
"message":"成功"
}
*/
} catch (err) {
console.error("catch exception ", err.message);
}
2
3
4
5
6
7
8
9
10
11
12
# 删除自选股-del_self_select_stock 标准版不支持
group_nameString(必填) 板块名称stockString(必填) 股票代码,格式如 "000001.SZ"sourceString(选填) smart.Type.Source枚举, 默认为"xtp",目前只支持 "xtp"account_idString(选填) 账号,默认为当前登录账号,目前只支持当前登录账号- 返回值为 json,表示删除结果, 失败时可能会抛出异常
try {
const result = await smart.del_self_select_stock("我的银行", "000001.SZ");
/*
result 如下代表删除成功
{
"code":"0000",
"message":"成功"
}
*/
} catch (err) {
console.error("catch exception ", err.message);
}
2
3
4
5
6
7
8
9
10
11
12
# 查询 etf 申赎上限-query_etf_purchase_redemption_top_limit 标准版不支持
codeString(必填) etf 代码, 格式如 159300.SZ- 返回值为 json,表示查询结果, 失败时可能会抛出异常
try {
const result = smart.query_etf_purchase_redemption_top_limit("159300.SZ");
/*
result 类似如下 json
{
"code":"159300",
"redemption_top":35000000, # 赎回上限
"purchase_top":35000000 # 申赎上限
}
*/
} catch (err) {
console.error("catch exception ", err.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
# 关闭当前组件-close 标准版不支持
smart.close()
# SmartX数据详情
组件SDK提供query_data_async(查询数据)、query_data_page_async(分页查询数据)接口。客户需要仅需要传递method及请求入参inParams,即可获取对应查询数据
methodString(必填) 查询使用的方法名inParamsObject(必填) 查询参数(该参数因method而变)
# 获取历史1分钟Bar行情
- 返回数据默认为前复权
# 获取历史5分钟Bar行情
- 返回数据默认为前复权
# 获取历史15分钟Bar行情
- 返回数据默认为前复权
# 获取历史30分钟Bar行情
- 返回数据默认为前复权
# 获取历史60分钟Bar行情
- 返回数据默认为前复权
# 获取历史1天Bar行情
- 返回数据默认为前复权
# 获取历史1星期Bar行情
- 返回数据默认为前复权
# 获取市场数据-ticker行情
- 返回数据默认为前复权
# 通用指标etf行情数据订阅
- 通过通用指标订阅etf行情数据
- 具体要素详情见通用指标订阅-subscribe_indicator
# 获取当前交易日及下一交易日
method必填 该值为"current_next_trading_day"inParams必填 查询参数对象,具体要素详情见数据查询
# smart对象下的全局实时静态数据
组件SDK会维护一些常用变量在smart对象下。 当变量所代表的内容变化时,SDK也会同步更改对应变量的值,保证使用者在任何时刻获取变量,都是最新的数据。
# 当前登录的资金账号-current_account
当前客户端登录的主资金账号 指向account_map中当前客户端的主登录账号 值为Account对象
# 已登录的资金账号集合-account_map
已经登录的资金账号map key为资金账号 value为Account
# 策略集合-strategy_map
所有本客户端登录的资金账号下的策略集合 Object key为${策略id}_${平台类型} value为Strategy对象
//获取某个策略示例
const strategy = smart.strategy_map[`A60000X_` + smart.Type.StrategyPlatformType.AlphaX];
2
# 证券列表-instrument_list
所有证券列表 Array 元素为Instrument对象
smart.instrument_list;
# 证券索引集合-instrument_map
获取证券列表按照证券代码_市场
smart.instrument_map;
# 证券类型集合-instrument_map_by_type
按证券类型进行区分的Map结构
// TypeScript 定义
type InstrumentCategory = "Stock" | "Bond" | "Fund" | "Index" | "StockOption" | "Future" | "Unknown";
smart.instrument_map_by_type: {
[propName: InstrumentCategory]: Array<Instrument>;
};
// 使用
smart.instrument_map_by_type.Stock[0];
// 输出 {instrument_id:"600000", instrument_name: "", ...}
2
3
4
5
6
7
8
map key:'Stock'(股票)、'Bond'(债券)、'StockOption'(期权)、'Index'(指数)、'Fund'(基金)、'Future'期货、 'Unknown'其他,
value均为Array数组,数组元素为Instrument对象
# 国债逆回购列表-reverse_repo_list
国债逆回购列表
smart.reverse_repo_list;
# 功夫的实时td列表-alphax_td_list
alphax的td列表 Array的一个元素为:
account_id资金账号 Stringconfig???process_name进程名,如"td_xtp_15003941" Stringprocess_type进程类型 Stringreceive_mdtd都是false Booleansource柜台源 Source枚举source_name柜台源中文名 Stringstatus进程状态 StrategyStatus枚举status_name进程状态中文名 Stringstrategy_platform_type策略平台类型 StrategyPlatformType枚举
{
"account_id":"15003941",
"config":{},
"process_name":"td_xtp_15003941",
"process_type":"td",
"receive_md":false,
"source":"xtp",
"source_name":"xtp",
"status":"Started",
"status_name":"已启动",
"strategy_platform_type":"AlphaX"
}
2
3
4
5
6
7
8
9
10
11
12
# 功夫的实时md列表-alphax_md_list
kungfu的md列表 Array Array的一个元素为:
account_id资金账号 Stringconfig???process_name进程名,如"md_xtp_15003941" Stringprocess_type进程类型 Stringreceive_mdmd都是true Booleansource柜台源 Source枚举source_name柜台源中文名 Stringstatus进程状态 StrategyStatus枚举status_name进程状态中文名 Stringstrategy_platform_type策略平台类型 StrategyPlatformType枚举
{
"account_id":"15003941",
"config":{},
"process_name":"md_xtp_internal",
"process_type":"md",
"receive_md":true,
"source":"xtp",
"source_name":"xtp",
"status":"Stopped",
"status_name":"已停止",
"strategy_platform_type":"AlphaX"
}
2
3
4
5
6
7
8
9
10
11
12
# 资金账户-Account
提供资金账户基本数据和方法
# 实例事件
Account 是一个EventEmitter。可以监听的事件详见Event
# account.on_order
账户委托推送 不保序
order处理函数的参数为Order对象
account.on_order(order=>{});
# account.on_trade
账户成交回报推送 不保序
order处理函数的参数为Trade对象
account.on_trade(trade => {});
# account.on_assets
账户资产变动推送
assets处理函数的参数为Assets对象
account.on_assets(assets => {});
# account.on_position
账户持仓变动增量推送
position处理函数的参数为Position对象 每次一条Position
account.on_position(position => {});
# account.on_quote
账户收到订阅的行情推送
quote处理函数的参数为Quote对象
account.on_quote(quote => {});
# account.on_cancel_fail
账户收到撤单失败的推送
account.on_cancel_fail(fail=>{});
# account.on_credit_ticker_assign 仅支持两融账户
账户收到信用可融券头寸更新
creditTickerAssignInfo处理函数的参数为CreditTickerAssignInfo对象
account.on_credit_ticker_assign(creditTickerAssignInfo=>{});
# account.on_credit_debt_finance 仅支持两融账户
账户收到信用融资负债合约更新
creditDebtFinance处理函数的参数为CreditDebtFinance对象
account.on_credit_debt_finance(creditDebtFinance=>{})
# account.on_credit_debt_security 仅支持两融账户
账户收到信用融券负债合约更新
creditDebtSecurity处理函数的参数为CreditDebtSecurity对象
account.on_credit_debt_security(creditDebtSecurity=>{});
# 静态方法
无
# 实例属性
# account_id
资金账号 String
# nick_name
资金账号的昵称 String
# isLevel2
是否是level2 Boolean
# exchange_right
沪深交易权限 String all两市 sh上海 sz深圳 双中心用户登录一个节点只有一个市场的权限
# account_type
账户类型 AccountType枚举
# source
柜台类型 Source枚举
# account.position_list
该账号的实时持仓信息 Array 元素是Position对象
# account.alphax_td_status
alphax td的实时运行状态 Object
# account.alphax_md_status
alphax md的实时运行状态 Object
# account.order_list
该账户的实时委托确认列表 Array 元素是Order对象
# account.trade_list
该账户的实时成交回报列表 Array 元素是Trade对象
# account.strategy_map
一个 Map<String, Strategy> 结构,包含账户下所有的策略信息。key 结构为 ${策略id}_${平台类型}。例如
// 获取某账号下的策略id为A60000X的策略实例
const strategy = account.strategy_map[`A60000X_` + smart.Type.StrategyPlatformType.AlphaX];
2
# assets
账户资产
total_assetNumber - 总资产(=可用资金 + 证券资产(目前为0)+ 预扣的资金)buying_powerNumber - 可用资金security_assetNumber - 证券资产(保留字段,目前为0)fund_buy_amountNumber - 累计买入成交证券占用资金fund_buy_feeNumber - 累计买入成交交易费用fund_sell_amountNumber - 累计卖出成交证券所得资金fund_sell_feeNumber - 累计卖出成交交易费用withholding_amountNumber - XTP系统预扣的资金(包括购买卖股票时预扣的交易资金+预扣手续费)frozen_exec_cashNumber - 行权冻结资金frozen_exec_feeNumber - 行权费用pay_laterNumber - 垫付资金preadva_payNumber - 预垫付资金orig_banlanceNumber - 昨日余额banlanceNumber - 当前余额trade_nettingNumber - 当日交易资金轧差deposit_withdrawNumber - 当天出入金captial_assetNumber - 资金资产force_freeze_amountNumber - 强锁资金preferred_amountNumber - 可取资金market_valueNumber - 市值update_timeString - 最后更新时间 smart内部产生all_assetNumber- 总资产(仅限信用业务)all_debtNumber - 总负债(仅限信用业务)guarantyNumber - 两融保证金可用数(仅限信用业务)line_of_creditNumber - 两融授信额度(仅限信用业务)maintenance_ratioNumber - 维持担保品比例(仅限信用业务)remain_amountNumber - 信用账户待还资金(仅限信用业务)security_interestNumber - 融券合约利息(仅限信用业务)cash_remain_amtNumber - 融资合约金额(仅限信用业务)cash_interestNumber - 融资合约利息(仅限信用业务)extras_moneyNumber - 融券卖出所得购买货币基金占用金额(仅限信用业务)
# credit_ticker_assign_list 仅支持两融账户
该账号的信用实时可融券头寸信息 Array 元素是CreditTickerAssignInfo对象
# credit_debt_finance_list 仅支持两融账户
该账号的信用融资负债合约列表 Array 元素是CreditDebtFinance对象
# credit_debt_security_list 仅支持两融账户
该账号的信用融券负债合约列表 Array 元素是CreditDebtSecurity对象
# 实例方法
注意: 某些方法仅在特定的策略平台上可用, 这些方法会被标记出来。
# account.refreshPositionList
刷新持仓信息
list需要更新的持仓列表
smart.current_account.refreshPositionList(list);
# account.get_position
获取指定的证券持仓
instrument_id- String(必填) - 证券代码如'600000'(该参数与code参数必填其一)
- 或 Object(必填) - 作为参数对象{...}包含get_position的所有参数,仅需一个Object即可实现指定参数获取position
exchange_id必填 交易所 如'SSE'(该参数与code参数必填其一)direction选填 持仓方向,默认为Direction.Netcode必填 证券代码.交易所标识 如'600000.SH','000001.SZ'(若该参数与instrument_id、exchange_id同时存在,以该参数为准)
// 方式一:
let position = smart.current_account.get_position("600000", smart.Type.Exchange.SSE);
2
// 方式二:
let position = smart.current_account.get_position({code:"600000.SH"});
2
# account.subscribe
订阅行情 注意无account_id参数 通过smart.current_account.on_quote(on_quote_callback)监听行情变化 这里区别alphax后台的subscribe函数是后台第一个参数是source,订阅数量限制规则如下:
总资产<=300万 可订阅证券数量<=300
300万<总资产<=1000万 可订阅证券数量<=1500
1000万<总资产<=1亿 可订阅证券数量<=3000
1亿<总资产<=10亿资产 可订阅证券数量<=6000
10亿<总资产 可订阅证券数量不限制
instruments- 数组 必填 订阅的股票列表 如['600000'](该参数与codes参数必填其一)
- 或 Object 必填 作为订阅参数对象{...}包含subscribe的所有参数,仅需一个Object即可实现指定参数订阅
exchangeId必填 交易所id 如Exchange.SSE(该参数与codes参数必填其一)isLevel2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2codes必填 订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'](若该参数与instruments、exchangeId同时存在,以该参数为准)
// 方式一:
smart.current_account.subscribe({codes:['600000.SH','300001.SZ']});
smart.current_account.on_quote(quote=>{
console.log(JSON.stringify(quote));
})
2
3
4
5
// 方式二(不推荐):
smart.current_account.subscribe(['600000','600918'], smart.Type.Exchange.SSE);
smart.current_account.on_quote(quote=>{
console.log(JSON.stringify(quote));
})
2
3
4
5
# account.unsubscribe
取消订阅 注意无account_id参数 这里区别alphax后台的unsubscribe函数是后台第一个参数是source
instruments- 数组 必填 取消订阅的股票列表 数组 如['600000'](该参数与codes参数必填其一)
- 或 Object 必填 作为取消订阅参数对象{...}包含unsubscribe的所有参数,仅需一个Object即可实现指定参数取消订阅
exchange_id必填 交易所id 如Exchange.SSE(该参数与codes参数必填其一)is_level2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2codes必填 取消订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'](若该参数与instruments、exchange_id同时存在,以该参数为准)
// 方式一:
smart.current_account.unsubscribe({codes:['600000.SH','300001.SZ']});
2
// 方式二(不推荐):
smart.current_account.unsubscribe(['600000','600918'], smart.Type.Exchange.SSE);
2
# account.subscribe_index
订阅指数行情 注意无account_id参数 通过smart.current_account.on_quote(on_quote_callback)监听行情变化
instruments必填 订阅的指数列表 数组 如["000001", "CESCPD", "931646"]isLevel2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2
smart.current_account.subscribe_index(["000001", "CESCPD", "931646"]);
smart.current_account.on_quote(quote=>{
if(quote.instrument_type == smart.Type.InstrumentType.Index){
console.log(JSON.stringify(quote));
}
})
2
3
4
5
6
# account.unsubscribe_index
取消订阅指数行情 注意无account_id参数
instruments必填 订阅的指数列表 数组 如["000001", "CESCPD", "931646"]isLevel2选填 是否level2,默认为false bool类型 true or false 目前暂不支持level2
smart.current_account.unsubscribe_index(["000001", "CESCPD", "931646"]);
# account.insert_order
资金账户下单 标准版不支持两融e="warning" text="标准版不支持两融" />
使用方法参见insert_order,但是不需要传前三个参数(accountId、strategyPlatformType、strategyId)
// 方式一:
smart.current_account.insert_order(
"600000",
smart.Type.Exchange.SSE,
7.06,
100,
smart.Type.PriceType.Limit,
smart.Type.Side.Buy,
);
2
3
4
5
6
7
8
9
// 方式二:
smart.current_account.insert_order({
code:"600000.SH",
limitPrice:7.06,
volume:100,
side:smart.Type.Side.Buy,
});
2
3
4
5
6
7
# account.cancel_order
账号级别的撤单
使用方法参见cancel_order,但是不需要传account_id参数
smart.current_account.cancel_order(order_id);
# account.modifyStrategy 标准版不支持
修改注册的策略信息
- account_id 必填 账号id
- strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
- strategy_id 策略名称
- config 策略信息
smart.current_account.modifyStrategy(strategy_platform_type, strategy_id, config);
# account.newStrategyInstance 标准版不支持
创建策略实例,返回一个Strategy对象
- strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
- strategy_id 策略名称
smart.current_account.newStrategyInstance(strategy_platform_type, strategy_id);
# account.removeStrategy 标准版不支持
删除一个策略
- strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
- strategy_id 策略名称
smart.current_account.removeStrategy(strategy_platform_type, strategy_id);
# account.createStrategy 标准版不支持
创建一个全新的策略实例
使用方法参见createStrategy,但是不需要传account_id参数
smart.current_account.createStrategy(strategy_platform_type, strategy_id, config);
# account.startStrategy 标准版不支持
开始运行策略或母单实例
使用方法参见startStrategy,但是不需要传account_id参数
smart.current_account.startStrategy(strategy_platform_type, strategy_id, config);
# account.insertAlgoOrder 标准版不支持
创建并开始运行策略或母单实例
使用方法参见insertAlgoOrder,但是不需要传account_id参数
smart.current_account.insertAlgoOrder(strategy_platform_type, strategy_id, config);
# account.queryCreditAssets 仅支持两融账户
获取最新的信用资产信息
let assets = await smart.current_account.queryCreditAssets();
# 策略-Strategy 标准版不支持
获取策略相关数据、控制策略的行为
# 实例事件
Strategy 是一个EventEmitter。可以监听的事件详见Event
# strategy.on_order
接收策略的委托推送
callbackFunctionorderObject - 事件发生时返回一个Order对象
strategy.on_order(order => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_ORDER, order => {});
2
3
# strategy.on_trade
接收策略的成交回报推送
callbackFunctiontradeObject - 事件发生时返回一个Trade对象
strategy.on_trade(trade => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_TRADE, trade => {});
2
3
# strategy.on_book AlphaX
接收策略账簿的全量推送
strategy.on_book(book);
# strategy.on_strategy_status_change
策略进程状态变化推送 AlphaX
算法母单状态变化推送 Algo
callbackFunctionstatusObject - 事件发生时返回一个进程状态对象
strategy.on_strategy_status_change(status => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_STRATEGY_STATUS_CHANGE, status => {});
2
3
# 策略状态对象 status AlphaX
一个包含当前策略状态,策略名等信息的js对象
process_nameString - 进程名strategy_idString - 策略idstatusString - 进程状态 StrategyStatus枚举status_nameString - 进程状态中文名strategy_platform_typeString - 策略所属平台类型 StrategyPlatformType枚举
# 母单状态对象 Object Algo
algo 算法母单实时运行状态 Object
process_type状态类型,如"createStrategyRsp" 创建 等 Stringprocess_name母单ID或clent_ID,如"200220015003941" Stringstatus母单状态,如Started:已启动status_name状态中文名 Stringstrategy_platform_type策略所属平台类型 StrategyPlatformType枚举data母单其他具体参数
# strategy.on_strategy_quote AlphaX
某策略订阅的行情推送
messageString - 某策略订阅的行情推送 策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响
strategy.on_strategy_quote(quote => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_STRATEGY_QUOTE, quote => {});
2
3
# strategy.on_alphax_msg AlphaX
接收服务端功夫策略的自定义消息推送
messageString - 功夫策略推送过来的自定义内容,可以以json字符串形式存放更多复杂信息,前台通过JSON.parseJSON处理
strategy.on_alphax_msg(message => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_ALPHAX_MSG, message => {});
2
3
# 静态方法
# 实例属性
# strategy_platform_type
策略平台类型 StrategyPlatformType枚举
# strategy_id
策略id String 对于策略名称
# parent_order_id
母单编号 String
# status
策略状态 StrategyStatus枚举
# status_name
策略状态中文 String
# isPrivate
Boolean 类型。true 表示是客户自有的策略。相反的则是有其他策略平台提供的公共策略。
# round_list
当天策略启动的轮次信息 Round对象Array集合 元素Round对象
# last_round
最后执行的轮次对象 Round对象
# book
策略的账簿信息
avail可用资金 Numbermargin保证金 Numbermarket_value市值 Numberinitial_equity初始权益 Numberdynamic_equity动态权益 Numberstatic_equity静态权益 Numberrealized_pnl已实现盈亏 Numberunrealized_pnl未实现盈亏 Number
# strategy_position_list
该策略的实时持仓 Position对象Array集合 元素Position对象
# strategy_order_list
该策略实时委托列表 Order对象Array集合 元素Order对象
# strategy_trade_list
该策略的实时成交回报 Trade对象Array集合 元素Trade对象
# relation_account_map
该策略涉及的资金账号map集合 key为资金账号 value为Account对象
# 实例方法
# strategy.loadData
加载策略相关交易数据并注册相关事件监听
当strategy对象刚刚创建成功后,其实并没有历史交易数据,也没有和后台的策略平台建立链路,所以后台系统的策略更新并不会推送到策略中。
需要调用一下loadData方法,加载历史数据,并和后台建立逻辑链路。之后的交易信息变动会以事件的形式触发。
await strategy.loadData();
# strategy.createStrategy Algo
创建一个全新的策略实例或母单
account_idString(必填) - 账号idclent_idString(必填) - 策略idconfigString(必填) - 策略信息对象 记录在smartserver
strategy.createStrategy(account_id, clent_id, config);
# strategy.startStrategy
启动当前策略或母单
paramObject(选填) - 启动参数(v1.1.0新增)
try {
await strategy.startStrategy();
await strategy.startStrategy({ target: ["600000.SH", "0000001.SZ"] }); // SDK v1.1.0 后可以传参
} catch (err) {
console.error("策略启动失败!");
}
2
3
4
5
6
从策略中获取启动参数
def pre_start(context):
param = context.getStrategyConfig()
2
# strategy.stopStrategy
停止当前策略或母单
可能的出错原因有
0001 未找到有效的策略信息
0001 策略未就绪,请检查策略是否上传成功
0001 策略进程已被其他操作启动,您的停止操作无效
0001 其他停止失败
try {
await strategy.stopStrategy();
} catch (err) {
console.error("策略停止失败!");
}
2
3
4
5
# strategy.forceStopStrategy Algo
强制停止当前策略或母单
strategy.forceStopStrategy();
# strategy.postStrategyParamsBeforeStart AlphaX
策略启动前传参
paramString | Object - 参数对象,类型是字符串|JSON对象均可 特别是作为字符串传递时其内容可以是json字符串、csv字符串、xml字符串均可,但要注意里面的'和"进行转义以防止破坏字符串表达filePathString - 策略平台落地的参数文件的相对本策略根目录的相对路径
await strategy.postStrategyParamsBeforeStart({ aaa: "bbb" }, "/lib/config.json");
# strategy.postStrategyParams AlphaX
策略启动后(运行期间)向策略发送消息
messageObject - 消息对象,必须是对象类型
await strategy.postStrategyParams({ aaa: "bbb" });
# strategy.startTD AlphaX
启动td
account_idString - 资金账号 StringsourceString - smart.Type.Source枚举 默认为xtppwdString - 资金账号的密码 可选 String 当不传时前台自动弹出对话框让用户输入密码
strategy.startTD(account_id, source, pwd);
# strategy.startMD AlphaX
启动md
account_idString - 资金账号 StringsourceString - smart.Type.Source枚举 默认为xtppwdString - 资金账号的密码 可选 String 当不传时前台自动弹出对话框让用户输入密码
strategy.startMD(account_id, source, pwd);
# strategy.download AlphaX
将后台的策略目录下的文件下载到前台,比如策略参数的配置文件,严禁下载大文件
filePathString - 策略中,文件相对路径rawBoolean(可选) - 是否使用原始编码,默认为false,SDK会尝试文件内容转为字符串。如果希望得到二进制的文件内容,可以设置为true 返回String或者TypedArray- Promise形式的文件内容 当raw不传或传false时,返回String 或者 当raw传true是返回TypedArray代表文件的二进制 如果获取出错,会抛出异常。
const content = await strategy.download("/lib/config.json");
# Strategy方法的支持情况
| 方法 | Front | AlphaX | Algo | ProgramTrade |
|---|---|---|---|---|
| uploadFile | 1.0.0暂未实现 | x | ||
| startStrategy | ○ | ○ | ||
| stopStrategy | ○ | ○ | ||
| forceStopStrategy | x | ○ | ||
| postStrategyParamsBeforeStart | ○ | x | ||
| postStrategyParams | ○ | x | ||
| download | ○ | x | ||
| modifyStrategyBook | 1.0.0暂未实现 | x | ||
| modifyStrategyPosition | 1.0.0暂未实现 | x | ||
| setCommission | 1.0.0暂未实现 | x | ||
| subscribeStrategyLog | 1.0.0暂未实现 | x | ||
| unsubscribeStrategyLog | 1.0.0暂未实现 | x | ||
| getStrategyLogContent | 1.0.0暂未实现 | x | ||
| throwStrategyException | 1.0.0暂未实现 | x | ||
| addAccount | 1.0.0暂未实现 | x | ||
| removeAccount | 1.0.0暂未实现 | x | ||
| startTD | ○ | x | ||
| startMD | ○ | x | ||
| insert_order | 1.0.0暂未实现 | x | ||
| cancel_order | 1.0.0暂未实现 | x | ||
| subscribe | ○ | x | ||
| unsubscribe | ○ | x | ||
| on_strategy_quote | ○ | x | ||
| on_book | ○ | x | ||
| on_order | ○ | ○ | ||
| on_trade | ○ | ○ | ||
| on_position | ○ | x | ||
| on_alphax_msg | ○ | x | ||
| on_strategy_status_change | ○ | ○ | ||
| on_strategy_cancel_fail | ○ | x |
# 事件-Event
组件中会派发许多事件,
smart对象、
账户(Account)对象和
策略(Strategy)对象
都是一个Emitter (opens new window),意味着都可以使用如下方法:
on: 注册一个监听器once: 注册一个一次性的监听器off: 取消注册监听器emit: 派发事件listeners: 查看监听器
详情参考component-emitter文档 (opens new window)
同时为了方便调用,以上对象中还暴露了若干以on_开头的方法,与on方法等效。例如
smart.on_init(callbackFunction);
smart.on(Event.ON_INIT, callbackFunction);
2
ON_INIT组件初始化 类似domReady事件,组件所有代码都必须在该事件之后ON_CLOSE组件被关闭ON_SHOW组件被显示ON_HIDE组件被隐藏ON_RESET组件用户数据被清空重置ON_QUOTE订阅行情后,行情变化推送 策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响ON_ETF_PROFITETF折溢价利润推送数据ON_ASSETS账户资金的全量推送ON_BOOK策略资金的全量推送ON_POSITION持仓变化的增量推送ON_ORDER委托变化推送ON_TRADE成交变化推送ON_CANCEL_FAIL撤单失败的消息推送ON_ALPHAX_TD_STATUS_CHANGEalphax td状态变化时推送ON_ALPHAX_MD_STATUS_CHANGEalphax md状态变化时推送ON_STRATEGY_STATUS_CHANGE策略状态变化时推送ON_ALPHAX_MSGalphax 策略往前端推送数据ON_CREDIT_TICKER_ASSIGN更新信用账户可融券头寸信息 仅支持两融账户ON_CREDIT_DEBT_FINANCE更新融资负债合约信息 仅支持两融账户ON_CREDIT_DEBT_SECURITY更新融券负债合约信息 仅支持两融账户
不同对象派发出的事件不同(表格中标明了等效事件监听方法)
| 事件 | smart | Account | Strategy | 说明 |
|---|---|---|---|---|
ON_INIT | ○ smart.on_init | - | - | 组件初始化 类似domReady事件,组件所有代码都必须在该事件之后 |
ON_CLOSE | ○ smart.on_close | - | - | 组件被关闭 |
ON_SHOW | ○ smart.on_show | - | - | 组件被显示 |
ON_HIDE | ○ smart.on_hide | - | - | 组件被隐藏 |
ON_RESET | ○ | - | - | 组件用户数据被清空重置 |
ON_QUOTE | ○ | ○ account.on_quote | ○ strategy.on_strategy_quote | 订阅行情后,行情变化推送 策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响 |
ON_ETF_PROFIT | ○ | - | - | ETF折溢价利润推送数据 |
ON_ASSETS | - | ○ account.on_assets | - | 账户资金的全量推送 |
ON_BOOK | - | - | ○ strategy.on_book | 策略资金的全量推送 |
ON_POSITION | - | ○ account.on_position | ○ strategy.on_position | 持仓变化的增量推送 |
ON_ORDER | - | ○ account.on_order | ○ strategy.on_order | 委托变化推送 |
ON_TRADE | - | ○ account.on_trade | ○ strategy.on_trade | 成交变化推送 |
ON_CANCEL_FAIL | - | ○ account.on_cancel_fail | - | 撤单失败的消息推送 |
ON_ALPHAX_TD_STATUS_CHANGE | ○ smart.on_alphax_td_status_change | - | - | alphax td状态变化时推送 |
ON_ALPHAX_MD_STATUS_CHANGE | ○ smart.on_alphax_md_status_change | - | - | alphax md状态变化时推送 |
ON_STRATEGY_STATUS_CHANGE | ○ | - | ○ strategy.on_strategy_status_change | 策略状态变化时推送 |
ON_ALPHAX_MSG | - | - | ○ strategy.on_alphax_msg | alphax 策略往前端推送数据 |
ON_CREDIT_TICKER_ASSIGN | ○ | ○ account.on_credit_ticker_assign | - | 更新信用账户可融券头寸信息 仅支持两融账户 |
ON_CREDIT_DEBT_FINANCE | ○ | ○ account.on_credit_debt_finance | - | 更新融资负债合约信息 仅支持两融账户 |
ON_CREDIT_DEBT_SECURITY | ○ | ○ account.on_credit_debt_security | - | 更新融券负债合约信息 仅支持两融账户 |
# 数据类型-Type
Type中包含枚举类型和结构体的构造方法。
枚举类型
# 柜台类型-Source
柜台类型
const Source = {
Unknown: 'unknown',
XTP: "xtp", // 中泰证券 xtp 柜台
CTP: "ctp", // 期货 ctp 接口
SIM: "sim", // 模拟柜台 sim
};
2
3
4
5
6
# 交易所-Exchange
交易所
const Exchange = {
Unknown: 0, // 未知
SZE: "SZE", // 深交所
SSE: "SSE", // 上交所
SHFE: "SHFE", // 上期所(期货)
DCE: "DCE", // 大商所(期货)
CZCE: "CZCE", // 郑商所(期货)
CFFEX: "CFFEX", // 中金所(期货)
INE: "INE", // 能源中心(期货)
//以下交易所类型仅指数支持
HSE: "HSE", // 沪深
XGE: "XGE", // 香港
YTE: "YTE", //亚太
ZQE: "ZQE", //债券市场
QTE: "QTE", //其它
QQE: "QQE", //全球
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 证券类型-InstrumentType
证券类型
const InstrumentType = {
Unknown: "Unknown", // 未知 xtp:5 XTP_TICKER_TYPE_UNKNOWN
Stock: "Stock", // 股票 xtp:0 XTP_TICKER_TYPE_STOCK普通股票
Future: "Future", // 期货
Bond: "Bond", // 债券 xtp:3 XTP_TICKER_TYPE_BOND债券
StockOption: "StockOption", // 股票期权 xtp:4 XTP_TICKER_TYPE_OPTION期权
// 以下为alphax缺少
Index: "Index", // 指数 xtp:1 XTP_TICKER_TYPE_INDEX指数
Fund: "Fund", // 基金 xtp:2 XTP_TICKER_TYPE_FUND基金
};
2
3
4
5
6
7
8
9
10
# 价格条件-PriceType
价格条件
const PriceType = {
Unknown: 0, // 无效 xtp:XTP_PRICE_TYPE_UNKNOWN
Limit: 1, // 限价,通用 xtp:1 XTP_PRICE_LIMIT限价单-沪 / 深 / 沪期权(除普通股票业务外,其余业务均使用此种类型)
Any: 9, // 市价,通用,对于股票上海为最优五档剩余撤销,深圳为即时成交剩余撤销 xtp:4 XTP_PRICE_BEST5_OR_ CANCEL最优5档即时成交剩余转撤销,市价单-沪 或 xtp:2 XTP_PRICE_BEST_OR_CANCEL即时成交剩余转撤销,市价单-深 / 沪期权
Fak: 2, // 股票(仅深圳)即时成交剩余撤销,不需要报价;期货即时成交剩余撤销,需要报价 xtp:2 XTP_PRICE_BEST_OR_ CANCEL即时成交剩余转撤销,市价单-深 / 沪期权
ReverseBest: 3, // 上海最优五档即时成交剩余转限价,需要报价;深圳对手方最优价格申报,不需要报价 xtp:3 XTP_PRICE_BEST5_OR_ LIMIT最优五档即时成交剩余转限价,市价单-沪 或 7 XTP_PRICE_REVERSE_BEST_LIMIT对方最优剩余转限价,市价单-深 / 沪期权
FakBest5: 4, // 上海深圳最优五档即时成交剩余撤销,上交所的市价需要报价,深交所的市价不需要报价 xtp:4 XTP_PRICE_BEST5_OR_ CANCEL最优5档即时成交剩余转撤销,市价单-沪深
Fok: 5, // 股票(仅深圳)市价全额成交或者撤销,不需要报价;期货全部或撤销,需要报价 xtp:5 XTP_PRICE_ALL_OR_CANCEL全部成交或撤销,市价单-深 / 沪期权 或 8 XTP_PRICE_LIMIT_OR_CANCEL期权限价申报FOK
ForwardBest: 6, // 仅深圳本方最优价格申报, 不需要报价 xtp:6 XTP_PRICE_FORWARD_BEST本方最优,市价单-深
};
2
3
4
5
6
7
8
9
10
# 买卖方向-Side
买卖方向
const Side = {
Unknown: 0, //无效
Buy: 1, //买
Sell: 2, //卖
Purchase: 7, //申购
Pedemption: 8, //赎回
Split: 9, //拆分
Merge: 10, //合并
Cover: 11, //备兑
Lock: 12, //锁仓 对应xtp的XTP_SIDE_FREEZE 12
MarginTrade: 21, //融资买入
ShortSell: 22, //融券卖出
RepayMargin: 23, //卖券还款
RepayStock: 24, // 买券还券
StockRepayStock: 26, //现券还券
SurstkTrans: 27, //余券划转
GrtstkTransin: 28, //担保品转入
GrtstkTransout: 29, //担保品转出
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 委托业务类型-BusinessType
委托业务类型
const BusinessType = {
CASH: 0, // 普通股票
REPO: 2, // 国债逆回购
ETF: 3, // ETF申赎
MARGIN: 4, // 融资融券
BOND_SWAP_STOCK: 15, // 债转股
UNKNOWN: 13,
};
2
3
4
5
6
7
8
# 开平标志-Offset
开平标志
const Offset = {
Open: 0, //开 alphax:0 xtp:1 XTP_POSITION_EFFECT_OPEN
Close: 1, //平 alphax:1 xtp:2 XTP_POSITION_EFFECT_CLOSE
CloseToday: 2, //平今 alphax:2 xtp:4 XTP_POSITION_EFFECT_CLOSETODAY
CloseYesterday: 3, //平昨 alphax:3 xtp:5 XTP_POSITION_EFFECT_CLOSEYESTERDAY
ForceClose: 13, //强平 xtp:3 XTP_POSITION_EFFECT_FORCECLOSE
ForceOff: 6, //强减 xtp:6 XTP_POSITION_EFFECT_FORCEOFF
LocalForceClose: 7, //本地强平 xtp:7 XTP_POSITION_EFFECT_LOCALFORCECLOSE
CreditForceCover: 8, //信用业务追保强平 xtp:8 XTP_POSITION_EFFECT_CREDIT_FORCE_COVER
CreditForceClear: 9, //信用业务清偿强平 xtp:9 XTP_POSITION_EFFECT_CREDIT_FORCE_CLEAR
CreditForceDebt: 10, //信用业务合约到期强平 xtp:10 XTP_POSITION_EFFECT_CREDIT_FORCE_DEBT
CreditForceUncond: 11, //信用业务清偿强平 xtp:11 XTP_POSITION_EFFECT_CREDIT_FORCE_UNCOND
Unknown: 12, //未知 xtp:12 XTP_POSITION_EFFECT_UNKNOWN
Init: 100, //初始值或未知值开平标识,现货适用 对应xtp:0 XTP_POSITION_EFFECT_INIT
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 持仓方向-Direction
持仓方向 多空 对应xtp的XTP_POSITION_DIRECTION_TYPE
const Direction = {
Long: 0, // 多 xtp:1 XTP_POSITION_DIRECTION_LONG
Short: 1, // 空 xtp:2 XTP_POSITION_DIRECTION_SHORT
Net: 2, // 净 xtp:0 XTP_POSITION_DIRECTION_NET
Covered: 3, // 备兑 xtp:3 XTP_POSITION_DIRECTION_COVERED
};
2
3
4
5
6
# 委托状态-OrderStatus
委托状态
const OrderStatus = {
Unknown: 0, //未知(xtp:8 XTP_ORDER_STATUS_UNKNOWN)
Submitted: 1, //已提交(对应xtp:0 XTP_ORDER_STATUS_INIT初始化)
Pending: 2, //等待(对应xtp:5 XTP_ORDER_STATUS_NOTRADEQUEUEING未成交)
Cancelled: 3, //已撤单(xtp:6 XTP_ORDER_STATUS_CANCELED已撤单)
Error: 4, //错误(对应xtp:7 XTP_ORDER_STATUS_REJECTED拒单)
Filled: 5, //已成交(对应xtp:1 XTP_ORDER_STATUS_ALLTRADED全部成交)
PartialFilledNotActive: 6, //部分撤单,即部成部撤(xtp:3 XTP_ORDER_STATUS_PARTTRADEDNOTQUEUEING部分撤单)
PartialFilledActive: 7, //部分成交(对应xtp:2 XTP_ORDER_STATUS_PARTTRADEDQUEUEING部分成交)
};
2
3
4
5
6
7
8
9
10
# 账号类型-AccountType
账号类型 对应XTP_ACCOUNT_TYPE
const AccountType = {
Stock: 0, // 普通账户 xtp:0 XTP_ACCOUNT_NORMAL普通账户
Credit: 1, // 信用账户 xtp:1 XTP_ACCOUNT_CREDIT信用账户
Future: 2, // 期货账户
//以下为alphax缺少:
Derive: 3, // 期权衍生品账户 xtp:2 XTP_ACCOUNT_DERIVE衍生品账户
Unknown: 4, // 未知 xtp:4 XTP_ACCOUNT_UNKNOWN
};
2
3
4
5
6
7
8
# 策略平台类型-StrategyPlatformType
策略平台类型
const StrategyPlatformType = {
Front: "front", // 客户端直接运行的js前端策略
AlphaX: "alphax", // AlphaX即功夫
Algo: "algo", // 算法平台
ProgramTrade: "programTrade", // 程序化交易
Spec: "spec", // 特定平台 按ProgramTrade相同的逻辑处理 1.0.0未写入文档
FrontPy: "frontpy", // 客户端python策略类型
};
2
3
4
5
6
7
8
# 策略执行状态-StrategyStatus
策略执行状态 (alphax的td和md也复用该状态)
const StrategyStatus = {
Unknown: 'Unknown', //未知
Starting: 'Starting', //启动中 预留暂时无用
Started: 'Started', // 启动完毕运行中
Pause: 'Pause', // 暂停 预留暂时无用
Stopping: 'Stopping', //停止中 预留暂时无用
Stopped: 'Stopped', //已停止
Errored: 'Errored',//错误
};
2
3
4
5
6
7
8
9
母单执行状态执行状态
const StrategyStatus = {
XTP_STRATEGY_STATE_CREATED:'XTP_STRATEGY_STATE_CREATED',// 已创建
XTP_STRATEGY_STATE_STARTED:'XTP_STRATEGY_STATE_STARTED',// 执行中
XTP_STRATEGY_STATE_STOPPING: 'XTP_STRATEGY_STATE_STOPPING',//停止中
XTP_STRATEGY_STATE_STOPPED: 'XTP_STRATEGY_STATE_STOPPED',//已停止
XTP_STRATEGY_STATE_DESTROYING: 'XTP_STRATEGY_STATE_DESTROYING',//强停中
XTP_STRATEGY_STATE_DESTROYED:'XTP_STRATEGY_STATE_DESTROYED',// 已强停
XTP_STRATEGY_STATE_ERROR: 'XTP_STRATEGY_STATE_ERROR'//有异常
};
2
3
4
5
6
7
8
9
结构体
# ETF配方表-ETF
ETF配方表对象
function ETF() {
Instrument.apply(this);//证券基础字段参见Instrument
this.cash_component;//T-1日现金差额
this.estimate_amount;//T日预估现金余额
this.max_cash_ratio;//现金替代比率上限
this.net_value;//T-1日基金份额净值
this.redemption_status;//基金当天赎回状态:1可以,0不可以
this.total_amount;//最小申赎单位净值
this.unit;//最小申购赎回单位
this.basket = [];//成分股篮子列表
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
# 成分股-ETFCompoment
ETF成分股对象
function ETFCompoment() {
Instrument.apply(this);//证券基础字段参见Instrument
this.amount;//替代金额
this.creation_amount;//溢价替代金额
this.creation_premium_ratio;
this.premium_ratio;//溢价比例
this.quantity;//股票数量
this.redemption_amount;//折价替代金额
this.redemption_discount_ratio;//折价比例
this.replace_type;//现金替代类型 参考ETFReplaceType
this.ticker;//申赎代码如:510501
this.creation_amount;//申购现金替代金额
this.redemption_amount;//赎回现金替代金额
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 预期利润-ETFProfit
ETF预期利润
function ETFProfit() {
this.instrument_id;//ETF的证券代码
this.market_type;//ETF的市场
this.iopv;//ETF的模拟净值
this.iopv_buy;//ETF的买模拟净值
this.iopv_sale;//ETF的卖模拟净值
this.diopv;//ETF的动态模拟净值
this.dis_profit;//ETF折价预期利润
this.pre_profit;//ETF溢价预期利润
}
2
3
4
5
6
7
8
9
10
# 持仓-Position
持仓对象定义
function Position() {
this.instrument_id; //合约ID(证券代码)
this.instrument_name; //证券名称
this.instrument_type = InstrumentType.Unknown; //合约类型
this.exchange_id = Exchange.Unknown; //交易所id
this.exchange_id_name = '未知'; //交易所名称
this.direction; // 持仓方向
this.direction_name = ''; // 持仓方向名称
this.name_py = ''; //拼音首字母 如"安诺其"为"anq" alphax缺少
this.volume = 0; //持仓量
this.sellable_volume = 0; //可卖持仓 alphax缺少
this.position_cost_price; //持仓成本 avgPrice
this.profit_price; // 盈亏成本 profitPrice。 SDKv1.1.0新增
this.last_price; //最新价
this.market_value = 0; //市值
this.unrealized_pnl = 0; //浮动盈亏(保留字段,未计算) 未实现盈亏
this.yesterday_volume = 0; //昨日持仓
this.purchase_redeemable_qty = 0; //今日申购赎回数量 alphax缺少
this.executable_option = 0; //可行权合约 alphax缺少
this.lockable_position = 0; //可锁定标的 alphax缺少
this.executable_underlying = 0; //可行权标的 alphax缺少
this.locked_position = 0; //已锁定标的 alphax缺少
this.usable_locked_position = 0; //可用已锁定标的 alphax缺少
this.xtp_market_type = "XTP_EXCHANGE_UNKNOWN"; //交易市场
this.xtp_market_name = "未知"; //交易市场名称
this._instrument_id_direction = "";//内部使用 代码+持仓方向的联合主键 如"300067_XTP_POSITION_DIRECTION_NET"
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 委托回报-Order
委托确认、策略委托确认
function Order() {
this.rcv_time;// String 数据接收时间 "20200608140053830"
this.order_id;// String 订单ID(对应xtpid) orderXtpId "36934130021173201"
this.source_order_id;// String xtp order id
this.insert_time;// String 委托写入时间 insertTime "20200608140053830"
this.update_time;// String 委托更新时间 updateTime "20200608140053830"
this.trading_day;// String 交易日 insertTime中截取 "20200608"
this.instrument_id;// String 合约ID(证券代码) ticker "600000"
this.exchange_id;// String 交易所ID xtpMarketType转换 "SSE"
this.account_id;// String 账号ID(资金账号) userName "10912133333344"
this.client_id;// String 用户自定义编号 rowId || orderClientId (rowid优先) "6a1071e1-a94d-11ea-810c-4b25bab2cda3"
this.instrument_type;// Number 合约类型 xtpBusinessType转换 InstrumentType.Stock
this.limit_price;// Number 价格 price 10.23
this.frozen_price;// Number 冻结价格(市价单冻结价格为0.0) price 10.23
this.volume;// Number 数量 quantity 100
this.volume_traded;// Number 成交数量 qty_traded 0
this.volume_left;// Number 剩余数量 qty_left 100
this.tax;// Number 税 todo:
this.commission;// Number 手续费 todo:
this.status;// Number 订单状态 order_status
this.error_id;// Number 错误ID xtpErrorId
this.error_msg;// String 错误信息 xtpErrorMsg
this.side;// Number 买卖方向 xtpSideType
this.offset;// Number 开平方向 xtpPositionEffectType
this.price_type;// Number 价格类型 xtpPriceType
this.volume_condition;// Number 成交量类型
this.time_condition;// Number 成交时间类型
this.parent_order_id;// String 母单ID //篮子为runtimeId一个篮子一次交易一个值 etf套利为etf标签页期间是一个值 其他取alphax或smartserver传的 "6a1071e1-a94d-11ea-810c-4b25bab2cda3"
this.code = "";// String 证券代码.交易所标识 "600000.SH","000001.SZ"
this.traffic;// String 业务渠道标识 business_type "AlphaX"
this.traffic_sub_id;// String 业务子标识,一般填策略名称 businessSubId "网格交易"
this.cancel_time;// String 撤单时间 cancelTime "20200608140053830"
this.order_cancel_client_id;// String 撤单自定义编号 orderCancelClientId "0"
this.order_cancel_xtp_id;// String 所撤原单的编号(原xtpid) orderCancelXtpId "0"
this.instrument_name;// String 合约名称(证券名称) tickerName "浦发银行"
this.trade_amount;// Number 委托金额 tradeAmount 0
this.xtp_business_type;// String xtp证券业务类型 xtpBusinessType "XTP_BUSINESS_TYPE_CASH"
this.xtp_market_type;// String xtp市场类型 xtpMarketType "XTP_MKT_SZ_A"
//以下为xtp的冗余字段,为了获取xtp的原值
this.xtp_price_type;// String xtp价格类型 xtpPriceType "XTP_PRICE_LIMIT"
this.xtp_position_effect_type;//String xtp开平方向 xtpPositionEffectType "XTP_POSITION_EFFECT_OPEN"
this.xtp_side_type;// String xtp交易方向 xtpSideType "XTP_SIDE_BUY"
this.xtp_order_status;// String xtp订单状态 orderStatus "XTP_ORDER_STATUS_INIT"
//以下为xtp和alphax枚举值翻译为中文的名称
this.exchange_id_name;// String 交易所名称 "上交所"
this.instrument_type_name;// String 合约类型名称 "股票"
this.status_name;// String 订单状态名称 "全部成交"
this.side_name;// String 买卖方向名称 "买"
this.offset_name;// String 开平方向名称 "开"
this.price_type_name;// String 价格类型名称 "限价"
this.xtp_business_type_name;// String xtp证券业务类型名称 "现货"
this.xtp_market_name;// String xtp市场类型名称 "沪市"
this.xtp_price_type_name;// String xtp价格类型名称 "限价"
this.xtp_position_effect_type_name;//String xtp开平方向名称 "开"
this.xtp_side_type_name;// String xtp交易方向名称 "买"
this.xtp_order_status_name;// String xtp价格类型名称 "限价"
this.volume_condition_name;// String 成交量类型名称 "任何数量" "最小数量" "全部数量"
this.time_condition_name;// String 成交时间类型名称 "立即完成" "本节有效" "当日有效" "指定日期前有效" "撤销前有效" "集合竞价有效"
this.traffic_name;// String 业务渠道名称 "策略"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 成交回报-Trade
成交回报、策略成交回报
function Trade() {
this.rcv_time;// String 数据接收时间 "20200608140053830"
this.order_id;// String 订单ID(对应xtpid) orderXtpId "36934130021173201"
this.parent_order_id;// String 母单ID // runtimeId "6a1071e1-a94d-11ea-810c-4b25bab2cda3"
this.trade_time;// String 成交时间 tradeTime "20200608140053830"
this.trading_day;// String 交易日 insertTime中截取 "20200608"
this.instrument_id;// String 合约ID(证券代码) ticker "600000"
this.exchange_id;// String 交易所ID xtpMarketType转换 "SSE"
this.account_id;// String 账号ID(资金账号) userName "10912133333344"
this.client_id;// String 用户自定义编号 rowId || orderClientId (rowid优先) "6a1071e1-a94d-11ea-810c-4b25bab2cda3"
this.instrument_type;// Number 合约类型 xtpBusinessType转换 InstrumentType.Stock
this.side;// Number 买卖方向 xtpSideType
this.offset;// Number 开平方向 xtpPositionEffectType
this.price;// Number 价格 price 10.23
this.volume;// Number 数量 quantity 100
this.tax;// Number 税 todo:
this.commission;// Number 手续费 todo:
this.code = "";// String 证券代码.交易所标识 "600000.SH","000001.SZ"
this.traffic;// String 业务渠道标识 business_type "AlphaX"
this.traffic_sub_id;// String 业务子标识,一般填策略名称 businessSubId "网格交易"
this.instrument_name;// String 合约名称(证券名称) tickerName "浦发银行"
this.trade_amount;// Number 委托金额 tradeAmount 0
this.xtp_business_type;// String xtp证券业务类型 xtpBusinessType "XTP_BUSINESS_TYPE_CASH"
this.xtp_market_type;// String xtp市场类型 xtpMarketType "XTP_MKT_SZ_A"
this.xtp_exec_id;// String 成交编号() execId "15790"
this.xtp_report_index;// String 成交序号() reportIndex "6806"
this.xtp_order_exch_id;// String 报单编号 –交易所单号,上交所为空,深交所有此字段 orderExchId ""
this.xtp_trade_type;// String 成交类型 tradeType "1" 代表XTP_TRDT_CASH 现金替代"
this.xtp_branch_pbu;// String 交易所交易员代码 branchPbu "13688"
//以下为xtp的冗余字段,为了获取xtp的原值
this.xtp_position_effect_type;//String xtp开平方向 xtpPositionEffectType "XTP_POSITION_EFFECT_OPEN"
this.xtp_side_type;// String xtp交易方向 xtpSideType "XTP_SIDE_BUY"
//以下为xtp和alphax枚举值翻译为中文的名称
this.exchange_id_name;// String 交易所名称 "上交所"
this.instrument_type_name;// String 合约类型名称 "股票"
this.side_name;// String 买卖方向名称 "买"
this.offset_name;// String 开平方向名称 "开"
this.xtp_business_type_name;// String xtp证券业务类型名称 "现货"
this.xtp_market_name;// String xtp市场类型名称 "沪市"
this.xtp_position_effect_type_name;//String xtp开平方向名称 "开"
this.xtp_side_type_name;// String xtp交易方向名称 "买"
this.traffic_name;// String 业务渠道名称 "策略"
this.xtp_trade_type_name;// String 成交类型名称 "现金替代"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 行情信息-Quote
行情信息
function Quote() {
this.source_id; //柜台ID xtp缺少
this.trading_day; //交易日 xtp缺少
this.rcv_time; //数据接收时间 xtp缺少
this.data_time; //数据生成时间 dataTime
this.instrument_id; //合约ID ticker
this.exchange_id; //交易所 exchangeId XTP_EXCHANGE_SH
this.instrument_type; //合约类型 xtp缺少
this.pre_close_price; //昨收价 preClosePrice
this.pre_settlement_price; //昨结价 xtp缺少
this.last_price; //最新价 lastPrice
this.volume; //成交数量 qty
this.turnover; //成交金额 turnover
this.pre_open_interest; //昨持仓量 xtp缺少
this.open_interest; //持仓量 xtp缺少
this.open_price; //今开盘 openPrice
this.high_price; //最高价 highPrice
this.low_price; //最低价 lowPrice
this.upper_limit_price; //涨停板价 upperLimitPrice
this.lower_limit_price; //跌停板价 lowerLimitPrice
this.close_price; //收盘价 closePrice
this.settlement_price; //结算价 xtp缺少
this.bid_price; //申买价数组 如[11, 10.55, 10, 0, 0, 0, 0, 0, 0, 0] bid
this.ask_price; //申卖价数组 ask
this.bid_volume; //申买量数组 如[1000, 14700, 100, 0, 0, 0, 0, 0, 0, 0] bidQty
this.ask_volume; //申卖量数组 askQty
this.etf_buy_count; // etf申购笔数
this.etf_buy_qty; // etf申购数量
this.etf_sell_count; // etf赎回笔数
this.etf_sell_qty; // etf赎回数量
//以下是alphax缺少的
this.avg_price; //当日均价 alphax缺少
this.iopv; //iopv alphax缺少
this.instrument_status; //证券状态 如"E110 "详见https://xtp.zts.com.cn/doc/api/FAQ 问题编号64
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
证券instrument_status状态信息:
对于普通股票,具体值如下 第0位: S=启动(开市前) C=集合竞价(不分开盘收盘) T=连续竞价 B=休市 E=闭市 P=停牌 A=盘后交易 V=波段性中断 第1位: 0=不可正常交易, 1=可正常交易, 无意义填空格 第2位: 0=未上市, 1=已上市; (深交所忽略该字段) 如图所示:

对于期权,具体值如下 第 0 位: S=启动(开市前) C=集合竞价 T=连续交易 B=休市 E=闭市 V=波动性中断 P=临时停牌 U=收盘集合竞价 M=可恢复交易的熔断(盘中集合竞价) N=不可恢复交易的熔断(暂停交易至闭市) 第1位: 0=未连续停牌; 1=连续停牌; (预留,暂填空格) 第2位: 0=不限制开仓 1=限制备兑开仓 2=限制卖出开仓 3=限制卖出开仓、备兑开仓 4=限制买入开仓 5=限制买入开仓、备兑 开仓 6=限制买入开仓、卖出开仓 7=限制买入开仓、卖出开仓、备兑开仓 第3位: 0=在当前时段不接受进行新订单申报 1=在当前时段可接受进行新订单申报 如图所示:

# 证券信息-Instrument
证券信息
function Instrument() {
this.instrument_id; //合约ID(证券代码) ticker
this.instrument_name; //证券名称
this.instrument_type; //证券类型 InstrumentType枚举值 对应smart的securityType
this.exchange_id; //交易所ID "SZE"
this.exchange_id_name; //交易所名称
this.xtp_market_type; //市场ID "XTP_MKT_SZ_A"
this.name_py; //名称拼音首字母 namePy
this.price_tick; //最小价格变动单位 priceTick 0.01
this.precision; //最小价格变动单位精度(小数点后位数) precision
this.buy_volume_unit; // 弃用 最小买入数量 bidQtyUnit 100
this.sell_volume_unit; // 弃用 最小卖出数量 askQtyUnit
this.bid_volume_unit; // 限价买单位 bidQtyUnit
this.ask_volume_unit; // 限价卖单位 askQtyUnit
this.bid_upper_limit_volume; //限价买上限 bidQtyUpperLimit
this.bid_lower_limit_volume; //限价买下限 bidQtyLowerLimit
this.ask_upper_limit_volume; //限价卖上限 askQtyUpperLimit
this.ask_lower_limit_volume; //限价卖下限 askQtyLowerLimit
this.market_bid_volume_unit; // 市价买单位 marketBidQtyUnit
this.market_ask_volume_unit; // 市价卖单位 marketAskQtyUnit
this.market_bid_upper_limit_volume; //市价买上限 marketBidQtyUpperLimit
this.market_bid_lower_limit_volume; //市价买下限 marketBidQtyLowerLimit
this.market_ask_upper_limit_volume; //市价卖上限 marketAskQtyUpperLimit
this.market_ask_lower_limit_volume; //市价卖下限 marketAskQtyLowerLimit
this.pre_close_price; //昨收价 preClosePrice
this.upper_limit_price; //涨停价 upperLimitPrice
this.lower_limit_price; //跌停价 lowerLimitPrice
this.is_registration; // 是否注册制 isRegistration
this.kw; //keyword 证券名称删除其中的空格 转换为半角 搜索证券名称模糊匹配使用
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 新股信息-IPO
新股信息
class IPO extends Instrument {
constructor() {
// 证券基础字段参见Instrument
super();
this.market_type = "";
this.price = 0; // 价格
this.qty_upper_limit = 0; // 持仓数量
this.instrument_id = "";// 股票代码
this.instrument_name = ""; // 股票名称
this.instrument_type = InstrumentType.Unknown;// 股票类型
this.unit = 0;// 最小申购赎回单位
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# 可转债信息-ConvertableBond
可转债信息
class ConvertableBond extends Instrument {
constructor() {
// 证券基础字段参见Instrument
super();
this.qtyMax = 0 // 最大可转数量
this.qtyMin = 0 // 最小可转数量
this.swapFlag = false // 是否可转
this.swapPrice = 0 // 转换价格
this.underlyingTicker = "" // 正股代码
this.unit = 0 // 转换单位
}
}
2
3
4
5
6
7
8
9
10
11
12
# 策略的轮次信息-Round
策略的轮次信息 每次策略启动形成一个轮次
function Round(round_id) {
this.round_id = round_id;
this.round_name = '';//自定义 如果一轮次仅交易一个证券 可以填入证券名称 或者是业务的标记 如510050_折价
this.status = StrategyStatus.Unknown;//策略的运行状态
this.start_time = '';//开始时间
this.end_time = '';//结束时间
this.order_amount = 0;//已委托金额
this.trade_amount = 0;//已成交金额
this.target_amount = 0;//目标成交金额
this.execution_price = 0;//年化收益/策略执行价
this.market_price = 0;//市场成交价
this.price_diff = 0;//策略执行差价
this.error_msg = '';//策略错误提示
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# 信用可融券头寸信息-CreditTickerAssignInfo 仅支持两融账户
信用可融券头寸信息
function CreditTickerAssignInfo() {
this.instrument_id; // 证券代码
this.instrument_name; // 证券名称
this.exchange_id = Exchange.Unknown; // 交易所id
this.exchange_id_name = "未知"; // 交易所名称
this.name_py = ""; // 拼音首字母 如"安诺其"为"anq" alphax缺少
this.left_volume = 0; // 剩余可融券数量
this.frozen_volume = 0; // 冻结融券数量
this.yesterday_volume = 0;//昨日日融券数量
this.xtp_market_type = "XTP_EXCHANGE_UNKNOWN"; // xtp交易市场
this.code = ""; // 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
# 信用融资负债信息-CreditDebtFinance 仅支持两融账户
信用融资负债信息
function CreditDebtFinance() {
this.debt_id; // 负债合约编号
this.instrument_id; // 证券代码
this.instrument_name; // 证券名称
this.exchange_id = Exchange.Unknown; // 交易所id
this.exchange_id_name = "未知"; // 交易所名称
this.name_py = ""; // 拼音首字母 如"安诺其"为"anq" alphax缺少
this.xtp_market_type; // xtp交易市场
this.remain_amt = 0; // 未偿还金额
this.remain_principal = 0; // 未偿还本金
this.remain_interest = 0; // 未偿还利息
this.debt_status = 0;// 合约状态:0未了结,1已了结,2过期未平仓
this.end_date;//负债截止日期
this.orig_end_date;//负债原始截止日期
this.order_xtp_id;//负债订单编号
this.order_date;//委托日期
this.extended;//是否接收到展期
this.code = "";// 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 信用融券负债信息-CreditDebtSecurity 仅支持两融账户
信用融券负债信息
function CreditDebtSecurity() {
this.debt_id; // 负债合约编号
this.instrument_id; // 证券代码
this.instrument_name; // 证券名称
this.exchange_id = Exchange.Unknown; // 交易所id
this.exchange_id_name = "未知"; // 交易所名称
this.name_py = ""; // 拼音首字母 如"安诺其"为"anq" alphax缺少
this.xtp_market_type; // xtp交易市场
this.remain_interest = 0; // 未偿还利息
this.remain_volume = 0;//未偿还融券数量
this.due_right_volume = 0;//应偿还权益数量
this.debt_status = 0;// 合约状态:0未了结,1已了结,2过期未平仓
this.end_date;//负债截止日期
this.orig_end_date;//负债原始截止日期
this.order_xtp_id;//负债订单编号
this.order_date;//委托日期
this.extended;//是否接收到展期
this.code = "";// 证券代码.交易所标识,600000.SH,000001.SZ
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 策略对象-Strategy 标准版不支持
策略对象
function Strategy(strategyPlatformYype, strategyId) {
this.strategy_platform_type = strategyPlatformYype; // StrategyPlatformType枚举
this.strategy_id = strategyId;
this.status = EnumType.StrategyStatus.Unknown;
this.isPrivate = false; // 是否是私有策略
this.status_name = "未知";
this.round_list = []; // 当天策略启动的轮次信息 一个策略对象,alphax同时只能start一次,形成一个round对象,round_list是该策略当天历次启动的列表;对algo一个策略对象可同时start多次,形成多个round对象,round_list也是当天历次启动的列表,每个round_id对algo就是parent_order_id
this.last_round = null; // 最后执行的轮次对象
this.book = {
avail: 0, // 可用资金
margin: 0, // 保证金
market_value: 0, // 市值
initial_equity: 0, // 初始权益
dynamic_equity: 0, // 动态权益
static_equity: 0, // 静态权益
realized_pnl: 0, // 已实现盈亏
unrealized_pnl: 0, // 未实现盈亏
}; // 该策略的账簿信息 目前仅对AlphaX有效
this.strategy_position_list = []; // 该策略的实时持仓 StrategyPosition对象集合
this.strategy_order_list = []; // 该策略实时委托列表 Order对象集合
this.strategy_trade_list = []; // 该策略的实时成交回报 Trade对象集合
this.relation_account_map = {}; // 该策略涉及的资金账号
this.data = {}; // 策略的详细数据
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 算法策略对象-AlgoXStrategy 标准版不支持
算法策略对象
class AlgoXStrategy extends Strategy {
constructor(strategy_platform_type, strategy_id) {
super(strategy_platform_type, strategy_id);
this[orderReady] = false;
this[tradeReady] = false;
this[positionReady] = false;
this[assetReady] = false;
this.orderMap = {};
this.tradeMap = {};
this.smart = smart;
this.account = this.smart.current_account;
this.configdata = {};
this.mclientStrategyId = "";
this.started = false;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 行情bar信息-Bar
行情bar信息
function Bar() {
this.type; // 指标类型:bar_1min等
this.code; // 证券代码 例如600000.SH
this.instrument_id; // 证券编号
this.exchange_id; // 市场 SZE: 深圳、SSE: 上海
this.trading_day; // 交易日
this.source_id; // 柜台ID 固定值xtp
this.start_time; // 开始时间
this.end_time; // 结束时间
this.time_interval; // 时间间隔 1、5、15等
this.period; // 周期 例如1m、5m、1d、1w等
this.high; // 最高价
this.low; // 最低价
this.open; // 开盘价
this.close; // 收盘价
this.volume; // bar 内交易量
this.start_volume; // 初始总交易量
this.turnover; // 截至目前总交易金额(来源XTP)
this.start_turnover; // 初始总成交金额
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 分页信息-DataPageInfo
分页信息
function DataPageInfo() {
this.currentPage; // 当前页码数
this.data ; // 查询结果集
this.pageSize ; // 每页记录数
this.totalCount ; // 总记录数
this.totalPage; // 总页数
}
2
3
4
5
6
7
# 集合工具-utils
utils集合工具对象
# 是否科创板股票-isSTIStock
是否科创板股票
instrument_idString(必填) - 证券代码
科创板股票返回true,否则返回false
smart.utils.isSTIStock("600000"); // return false
smart.utils.isSTIStock("688001"); // return true
2
# 是否ETF基金-isETF
是否ETF基金
instrument_idString(必填) - 证券代码
ETF基金返回true,否则返回false
smart.utils.isETF("600000"); // return false
smart.utils.isETF("510050"); // return true
2
# 是否配股代码-isSPO
是否配股代码
instrument_idString(必填) - 证券代码
配股返回true,否则返回false
smart.utils.isSPO("600036"); // return false
smart.utils.isSPO("700036"); // return true
2
# 是否是国债逆回购-isReverseRepo
判断一个证券是否是国债逆回购
instrument_idString(必填) - 证券代码exchange_idString(必填) - 交易所id。 "SSE" | "SZE"
smart.utils.isReverseRepo("204001", "SSE"); // return true
smart.utils.isReverseRepo("600000", "SSE"); // return false
2
# 全角转半角-toCDB
将全角字符转换为半角字符
textString(必填) - 要转换的文字
smart.utils.toCDB("万 科A"); // retrun "万 科A"
# 客户端当前日期-getNowFormatDate
得到当前日期的格式化形式。"yyyy-MM-dd"
smart.utils.getNowFormatDate() // retrun "2021-03-01"
# 盘口最优价格-getBestPrice
获取买盘或者卖盘的盘口最优价格,往最新价格靠近,取有效价格
marketDataString(必填) - 行情对象flagString(必填) - 盘口。涨停:H;跌停:L;现价:P;买一到买五分别为:B1、B2、B3、B4、B5;卖一到卖五分别为:S1、S2、S3、S4、S5。
smart.utils.getBestPrice(marketData, flag);
# 获取有效申报价格范围-get_limit_price
获取买盘的最高有效申报价或者卖盘的最低有效申报价
sideNumber(必填) - 买卖方向,参考Side枚举值quoteObject(必填) - 行情对象,参考Quote对象rateNumber(选填) - 有效申报价格范围,默认值为2(即为2%),可选填不大于2的值如1.8(即为1.8%),若所填超过默认值则按默认值计算unitsNumber(选填) - 最小价格变动单位的个数,默认值为10,可选填不大于10的值如8,若所填超过默认值则按默认值计算
smart.utils.get_limit_price(side, quote, rate, units);
# 缓存-cache
数据存储工具对象 前台本地存储 无容量限制 可用于记录在客户端的配置信息、程序运行状态的实时记录等
# 赋值-set
赋值,如果之前没有存储过对应的key,则缓存对应的值;如果有相同key,则更新对应的值
keyString(必填) - 变量唯一标识符valueany(必填) - 变量值,可以是数字,字符串,对象和数组
smart.cache.set(key, value);
# 删除-del
删除数据存储
keyString(必填) - 变量唯一标识符
smart.cache.del(key);
# 数组添加-push
数组添加
keyString(必填) - 变量唯一标识符valueString(必填) - 变量值
smart.cache.push(key, value);
# 日志工具对象-logger
日志工具对象 可输出log文件 通过console.log等方法的输出也会被自动输出到log文件中
smart.logger.debug输出debug信息smart.logger.info输出info信息smart.logger.warn输出warn信息smart.logger.error输出error信息