rhq_plugin
TSL语言的实时行情插件,用于和事件服务器接收、回播实时行情。
安装
(已集成到mytsl
发行版中)
Level1行情的动态库文件:rhq_plugin.dll或者rhq_plugin.so。
Level2行情的动态库文件:rhq_plugin_level2.dll或者rhq_plugin_level2.so。
把相关的动态库文件拷贝到执行服务器或者TSL目录的plugin目录。
配置
Level1行情:在plugin目录创建rhq_plugin.ini。
Level2行情:在plugin目录创建rhq_plugin_level2.ini。
文件内容:
;;; 设置 0 将不启用实时行情连接
enable = 1
;;; 如果在执行服务器加载,请设置 1 执行服务器模式,缺省是0
exec_server_mode = 0
[hq]
;;; 事件服务器的IP和对应的端口
server = 127.0.0.1
port = 8888
port2 = 8899
;;; 是否自动连接实时行情服务,缺省是0,设置1将在插件加载时自动连接事件服务器获取实时行情
autostart = 0
[market]
;;; 市场配置文件(market.ini等)所在目录
dir = d:\tinysoft\bin
;;; 允许生成分钟线数据,缺省是0,不生成
minutedata = 1
;;; 允许记录行情,缺省是0,不记录
toverdata = 1
;;; 保留最近多少笔行情记录, 缺省是100
toverdata_max_n = 100
[log]
;;; 配置log目录
path = d:\tinysoft\bin\log
;;; 可以配置成 trace, debug, info, warning, error, critical, off,缺省是 info
level = info
;;; Level2行情专有配置
[L2]
;;; 保留最近多少笔逐笔成交
max_n = 1000
执行服务器和TSL.exe的配置差别
- 在执行服务器加载是多用户模式,所以需要配置执行服务器模式 exec_server_mode = 1。
- 执行服务器需要配置成自动连接实时行情服务 autostart = 1。
使用指南
提供的TSL函数:
rhq_get(stock) 获取对应股票的实时行情数据,返回的数据是array,格式是:
[
代码,
名称,
时间,
昨收,
开盘,
最高,
最低,
收盘,
成交量,
成交金额,
成交笔数,
涨停价,
跌停价,
收益率1,
收益率2,
买卖盘中买的价格数组,
买卖盘中买的量数组,
买卖盘中卖的价格数组,
买卖盘中卖的量数组,
交易状态
]
其中涨停价、跌停价、交易状态要支持的事件服务器才有值,否则是0或空值。
rhq_get_custom(stock, custom) 获取对应股票的自定义数据。
参数custom支持的自定义数据有:
"@1m.volume" 最近一分钟的成交量
"@1m.amount" 最近一分钟的成交金额
Level2行情专有:
"@high" 利用逐笔成交计算的最高价
"@low" 利用逐笔成交计算的最低价
"@volume" 利用逐笔成交计算的总成交量
"@amount" 利用逐笔成交计算的总成交金额
"@trade.1m.volume" 利用逐笔成交计算的最近一分钟的成交量
"@trade.1m.amount" 利用逐笔成交计算的最近一分钟的成交金额
rhq_minutedata(stock, n) 提取对应股票的分钟线数据, n是可选参数,缺省是-1,也就是提取所有数据。数据格式:
[
[
时间,
最新价格,
开盘价,
最高价,
最低价,
成交量,
成交金额,
成交笔数,
收益率(或基金时点净值)
]
]
注意:数据是倒序的,最近的数据排在前面。
rhq_toverdata(stock, n) 提取对应股票最近的n条行情记录。
n是可选参数,缺省是100,最大值是配置中的允许保留的最大值。
数据格式是array of rhq_get返回的数据格式。
可以用这个方法来检查是否错过了某些行情记录。
注意:数据是倒序的,最近的数据排在前面。
rhq_wait(stock, timeout) 等待相关股票数据更新。
stock参数可以是单个股票,也可以是股票的数组。如果是股票数组,只要其中一只股票数据有更新就会返回该只股票的数据。可以用"*"来表示任意股票代码。
timeout是可选参数,以毫秒为单位,缺省是10分钟。
返回的结果:
[
状态,
数据
]
状态值含义:
1 数据有更新
2 超时
数据和rhq_get返回的数据相同格式。
Level2行情专用
rhq_get_trade(stock, n) 获取最近的n条逐笔成交,n是可选参数,缺省是100。返回的数据是array,格式是:
[
[
交易时间,
交易价格,
成交量,
成交金额,
成交编号,
买卖方向,
交易类型,
叫卖方委托序号,
叫买方委托序
],
...
]
注意:数据是倒序的,最近的数据排在前面。
应用范例
- 对实时行情数据进行监控。
while 1 do
begin
r := rhq_wait(array("SH000001","SZ399001","SZ000001","SH600000"), 3000);
if r[0] = 2 then echo "数据有3秒未更新";
end;
-
用实时行情计算相关指数或因子。
-
用回播来回溯相关的计算。
rhq_replay();
while rhq_replay_status() <> 2 do
begin
r := rhq_wait("SZ000001", 3000);
// ...
end;
rhq_stop();
- 交易、回测。