# DEBUGFILE 调试输出到文件
在最后一个周期输出指定的调试字符串到一个指定的文件中.
- 用于跟踪后台程序化交易执行过程中各项条件、参数的执行结果。借此达到调试的目的。
- 用于固定时间间隔模式下,实时跟踪策略当时执行的结果。
DEBUGFILE(PATH,STR,NUM)
- 在大于1000根数据的情况下使用本函数可能造成长时间停止响应等问题,请务必注意限制数据量使用
参数 | 说明 |
---|---|
PATH | 必需,用户的本地计算机路径 |
STR | 必需,用户指定输出的一个行文字 |
NUM | 必需,用户指定的一个监控数字 |
//将在程式化交易的监控部分输出到D:\TEST.TXT文件, "当前资产为1234.00";
//"%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数.
IF ISLASTBAR THEN
BEGIN
DEBUGFILE('D:\TEST.TXT','当前资产为%.2f',1234);
END;
2
3
4
5
6
完整调试示例:
DEBUGFILE调试策略 (opens new window)
# DEBUGFILE2 调试输出到文件
输出指定的调试字符串到一个指定的文件中。
- 该函数用法与DEBUGFILE基本相同,唯一区别是该函数将会在所有Bar内有效(DEBUGFILE只在最后BAR有效),
- 该函数属于逐K线执行函数,只能在逐K线计算模式下运行。
DEBUGFILE(PATH,STR,NUM)
警告:在大于1000根数据的情况下使用本函数可能造成长时间停止响应等问题,请务必注意限制数据量使用
参数 | 说明 |
---|---|
PATH | 必需,用户的本地计算机路径 |
STR | 必需,用户指定输出的一个行文字 |
NUM | 必需,用户指定的一个监控数字 |
N | 必需,为1时,表示自动输出当前时间,为0时,表示不自动输出时间. |
//将在公式的监控部分输出到D:\TEST.TXT文件, "当前资产为1234.00"
//"%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数.
DEBUGFILE2('D:\TEST.TXT','当前资产为%.2f',1234,1);
2
3
# STRINGTOFILE 输出文本内容到文件
输出指定的字符串到一个指定的文件中
用户可以在公式中通过输出指定的字符串到文件来实现调试或者其他的目的.借此可以借助这个功能来完成监控公式运行的各种细节参数.该函数用法与DEBUGFILE2基本相同, 唯一区别是该函数在写文件时会自动清空之前文件中写入的数据。
STRINGTOFILE(PATH,STR)
参数 | 说明 |
---|---|
PATH | 必需,用户的本地计算机路径 |
STR | 必需,用户指定输出的一个行文字 |
//如果字符串输出中涉及到数字变量,可以使用NUMTOSTR函数转化成字符串后,然后再进行相加。
//将在公式的监控部分输出到D:\TEST.TXT文件.
STRINGTOFILE('D:\TEST.TXT','当前资产为1000');
2
3
# DEBUGOUT 调试输出
在最后一个周期输出指定的调试字符串到后台自动交易监控界面
用户可以在程式化交易中通过输出指定的字符串来实现调试的目的.借此可以借助这个功能来完成监控程式化交易的各种细节参数.因为在后台执行程式化交易时,用户在前台的图表上是看不到内部数据的
DEBUGOUT(STR,NUM)
- 该函数仅在做后台程式化交易时有效
参数 | 说明 |
---|---|
STR | 必需,指定输出的一个行文字 |
NUM | 必需,用户指定的一个监控数字 |
//将在公式的监控部分输出到D:\TEST.TXT文件, "当前资产为1234.00"
//"%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数.
DEBUGOUT('当前资产为%.2f',1234);
2
3
# MSGOUT 输出消息
在消息栏输出消息,可以使用该函数进行公式调试
MSGOUT(COND,S)
- 逐K线计算模式,只要符合阳线的周期都将会得到输出。
- 序列计算模式,最后一个周期COND成立时才进行输出,此时参数S必须是常数。
参数 | 说明 |
---|---|
COND | 必需,条件表达式 |
S | 必需,在消息栏输出字符串 |
MSGOUT(OPEN<CLOSE,'大阳线');
2
# EXPLAIN 显示解盘文字
在解盘窗口中输出解盘文字,一般用于显示品种代码名称等。
EXPLAIN(COND,TEXT,[COLOR])
参数 | 说明 |
---|---|
COND | 必需,条件表达式 |
TEXT | 必需,字符串内容 |
COLOR | 可选,指定颜色 |
//表示在创20天新高时在解盘窗口中输出解说并空1行显示下条解盘文字。
EXPLAIN(HIGH>=HHV(HIGH,20), '创20天新高\n')
2
# SENDPHONEMSG 发送微信消息
发送用户自定义微信消息。
SENDPHONEMSG(MSG,N)
- 使用该函数时,应该启动手机监控功能,步骤: 【工具】-【远程监控】.
- 该函数20秒内重复触发消息只提示一次。
参数 | 说明 |
---|---|
MSG | 必需,自定义消息。 |
N | 必需,触发后消息提示模式。 0表示普通消息 1表示异常消息。 |
//表示普通消息“出现大阳线”.
SENDPHONEMSG('出现大阳线',0);
//表示使用异常模板发送“出现大阳线”,
SENDPHONEMSG('出现大阳线',1);
2
3
4
5
# SPEAK 播报语音
播放指定任意的字符串实现语音合成和语音识别。
SPEAK(COND,STR)
- 不要使用该函数播报过长的文字,会造成系统资源占用.
参数 | 说明 |
---|---|
COND | 必需,条件表达式。 |
STR | 必需,语音文本字符串, |
//当最后一个周期为阳线时语音播放'出现阳线'.
SPEAK(CLOSE>OPEN,'出现阳线');
//该函数在相同周期只会播放一次,如果需要在相同周期重复播放,请使用ALLOWREPEAT控制符
SPEAK(CLOSE>OPEN,'出现阳线'),ALLOWREPEAT;
2
3
4
5
# PLAYSOUND 播放声音
播放一首指定位置的一个声音文件,可以是MP3或者WAV等格式.
PLAYSOUND(COND,PATH)
- 该函数在相同周期只会播放一次,如果需要在相同周期重复播放,请使用ALLOWREPEAT控制符。
- 仅最后一个周期条件成立有效。
参数 | 说明 |
---|---|
COND | 必需,条件表达式。 |
PATH | 必需, 声音文件的路径,只使用一个文件名时,必须将声音文件放在DOCUMENT目录中 |
//当最后一个周期为阳线时播放D:\ONTIFY.MP3位置的声音文件.
PLAYSOUND(CLOSE>OPEN,'D:\ONTIFY.MP3');
//重复播放
PLAYSOUND(CLOSE>OPEN,'D:\ONTIFY.MP3'),ALLOWREPEAT;
2
3
4
5
# SENDMAIL 发送邮件
发送一封邮件到指定的邮箱.
SENDMAIL(COND,MAILTO,SUB,CON)
- 用户使用该功能之前,需要预先设置邮件发送的SMTP信息,具体操作位置在 工具->网络->邮件发送设置里,并需要构选'允许程式化交易'选项.
- 该函数在相同周期只会播放一次,如果需要在相同周期重复播放,请使用ALLOWREPEAT控制符
参数 | 说明 |
---|---|
COND | 必需,条件表达式。 |
MAILTO | 必需,接收邮件的账号。 |
SUB | 必需,邮件标题。 |
CON | 必需,邮件内容。 |
//表示当最后一个周期为阳线时,往ABC@SINA.COM和XYZ@WEISTOCK.COM这两个邮箱发送邮件,标题是'警报',内容是'大阳线'.
SENDMAIL(CLOSE>OPEN,'ABC@SINA.COM;XYZ@WEISTOCK.COM','警报','大阳线'),
//重复播放
SENDMAIL(CLOSE>OPEN,'ABC@SINA.COM;XYZ@WEISTOCK.COM','警报','大阳线'),ALLOWREPEAT;
2
3
4
5
6
# SENDMSG 发送消息
发送指定消息到指定或者全部连接用户(服务器远程预警功能)
SENDMSG(COND,MSG,USER)
- 该函数在相同周期只会执一次
参数 | 说明 |
---|---|
COND | 必需,条件表达式。 |
MSG | 必需,消息内容。 |
USER | 必需,用户名。多个用户可用逗号分割,为空串表示全部用户. 支持*号通配符,例如TEMP* 表示前4个字符为TEMP的所有用户 |
//当最后一个周期得COND条件成立时,发送消息MSG到用户USER中,多个用户可用逗号分割,为空串表示全部用户
SENDMSG(COND,MSG,USER);
//重复播放
SENDMSG(CLOSE>OPEN,'出现大阳线',''),ALLOWREPEAT;
2
3
4
5
# SENDUSERSIGNAL 策略共享自定义发送信号
策略共享功能的服务端向客户端发送自定义信号
SENDUSERSIGNAL(KEY,STOCK,N)
- 此函数必须基于策略共享功能使用,
- 此函数与GETUSERSIGNAL接收信号函数配合使用
- 成功返回1,失败返回0
参数 | 说明 |
---|---|
KEY | 必需,信号标记,服务器端和客户端必须一致,否者无法完成信号传递。 |
STOCK | 必需,指定的品种,若空表示当前品种。 |
N | 必需,信号值 |
//当前品种发送信号10至客户端
SENDUSERSIGNAL('JZT001','',10);
2
# GETUSERSIGNAL 策略共享自定义接受信号
策略共享功能的客户端接收服务端的自定义信号
GETUSERSIGNAL(KEY,STOCK)
参数 | 说明 |
---|---|
KEY | 必需,信号标记,服务器端和客户端必须一致,否者无法完成信号传递。 |
STOCK | 必需,指定的品种,若空表示当前品种。 |
//接收来自JZT001标识的当前品种的信号值。
GETUSERSIGNAL('JZT001','');
2
# SENDCLIENTMSG 发送监控端自定义消息
将指定的消息发送到指定的远程监控服务端
SENDUSERSIGNAL(MESSAGE,TYPE)
- 默认单根K线只处理一次,要重复触发需要增加 ALLOWREPETA控制符
- 成功返回1,失败返回0
参数 | 说明 |
---|---|
MESSAGE | 必需,MESSAGE为消息内容,消息长度不能超过100个字符 |
TYPE | 必需,通知类型 【TYPE=0】时,普通通知消息; 【TYPE=1】时,错误警报消息; |
MailID | 必需,邮件的组ID 【MailID=0】时,不发送邮件; 【TYPE≠0】时,表示发送的邮件组ID; |
//当前金字塔程序向监控端程序发送消极
SENDCLIENTMSG('我的第一条消息',0,0);
2
# SENDCLIENTMARK 发送监控用户自定义心跳数据
通过当前金字塔向远程监控服务端发送心跳数据
SENDUSERSIGNAL(MESSAGE,TYPE)
- 一般用于判断当前金字塔于监控端的通讯状态。
- 成功返回1,失败返回0
参数 | 说明 |
---|---|
TYPE | 必需,心跳ID,ID设置范围【0-32767】 |
Second | 必需,心跳间隔的秒数,second有效值范围大于等于5秒, 用户必须按照不低于这个时间间隔定期调用此函数发送心跳数据,否则监控端将视为异常出现警报。 |
//指定心跳id为888,心跳间隔为60秒进行金字塔监控,若修改心跳id时,请在修改后,点击监控终端设置中的重置心跳监测。
SENDCLIENTMARK(888,60);
2