# smart 全局API入口对象

sdk中的顶级接口,控制整个组件的交互与运行

全局静态对象,含组件开发所需的API、事件、数据、工具等,smart为可以直接访问对象(挂在window对象上)

事件回调

方法

属性

静态对象


# 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() {});
1
2
3

# on_close

组件页面被关闭时回调,彻底释放掉组件所有资源,如订阅

smart.on_close(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_CLOSE, function() {});
1
2
3

# on_show

组件页面被激活展示时的回调,可以重新申请一些on_hide释放掉的资源

smart.on_show(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_SHOW, function() {});
1
2
3

# on_hide

组件页面被切走时的回调,可以释放一些不必要的资源

smart.on_hide(function() {});
// 或者 emitter 写法
smart.on(smart.Event.ON_HIDE, function() {});
1
2
3

# on_alphax_md_status_change

功夫的md进程状态变化推送

  • callback Function
smart.on_alphax_md_status_change(status => {});
// 或者 emitter 写法
smart.on(smart.Event.ON_ALPHAX_MD_STATUS_CHANGE, status => {});
1
2
3

# on_alphax_td_status_change

功夫的td进程状态变化推送

  • callback Function
smart.on_alphax_td_status_change(status => {});
// 或者 emitter 写法
smart.on(smart.Event.ON_ALPHAX_TD_STATUS_CHANGE, status => {});
1
2
3

# smart对象下的全局方法

# 下单-insert_order 标准版不支持两融

普通下单示例
国债逆回购下单示例
两融下单示例

通过SDK接口向柜台委托订单。 注意:通过该接口委托的订单,不被归属于任何策略。

  • accountId
    • String(选填) - 交易账号(资金账号),默认为当前账号id
    • 或 Object(必填) - 作为下单参数对象{...}包含insert_order的所有参数,仅需一个Object即可实现指定参数下单
  • strategyPlatformType String(选填) - 策略平台类型,参考StrategyPlatformType枚举值,默认为null
  • strategyId String(选填) - 策略id,默认为null
  • instrumentId String(必填) - 合约ID,证券代码 如"600000"(该参数与code参数必填其一)
  • exchangeId String(必填) - 交易所ID 参考Exchange枚举值 如: Exchange.SSE(该参数与code参数必填其一)
  • limitPrice Number(必填) - 价格 如: 10.32(市价下单时:深市选填,默认为0;沪市必填,为保护限价)
  • volume Number(必填) - 数量 如: 100
  • priceType Number(选填) - 报单类型 参考PriceType枚举值,默认为Limit
  • side Number(选填) - 买卖方向,参考Side枚举值,默认为Buy
  • offset Number(选填) - 开平方向,参考 Offset枚举值,默认为Init
  • order_client_id Number(选填) - 客户自定义id,默认为0,请使用uint数字
  • parent_order_id String(选填) - 母单编号,默认为"" startStrategy会得到一个母单编号,不传默认使用这个母单编号,如果客户需要自定义的母单编号可以传入,请使用数字形式
  • businessType Number (选填) - 业务类型,参考BusinessType枚举值,默认为CASH
  • autoSplit Boolean(选填) - 自动拆单,默认为false
  • code String(必填) - 证券代码.交易所标识 选填 如'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,
    );
1
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,
    });
1
2
3
4
5
6
7

# 撤单-cancel_order

委托撤单示例

通过SDK接口向柜台撤销已委托的订单。

  • account_id String(必填) - 交易账号(资金账号)
  • order_id String(必填) - 订单ID
smart.cancel_order(account_id, order_id);
1

# 订阅行情-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 目前暂不支持level2
  • emitter 选填 注册行情派发事件对象,默认为全局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));
})
1
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));
})
1
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 目前暂不支持level2
  • emitter 选填 注册行情派发事件对象,默认为全局smart对象
  • codes 必填 取消订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'] (若该参数与instruments、exchange_id同时存在,以该参数为准)
// 方式一:
smart.unsubscribe({codes:['600000.SH','300001.SZ']});
1
2
// 方式二(不推荐):
smart.unsubscribe(smart.current_account.account_id, ['600000','600918'], smart.Type.Exchange.SSE);
1
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 目前暂不支持level2
  • emitter 选填 注册行情派发事件对象,默认为全局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));
    }
})
1
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 目前暂不支持level2
  • emitter 选填 注册行情派发事件对象,默认为全局smart对象
smart.unsubscribe_index({instruments:["000001", "CESCPD", "931646"]});
1

# 下算法单-insertAlgoOrder 标准版不支持

快速启动算法策略示例

下算法单

  • account_id String(必填) - 账号id
  • strategy_id String(必填) - 母单客户唯一id
  • config String(必填) - 母单下单参数
smart.insertAlgoOrder(account_id, strategy_id, config);
1

# 订阅ETF折溢价预期利润-subscribeETFProfit

订阅etf折溢价预期利润示例

订阅ETF折溢价预期利润,等待返回预期利润列表信息。此后ETF预期利润变动后,会通过事件 ON_ETF_PROFIT 派发订阅预期利润信息 ETFProfit

let profitList = await smart.subscribeETFProfit();//订阅并返回ETF预期利润等信息
1

# 取消订阅ETF折溢价预期利润-unsubscribeETFProfit

取消订阅etf折溢价预期利润示例

取消订阅ETF折溢价预期利润

smart.unsubscribeETFProfit();
1

# 创建策略实例-createStrategy 标准版不支持

创建及启动算法策略示例

从头创建一个全新的策略 AlphaX

  • account_id String(必填) - 账号id
  • strategy_platform_type String(必填) - 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id String(可选) - 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突
  • config Object - 策略信息对象 记录在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平台创建公共策略时必填

返回一个 策略 对象,不同的策略有不同的行为:

  • 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" });
1
2

创建一个全新的策略或母单实例 标准版不支持

  • account_id String(必填) - 账号id
  • strategy_platform_type String(必填) - 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id String(必填) - 策略id 可以含中文,为了防止冲突,尽量特殊些,不要用"网格交易"这种很通用的命名,很容易冲突
  • config String(必填) - 母单下单参数,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"
smart.createStrategy(account_id, strategy_platform_type, strategy_id, config);
1

# 启动当前策略-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("策略启动失败!");
}
1
2
3
4
5
6

开始运行策略或母单实例 Algo

  • account_id String(必填) - 账号id
  • strategy_platform_type String(必填) - 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id String(必填) - 策略实例的ID或客户下单唯一ID
smart.startStrategy(account_id, strategy_platform_type, strategy_id);
1

# 创建策略实例-newStrategyInstance 标准版不支持

创建策略实例

  • account_id 必填 账号id
  • strategy_platform_type 策略平台类型 StrategyPlatformType的枚举值
  • strategy_id 可选String 策略id
smart.newStrategyInstance(account_id, strategy_platform_type, strategy_id);
1

# 登记一个策略-addStrategy 标准版不支持

登记一个策略

  • account_id String必填 账号id
  • strategy_platform_type String必填 策略平台类型 StrategyPlatformType的枚举值 不同的策略有不同的行为:
    • AlphaX类型的登记后smart server形成一条记录 客户端策略列表中会出现,需要进一步调用newStrategyInstance拿到实例后进行uploadFile后再startStrategy
    • Algo类型的不允许客户主动登记策略
    • ProgramTrade类型和Spec类型的可由客户主动登记策略,记录在smartserver 提供的信息比AlphaX的多一些
    • Front类型的实际就是客户向组件库登记一个私有策略,记录在smartserver,如果之后uploadFile则为向组件库上传一个纯前端的私有策略,如果是不调用uploadFile直接
    • startStrategy则直接启动本地组件目录中的该策略(只能是.smart包格式),如果本地不存在该策略则菜单中不显示
  • strategy_id String可选 策略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);
1
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_id String(必填) - 账号id
let assets = await smart.queryCreditAssets(account_id);
1

# 查询自选股列表-querySelfSelectStockList 标准版不支持

查询自选股列表示例

查询自选股列表。添加自选股在客户端【行情】-【自选股】页面

  • groupName String(必填) - 板块名称
  • source String(选填) - 柜台id,默认为"xtp",目前只支持 "xtp"
  • account_id String(选填) - 账号id,默认为当前登录账号id,目前只支持当前登录账号
let stockList = await smart.querySelfSelectStockList(groupName);
1

# 查找一个证券-getInstrument

查询证券信息示例

查找一个证券

  • instrumentId
    • String(必填) - 证券代码如'600000'(该参数与code参数必填其一)
    • 或 Object(必填) - 作为参数对象{...}包含getInstrument的所有参数,仅需一个Object即可实现指定参数获取instrument
  • exchangeId String(必填) - 交易所 如'SSE'(该参数与code参数必填其一)
  • code 必填 证券代码.交易所标识 如'600000.SH','000001.SZ'(若该参数与instrumentId、exchangeId同时存在,以该参数为准)
// 方式一:
let instrument = smart.getInstrument("600000", smart.Type.Exchange.SSE);
1
2
// 方式二:
let instrument = smart.getInstrument({code:"600000.SH"});
1
2

# 获取可交易的ETF列表-getETFList

查询可交易的etf列表示例

获取可交易的ETF列表

let etfList = await smart.getETFList();
1

# 获取ETF成分股列表-getETFBasket

查询etf成分股列表示例

获取ETF成分股列表

  • instrument_id String(必填) - ETF代 如"510500"
let list = await smart.getETFBasket(instrument_id);
1

# 获取IPO列表-getIPOList

查询可交易的ipo列表示例

获取IPO列表

let list = await smart.getIPOList();
1

# 获取国债逆回购列表-getBondReverseRepoList

获取国债逆回购列表示例

获取国债逆回购列表

let list = await smart.getBondReverseRepoList();
1

# 获取可转债信息-getConvertableBond 标准版不支持

查询可转债信息示例

获取可转债信息

  • code String(必填) - 证券代码.交易所标识 如 '113658.SH'
let convertableBond = await smart.getConvertableBond(code);
1

# 获取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();
1
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 });
1

# 打开smart系统【设置】菜单-openSystemSet

打开smart系统【设置】菜单

  • params:打开的设置标题
    • title 【设置】中标题,//标题选项列表( 常用设置,自动导出,CSV报单设置,CSV报单导出设置,AlphaX/Kungfu,ETF套利/交易费用设置,组件库)
let params = { title: "ETF套利/交易费用设置" };
smart.openSystemSet(params);
1
2

# 注册给python调用的函数-registCallableFunction

js和python双向通信示例

注册给python调用的函数

  • functionName String(必填) - 函数的名称
  • function(data) String(必填) - 参数
smart.registCallableFunction(functionName,function(data));
1

# 调用python的函数接口-callPythonFunction

js和python双向通信示例

调用python的函数接口

  • functionName String(必填) - js函数的名称
  • params String(必填) - 参数
  • function(data) Function(选填) - 连接python函数,返回信息
smart.callPythonFunction(functionName,params,function(data));
1

# 从服务器下载资源-download AlphaX标准版不支持

从服务器下载资源

  • option Object
    • type String - "sample"代表示例文件
    • strategy_platform_type String(必填) - 策略平台类型 StrategyPlatformType的枚举值
    • saveDialog Object | Boolean - 如果true或非空对象,则会弹出对话框让用户选择要保存的地址
    • raw Boolean(可选) - 是否使用原始编码,默认为false,SDK会尝试文件内容转为字符串。如果希望得到二进制的文件内容,可以设置为true
    • param Object - 下载时的参数,不同类型的下载不同

如果设置了saveDialog,则没有返回值,直接保存文件到指定的文件夹; 如果没有设置saveDialog,返回文件内容

 await smart.download({
    type: "sample",
    strategy_platform_type: smart.Type.StrategyPlatformType.AlphaX,
    saveDialog: true,
    param: {
        templateCode: "A01"
    }
})
1
2
3
4
5
6
7
8

# 消息提醒-notice

消息通知弹窗示例

组件消息推送到全局

  • level 消息状态:open、info、success、warning、error
  • title 头部标题
  • msg 需要推送的消息内容
  • duration 消息显示时间
  • timestamp 时间戳,如当前毫秒数
let params = {
    level: 'success',
    title: '标题',
    msg: '具体内容',
    duration: 4.5,
    timestamp: Date.now()
}
smart.notice(params);
1
2
3
4
5
6
7
8

# 订阅bar行情-subscribe_bar

订阅bar行情及接收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);
1

# 取消订阅bar行情-unsubscribe_bar

取消订阅bar行情示例

取消订阅bar行情

  • codes 必填 订阅的股票列表 数组 如['600000.SH', '000001.SZ']
  • period 选填 周期 默认1m,最大60m(m代表分钟)
  • emitter 选填 注册行情派发事件对象, 默认为全局smart对象
  • 返回值(await) string类型的数组,表示取消订阅失败的股票列表,例如['600000.SH']
smart.unsubscribe_bar(codes, period, emitter);
1

# 获取当天任意分钟的bar行情-query_bar_today_async

获取当天任意分钟的bar行情示例

获取当天任意分钟的bar行情。

  • codes 必填 订阅的股票列表 数组 如['600000.SH', '000001.SZ']
  • period 选填 周期 默认1m,最大60m(m代表分钟)
  • 返回值(await) 类型为Object, key 为股票代码,并且与参数 codes 中的 股票代码格式一致, value 为对应的 Bar 结构体数组
smart.query_bar_today_async(codes, period);
1

# 获取历史bar数据-query_bar_async

获取历史bar数据示例

  • 获取一个时间范围内的 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实体的数组
1
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);
1

# 取消通用指标订阅-unsubscribe_indicator

取消通用指标订阅示例

取消通用指标订阅

  • type 必填 指标类型参数,例如'etf'等字符串,该参数识别大小写
  • codes 选填 订阅的指标代码列表 数组 如['600000.SH','000001.SZ']
  • emitter 选填 注册数据派发事件对象, 默认为全局smart对象
  • 返回值(await) string类型的数组,表示取消订阅失败的指标代码列表,例如['561800.SH']
smart.unsubscribe_indicator(type, codes, emitter);
1

# 获取市场数据-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实体的数组
1
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"  // 下一交易日}
1
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类型的数组
1
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类型的数组
1
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" // 下一交易日}]
1
2
3
4

# 分页查询数据接口-query_data_page_async

  • method String(必填) 该值为"bar"、"market_data"
  • inParams Object(必填) 查询参数(该参数因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的对象
1
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的对象
1
2
3
4
5
6
7
8
9
10
11

# 添加自选股-add_self_select_stock 标准版不支持

  • group_name String(必填) 板块名称
  • stock String(必填) 股票代码,格式如 "000001.SZ"
  • source String(选填) smart.Type.Source枚举, 默认为 "xtp", 目前只支持 "xtp"
  • account_id String(选填) 账号,默认为当前登录账号,目前只支持当前登录账号
  • 返回值为 json,表示添加结果, 失败时可能会抛出异常
try {
    const result = await smart.add_self_select_stock("我的银行", "000001.SZ");
    /*
    result 如下代表添加成功
    {
        "code":"0000",
        "message":"成功"
    }
    */
} catch (err) {
    console.error("catch exception ", err.message);
}
1
2
3
4
5
6
7
8
9
10
11
12

# 删除自选股-del_self_select_stock 标准版不支持

  • group_name String(必填) 板块名称
  • stock String(必填) 股票代码,格式如 "000001.SZ"
  • source String(选填) smart.Type.Source枚举, 默认为"xtp",目前只支持 "xtp"
  • account_id String(选填) 账号,默认为当前登录账号,目前只支持当前登录账号
  • 返回值为 json,表示删除结果, 失败时可能会抛出异常
try {
    const result = await smart.del_self_select_stock("我的银行", "000001.SZ");
    /*
    result 如下代表删除成功
    {
        "code":"0000",
        "message":"成功"
    }
    */
} catch (err) {
    console.error("catch exception ", err.message);
}
1
2
3
4
5
6
7
8
9
10
11
12

# 查询 etf 申赎上限-query_etf_purchase_redemption_top_limit 标准版不支持

  • code String(必填) 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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 关闭当前组件-close 标准版不支持

smart.close()
1

# SmartX数据详情

组件SDK提供query_data_async(查询数据)、query_data_page_async(分页查询数据)接口。客户需要仅需要传递method及请求入参inParams,即可获取对应查询数据

  • method String(必填) 查询使用的方法名
  • inParams Object(必填) 查询参数(该参数因method而变)

# 获取历史1分钟Bar行情

  • 返回数据默认为前复权

# 获取历史5分钟Bar行情

  • 返回数据默认为前复权

# 获取历史15分钟Bar行情

  • 返回数据默认为前复权

# 获取历史30分钟Bar行情

  • 返回数据默认为前复权

# 获取历史60分钟Bar行情

  • 返回数据默认为前复权

# 获取历史1天Bar行情

  • 返回数据默认为前复权

# 获取历史1星期Bar行情

  • 返回数据默认为前复权

# 获取市场数据-ticker行情

  • 返回数据默认为前复权

# 通用指标etf行情数据订阅

  • 通过通用指标订阅etf行情数据

# 获取当前交易日及下一交易日

  • 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];
1
2

# 证券列表-instrument_list

所有证券列表 Array 元素为Instrument对象

    smart.instrument_list;
1

# 证券索引集合-instrument_map

获取证券列表按照证券代码_市场

smart.instrument_map;
1

# 证券类型集合-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: "", ...}
1
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;
1

# 功夫的实时td列表-alphax_td_list

alphax的td列表 Array的一个元素为:

  • account_id 资金账号 String
  • config ???
  • process_name 进程名,如"td_xtp_15003941" String
  • process_type 进程类型 String
  • receive_md td都是false Boolean
  • source 柜台源 Source枚举
  • source_name 柜台源中文名 String
  • status 进程状态 StrategyStatus枚举
  • status_name 进程状态中文名 String
  • strategy_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"
}
1
2
3
4
5
6
7
8
9
10
11
12

# 功夫的实时md列表-alphax_md_list

kungfu的md列表 Array Array的一个元素为:

  • account_id 资金账号 String
  • config ???
  • process_name 进程名,如"md_xtp_15003941" String
  • process_type 进程类型 String
  • receive_md md都是true Boolean
  • source 柜台源 Source枚举
  • source_name 柜台源中文名 String
  • status 进程状态 StrategyStatus枚举
  • status_name 进程状态中文名 String
  • strategy_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"
}
1
2
3
4
5
6
7
8
9
10
11
12

# 资金账户-Account

提供资金账户基本数据和方法

# 实例事件

Account 是一个EventEmitter。可以监听的事件详见Event

# account.on_order

账户委托推送 不保序

  • order 处理函数的参数为Order对象
account.on_order(order=>{});
1

# account.on_trade

账户成交回报推送 不保序

  • order 处理函数的参数为Trade对象
account.on_trade(trade => {});
1

# account.on_assets

账户资产变动推送

  • assets 处理函数的参数为Assets对象
account.on_assets(assets => {});
1

# account.on_position

账户持仓变动增量推送

  • position 处理函数的参数为Position对象 每次一条Position
account.on_position(position => {});
1

# account.on_quote

账户收到订阅的行情推送

  • quote 处理函数的参数为Quote对象
account.on_quote(quote => {});
1

# account.on_cancel_fail

账户收到撤单失败的推送

account.on_cancel_fail(fail=>{});
1

# account.on_credit_ticker_assign 仅支持两融账户

账户收到信用可融券头寸更新

  • creditTickerAssignInfo 处理函数的参数为CreditTickerAssignInfo对象
account.on_credit_ticker_assign(creditTickerAssignInfo=>{});
1

# account.on_credit_debt_finance 仅支持两融账户

账户收到信用融资负债合约更新

  • creditDebtFinance 处理函数的参数为CreditDebtFinance对象
account.on_credit_debt_finance(creditDebtFinance=>{})  
1

# account.on_credit_debt_security 仅支持两融账户

账户收到信用融券负债合约更新

  • creditDebtSecurity 处理函数的参数为CreditDebtSecurity对象
account.on_credit_debt_security(creditDebtSecurity=>{});
1

# 静态方法

# 实例属性

# 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];
1
2

# assets

账户资产

  • total_asset Number - 总资产(=可用资金 + 证券资产(目前为0)+ 预扣的资金)

  • buying_power Number - 可用资金

  • security_asset Number - 证券资产(保留字段,目前为0)

  • fund_buy_amount Number - 累计买入成交证券占用资金

  • fund_buy_fee Number - 累计买入成交交易费用

  • fund_sell_amount Number - 累计卖出成交证券所得资金

  • fund_sell_fee Number - 累计卖出成交交易费用

  • withholding_amount Number - XTP系统预扣的资金(包括购买卖股票时预扣的交易资金+预扣手续费)

  • frozen_exec_cash Number - 行权冻结资金

  • frozen_exec_fee Number - 行权费用

  • pay_later Number - 垫付资金

  • preadva_pay Number - 预垫付资金

  • orig_banlance Number - 昨日余额

  • banlance Number - 当前余额

  • trade_netting Number - 当日交易资金轧差

  • deposit_withdraw Number - 当天出入金

  • captial_asset Number - 资金资产

  • force_freeze_amount Number - 强锁资金

  • preferred_amount Number - 可取资金

  • market_value Number - 市值

  • update_time String - 最后更新时间 smart内部产生

  • all_asset Number- 总资产(仅限信用业务)

  • all_debt Number - 总负债(仅限信用业务)

  • guaranty Number - 两融保证金可用数(仅限信用业务)

  • line_of_credit Number - 两融授信额度(仅限信用业务)

  • maintenance_ratio Number - 维持担保品比例(仅限信用业务)

  • remain_amount Number - 信用账户待还资金(仅限信用业务)

  • security_interest Number - 融券合约利息(仅限信用业务)

  • cash_remain_amt Number - 融资合约金额(仅限信用业务)

  • cash_interest Number - 融资合约利息(仅限信用业务)

  • extras_money Number - 融券卖出所得购买货币基金占用金额(仅限信用业务)

# 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);
1

# account.get_position

获取指定的证券持仓

  • instrument_id
    • String(必填) - 证券代码如'600000'(该参数与code参数必填其一)
    • 或 Object(必填) - 作为参数对象{...}包含get_position的所有参数,仅需一个Object即可实现指定参数获取position
  • exchange_id 必填 交易所 如'SSE'(该参数与code参数必填其一)
  • direction 选填 持仓方向,默认为Direction.Net
  • code 必填 证券代码.交易所标识 如'600000.SH','000001.SZ'(若该参数与instrument_id、exchange_id同时存在,以该参数为准)
// 方式一:
let position = smart.current_account.get_position("600000", smart.Type.Exchange.SSE);
1
2
// 方式二:
let position = smart.current_account.get_position({code:"600000.SH"});
1
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 目前暂不支持level2
  • codes 必填 订阅股票的证券代码.交易所标识列表 数组 如['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));
})
1
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));
})
1
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 目前暂不支持level2
  • codes 必填 取消订阅股票的证券代码.交易所标识列表 数组 如['600000.SH','300001.SZ'](若该参数与instruments、exchange_id同时存在,以该参数为准)
// 方式一:
smart.current_account.unsubscribe({codes:['600000.SH','300001.SZ']});
1
2
// 方式二(不推荐):
smart.current_account.unsubscribe(['600000','600918'], smart.Type.Exchange.SSE);
1
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));
    }
})
1
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"]);
1

# 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,
    );
1
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,
    });
1
2
3
4
5
6
7

# account.cancel_order

账号级别的撤单

使用方法参见cancel_order,但是不需要传account_id参数

smart.current_account.cancel_order(order_id);
1

# account.modifyStrategy 标准版不支持

修改注册的策略信息

  • account_id 必填 账号id
  • strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id 策略名称
  • config 策略信息
smart.current_account.modifyStrategy(strategy_platform_type, strategy_id, config);
1

# account.newStrategyInstance 标准版不支持

创建策略实例,返回一个Strategy对象

  • strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id 策略名称
smart.current_account.newStrategyInstance(strategy_platform_type, strategy_id);
1

# account.removeStrategy 标准版不支持

删除一个策略

  • strategy_platform_type 策略平台类型 StrategyPlatformType 的枚举值
  • strategy_id 策略名称
smart.current_account.removeStrategy(strategy_platform_type, strategy_id);
1

# account.createStrategy 标准版不支持

创建一个全新的策略实例

使用方法参见createStrategy,但是不需要传account_id参数

smart.current_account.createStrategy(strategy_platform_type, strategy_id, config);
1

# account.startStrategy 标准版不支持

开始运行策略或母单实例

使用方法参见startStrategy,但是不需要传account_id参数

smart.current_account.startStrategy(strategy_platform_type, strategy_id, config);
1

# account.insertAlgoOrder 标准版不支持

创建并开始运行策略或母单实例

使用方法参见insertAlgoOrder,但是不需要传account_id参数

smart.current_account.insertAlgoOrder(strategy_platform_type, strategy_id, config);
1

# account.queryCreditAssets 仅支持两融账户

获取最新的信用资产信息

let assets = await smart.current_account.queryCreditAssets();
1

# 策略-Strategy 标准版不支持

获取策略相关数据、控制策略的行为

# 实例事件

Strategy 是一个EventEmitter。可以监听的事件详见Event

# strategy.on_order

接收策略的委托推送

  • callback Function
    • order Object - 事件发生时返回一个Order对象
strategy.on_order(order => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_ORDER, order => {});
1
2
3

# strategy.on_trade

接收策略的成交回报推送

  • callback Function
    • trade Object - 事件发生时返回一个Trade对象
strategy.on_trade(trade => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_TRADE, trade => {});
1
2
3

# strategy.on_book AlphaX

接收策略账簿的全量推送

strategy.on_book(book);
1

# strategy.on_strategy_status_change

策略进程状态变化推送 AlphaX
算法母单状态变化推送 Algo

  • callback Function
    • status Object - 事件发生时返回一个进程状态对象
strategy.on_strategy_status_change(status => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_STRATEGY_STATUS_CHANGE, status => {});
1
2
3

# 策略状态对象 status AlphaX

一个包含当前策略状态,策略名等信息的js对象

  • process_name String - 进程名
  • strategy_id String - 策略id
  • status String - 进程状态 StrategyStatus枚举
  • status_name String - 进程状态中文名
  • strategy_platform_type String - 策略所属平台类型 StrategyPlatformType枚举

# 母单状态对象 Object Algo

algo 算法母单实时运行状态 Object

  • process_type 状态类型,如"createStrategyRsp" 创建 等 String
  • process_name 母单ID或clent_ID,如"200220015003941" String
  • status 母单状态,如Started:已启动
  • status_name 状态中文名 String
  • strategy_platform_type 策略所属平台类型 StrategyPlatformType枚举
  • data 母单其他具体参数

# strategy.on_strategy_quote AlphaX

某策略订阅的行情推送

  • message String - 某策略订阅的行情推送 策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响
strategy.on_strategy_quote(quote => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_STRATEGY_QUOTE, quote => {});
1
2
3

# strategy.on_alphax_msg AlphaX

接收服务端功夫策略的自定义消息推送

  • message String - 功夫策略推送过来的自定义内容,可以以json字符串形式存放更多复杂信息,前台通过JSON.parseJSON处理
strategy.on_alphax_msg(message => {});
// 或者 emitter 写法
strategy.on(smart.Event.ON_ALPHAX_MSG, message => {});
1
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 可用资金 Number
  • margin 保证金 Number
  • market_value 市值 Number
  • initial_equity 初始权益 Number
  • dynamic_equity 动态权益 Number
  • static_equity 静态权益 Number
  • realized_pnl 已实现盈亏 Number
  • unrealized_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();
1

# strategy.createStrategy Algo

创建一个全新的策略实例或母单

  • account_id String(必填) - 账号id
  • clent_id String(必填) - 策略id
  • config String(必填) - 策略信息对象 记录在smartserver
strategy.createStrategy(account_id, clent_id, config);
1

# strategy.startStrategy

启动当前策略或母单

  • param Object(选填) - 启动参数(v1.1.0新增)
try {
    await strategy.startStrategy();
    await strategy.startStrategy({ target: ["600000.SH", "0000001.SZ"] }); // SDK v1.1.0 后可以传参
} catch (err) {
    console.error("策略启动失败!");
}
1
2
3
4
5
6

从策略中获取启动参数

def pre_start(context):
    param = context.getStrategyConfig()
1
2

# strategy.stopStrategy

停止当前策略或母单

可能的出错原因有
0001 未找到有效的策略信息
0001 策略未就绪,请检查策略是否上传成功
0001 策略进程已被其他操作启动,您的停止操作无效
0001 其他停止失败

try {
    await strategy.stopStrategy();
} catch (err) {
    console.error("策略停止失败!");
}
1
2
3
4
5

# strategy.forceStopStrategy Algo

强制停止当前策略或母单

strategy.forceStopStrategy();
1

# strategy.postStrategyParamsBeforeStart AlphaX

策略启动前传参

  • param String | Object - 参数对象,类型是字符串|JSON对象均可 特别是作为字符串传递时其内容可以是json字符串、csv字符串、xml字符串均可,但要注意里面的'和"进行转义以防止破坏字符串表达
  • filePath String - 策略平台落地的参数文件的相对本策略根目录的相对路径
await strategy.postStrategyParamsBeforeStart({ aaa: "bbb" }, "/lib/config.json");
1

# strategy.postStrategyParams AlphaX

策略启动后(运行期间)向策略发送消息

  • message Object - 消息对象,必须是对象类型
await strategy.postStrategyParams({ aaa: "bbb" });
1

# strategy.startTD AlphaX

启动td

  • account_id String - 资金账号 String
  • source String - smart.Type.Source枚举 默认为xtp
  • pwd String - 资金账号的密码 可选 String 当不传时前台自动弹出对话框让用户输入密码
    strategy.startTD(account_id, source, pwd);
1

# strategy.startMD AlphaX

启动md

  • account_id String - 资金账号 String
  • source String - smart.Type.Source枚举 默认为xtp
  • pwd String - 资金账号的密码 可选 String 当不传时前台自动弹出对话框让用户输入密码
strategy.startMD(account_id, source, pwd);
1

# strategy.download AlphaX

将后台的策略目录下的文件下载到前台,比如策略参数的配置文件,严禁下载大文件

  • filePath String - 策略中,文件相对路径
  • raw Boolean(可选) - 是否使用原始编码,默认为false,SDK会尝试文件内容转为字符串。如果希望得到二进制的文件内容,可以设置为true 返回 String 或者 TypedArray - Promise形式的文件内容 当raw不传或传false时,返回String 或者 当raw传true是返回TypedArray代表文件的二进制 如果获取出错,会抛出异常。
const content = await strategy.download("/lib/config.json");
1

# 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);
1
2
  • ON_INIT 组件初始化 类似domReady事件,组件所有代码都必须在该事件之后
  • ON_CLOSE 组件被关闭
  • ON_SHOW 组件被显示
  • ON_HIDE 组件被隐藏
  • ON_RESET 组件用户数据被清空重置
  • ON_QUOTE 订阅行情后,行情变化推送 策略之间、组件之间、策略和账户直接的订阅和取消订阅不相互影响
  • ON_ETF_PROFIT ETF折溢价利润推送数据
  • ON_ASSETS 账户资金的全量推送
  • ON_BOOK 策略资金的全量推送
  • ON_POSITION 持仓变化的增量推送
  • ON_ORDER 委托变化推送
  • ON_TRADE 成交变化推送
  • ON_CANCEL_FAIL 撤单失败的消息推送
  • ON_ALPHAX_TD_STATUS_CHANGE alphax td状态变化时推送
  • ON_ALPHAX_MD_STATUS_CHANGE alphax md状态变化时推送
  • ON_STRATEGY_STATUS_CHANGE 策略状态变化时推送
  • ON_ALPHAX_MSG alphax 策略往前端推送数据
  • 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
};
1
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", //全球
};
1
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基金
};
1
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本方最优,市价单-深
};
1
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, //担保品转出
};
1
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,
};
1
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
};
1
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
};
1
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部分成交)
};
1
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
};
1
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策略类型
};
1
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',//错误
};
1
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'//有异常
};
1
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
}
1
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
}
1
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溢价预期利润
}
1
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
}
1
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  业务渠道名称                                                "策略"
}
1
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  成交类型名称                                                "现金替代"
}
1
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
}

1
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
}
1
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
    }
}
1
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 // 转换单位
    }
}
1
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 = '';//策略错误提示
}
1
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
}
1
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
}
1
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
}
1
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 = {}; // 策略的详细数据
}
1
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;
    }
}
1
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; // 初始总成交金额
}
1
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; // 总页数
}
1
2
3
4
5
6
7

# 集合工具-utils

utils集合工具对象

# 是否科创板股票-isSTIStock

是否科创板股票

  • instrument_id String(必填) - 证券代码

科创板股票返回true,否则返回false

smart.utils.isSTIStock("600000"); // return false
smart.utils.isSTIStock("688001"); // return true
1
2

# 是否ETF基金-isETF

是否ETF基金

  • instrument_id String(必填) - 证券代码

ETF基金返回true,否则返回false

smart.utils.isETF("600000"); // return false
smart.utils.isETF("510050"); // return true
1
2

# 是否配股代码-isSPO

是否配股代码

  • instrument_id String(必填) - 证券代码

配股返回true,否则返回false

smart.utils.isSPO("600036"); // return false
smart.utils.isSPO("700036"); // return true
1
2

# 是否是国债逆回购-isReverseRepo

判断一个证券是否是国债逆回购

  • instrument_id String(必填) - 证券代码
  • exchange_id String(必填) - 交易所id。 "SSE" | "SZE"
smart.utils.isReverseRepo("204001", "SSE"); // return true
smart.utils.isReverseRepo("600000", "SSE"); // return false
1
2

# 全角转半角-toCDB

将全角字符转换为半角字符

  • text String(必填) - 要转换的文字
smart.utils.toCDB("万 科A"); // retrun "万 科A"
1

# 客户端当前日期-getNowFormatDate

得到当前日期的格式化形式。"yyyy-MM-dd"

smart.utils.getNowFormatDate() // retrun "2021-03-01"
1

# 盘口最优价格-getBestPrice

获取买盘或者卖盘的盘口最优价格,往最新价格靠近,取有效价格

  • marketData String(必填) - 行情对象
  • flag String(必填) - 盘口。涨停:H;跌停:L;现价:P;买一到买五分别为:B1、B2、B3、B4、B5;卖一到卖五分别为:S1、S2、S3、S4、S5。
smart.utils.getBestPrice(marketData, flag);
1

# 获取有效申报价格范围-get_limit_price

获取买盘的最高有效申报价或者卖盘的最低有效申报价

  • side Number(必填) - 买卖方向,参考Side枚举值
  • quote Object(必填) - 行情对象,参考Quote对象
  • rate Number(选填) - 有效申报价格范围,默认值为2(即为2%),可选填不大于2的值如1.8(即为1.8%),若所填超过默认值则按默认值计算
  • units Number(选填) - 最小价格变动单位的个数,默认值为10,可选填不大于10的值如8,若所填超过默认值则按默认值计算
smart.utils.get_limit_price(side, quote, rate, units);
1

# 缓存-cache

数据存储工具对象 前台本地存储 无容量限制 可用于记录在客户端的配置信息、程序运行状态的实时记录等

# 赋值-set

赋值,如果之前没有存储过对应的key,则缓存对应的值;如果有相同key,则更新对应的值

  • key String(必填) - 变量唯一标识符
  • value any(必填) - 变量值,可以是数字,字符串,对象和数组
smart.cache.set(key, value);
1

# 删除-del

删除数据存储

  • key String(必填) - 变量唯一标识符
smart.cache.del(key);
1

# 数组添加-push

数组添加

  • key String(必填) - 变量唯一标识符
  • value String(必填) - 变量值
smart.cache.push(key, value);
1

# 日志工具对象-logger

日志工具对象 可输出log文件 通过console.log等方法的输出也会被自动输出到log文件中

  • smart.logger.debug 输出debug信息
  • smart.logger.info 输出info信息
  • smart.logger.warn 输出warn信息
  • smart.logger.error 输出error信息