简介

通过本功能,可以将量化交易系统上(用户)日志内记录的特殊信号数据展示在客户端的技术分析图表上。其实质是在客户端的指标模块上增加一个插件,提供解析特定格式的日志文件并得到序列数据的函数。用户可以在此函数的基础上编写自己的各种指标,来定制想要看到的信号的外观。

此功能适用于博易5.3+/6及汇点客户端。


安装功能插件

在博易5.3+/6/汇点客户端的 cfg 目录下,创建名为 Dll 的目录(如果该目录还不存在的情况下)。

将 PQSignalShow.dll 文件复制到刚才创建的 Dll 目录下。

该DLL文件可在这里下载

图片

启动客户端(以下用博易5.3+为例,其它客户端操作可能略有不同),选择主菜单中“特色功能”下的“指标管理”:

mark

进入“函数管理”:

mark

点击右下角的“函数管理”,选择“注册Dll函数“页签:

mark

红框中按照图示填写,最后两个文本字段可以自己随意,其余内容必须如下图:

mark

至此,相关功能插件已经安装完毕。


使用插件

导出信号数据

输出信号的代码可以参考文章附带的策略(如需要策略密码,策略密码为123)。

在真格量化量化交易系统中欲导出信号,需要通过log对象输出特定格式的日志。遵循下列规则:

1,每一行日志只能输出一个信号。

2,信号内容是一个json字符串,包含一个字典,具备下列字段:

a.HappenTime:信号发生时间,非常关键,建议用datetime对象的字符串格式。

b.Type:信号类型,整数,相当于指标中的线条名称。

c.Value:取值,可为布尔、整数或浮点数。若省略则等于布尔值的true或整数1。

d.KeepMode:可选,布尔型取值。若为true表示后续K线上延续当前的Value。

3,信号内容的json字符串必须用“PQSignalBegin<”和“>PQSignalEnd”括起来。前后其它内容会被忽略。

因为要通过json格式导出,我们需要在代码头部先导入json模块

import json

mark

以量化交易系统中默认提供的“期货”类策略模板为例,增加下列代码:

#ma1上穿ma2时买入螺纹主力1手

elif MA1[-1] >= MA2[-1] and MA1[-2]<MA2[-2]:

​ QuickInsertOrder(context.myacc,g.code,'buy','open',dyndata.now,10)

​ signal = {}

​ signal["HappenTime"] = str(GetCurrentTime())

​ signal["Type"] = 1

​ log.info("PQSignalBegin<" + json.dumps(signal, ensure_ascii=False, default=str) + ">PQSignalEnd")

#ma1下穿ma2时卖出平仓

elif MA1[-1] <= MA2[-1] and MA1[-2]>MA2[-2]:

​ QuickInsertOrder(context.myacc,g.code,'sell','close',dyndata.now,10)

​ signal = {}

​ signal["HappenTime"] = str(GetCurrentTime())

​ signal["Type"] = 2

​ log.info("PQSignalBegin<" + json.dumps(signal, ensure_ascii=False, default=str) + ">PQSignalEnd")

参考下图中红线框出部分:

mark

运行回测(每天),得到的日志如下图所示:

mark

把该日志下载下来,保存到本机硬盘:

mark

在主图上叠加信号

在公式管理器点击“新增公式”:

mark

编写公式,例如:

mark

其中的目标文件名为下载好的含有信号的日志文件。

点击“确定”保存该公式。

在K线图加载公式,即可将真格量化的买卖信号显示在客户端的K线图上:

mark

显示效果,用户应注意这些信号只包括我们在真格量化的回测时间段产生的信号:

img


在副图上绘制指标——以账户权益曲线为例

此种方式也可以用来绘制自定义指标,此时会主要用到Value字段。仍按上述例子,在策略末尾增加一部分“信号”的输出:

#输出权益值

mydata = {}

mydata["HappenTime"] = str(GetCurrentTime())

mydata["Type"] = 3

mydata["Value"]= context.myacc.AccountBalance.AssetsBalance

log.info("PQSignalBegin<" + json.dumps(mydata, ensure_ascii=False, default=str) + ">PQSignalEnd")

如以下代码:

mark

运行回测(仍为日线级别)得到的日志如下图所示,保存该日志到硬盘:

mark

在博易5.3+客户端上编写指标,例如:

mark

在副图上可以看到这个指标:

img

在本例子中,用了Type:3的信号作为权益数据输出到副图上作为信号对照。并在副图背景上绘制了红色区域作为回测账户有持仓的部分。用户可以参照这个方法,自己再发挥想象,输出其他自己关注的指标。