欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 一些无法解释的现象,还有什么方法查找问题原因?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4579人关注过本帖树形打印复制链接

主题:一些无法解释的现象,还有什么方法查找问题原因?

帅哥哟,离线,有人找我吗?
a141027
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
一些无法解释的现象,还有什么方法查找问题原因?  发帖心情 Post By:2016/6/14 15:43:13 [显示全部帖子]

实盘交易不时碰到这样那样无法解释的问题,有些很难举证,因为没有规律,不常发生,监控变量值又是对的,你甚至无法查找问题,你总不能把所有变量在所有过程里的值的变化全部都输出到文件里一直监控吧?这里我列举一些这样的问题

1. 公式运行中,看指标当时应该有数个品种触发下单了但是没有任何动作,打开日志,每个周期都运行结束,没有信号发出。中止公式,过几秒再重新开始,公式立即全部触发下单了。把信号各个变量放进监控窗口里观察,又没有发现异常。怎解释?怎举证?怎解决?

2. 公式有时莫名其妙出现一些动作,当然了,不是很经常,偶有发生,不得已我在每个指令后都添加msgout,输出当时的变量值和时间值,发现有些条件判断本应通不过,但当时通过了,我把变量放上图表检查,一直都是0,不知道为什么判断可以通过。比如:

if islastbar then
begin
cond:=todaybar=1 or aa[barpos-1]=1;
if cond then
begin
tbuy...
msgout(1,'todaybar:'&numtostr(todaybar,0)&'aa:'&numtostr(aa[barpos-1],0)&'time:'&numtostr(time,0));
end;

出现问题后按照时间查找变量值,aa是个常用指标,计算简单没有什么复杂的引用,用于图表显示一直都用得很正常,该变量在图表上一直都是0,当时todaybar已经大于300了,但这个条件判断当时就通过了!我还怎么找问题?怎么解决问题?

我不是想要在这里发牢骚发泄,要是可以举证我也把问题的证据现在都列举出来便于解决,但又无法举证,总不能就这么样无视它吧,你们能有什么其他方法查找问题原因?盼指点一二。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/14 16:04:14 [显示全部帖子]

您说这个我知道,它要是重复发生的问题就容易办多了,问题是它不经常发生,公式那么多地方,我总不能全部都用这个方法吧。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/14 16:48:44 [显示全部帖子]

不是您上面说的那种情况。我是在调试,但对于这种不常出、偶尔发生的问题就不知怎么下手。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/22 18:27:31 [显示全部帖子]

为了检查奇怪现象的问题原因,我最近在公式每个指令之后添加了msgout,每一个指令用一个唯一的编号标识,以便准确知道是哪个指令被触发,然后输出当时的变量值,并留下时间戳。昨日公式又出现一次奇怪的动作,这次我在当时的数据快照中找到了证据,快照应该能够证明这是个不应该出现的动作,为什么公式当时通过了条件判断?

以下是信号触发后msgout留下的记录
2016/06/21 09:35:17  XXXX/action2/volume:2/orderprice:694.50/time:133600
2016/06/21 09:35:17  XXXX/action2/volume:4/orderprice:702.00/time:133600
2016/06/21 09:35:17  XXXX/action2/aa:702.00/.../time:133600
2016/06/21 09:35:18  XXXX/action2/volume:2/orderprice:694.50/time:133600
2016/06/21 09:35:18  XXXX/action2/volume:4/orderprice:702.00/time:133600
2016/06/21 09:35:18  XXXX/action2/aa:702.00/.../time:133600

上面的记录显示,公式在17、18秒触发了编号为action2的系列指令,以下是该时段的交易日志
2016-06-21 09:35:17.856    【后台】XXXX TBuyShort 第 295 行出现信号
2016-06-21 09:35:17.872    【后台】XXXX TBuyShort 已成功触发下单操作 价格:694.500000 数量:2 类型:0 账户: 品种:XXXX
2016-06-21 09:35:17.872    【后台】下单已发送
2016-06-21 09:35:17.887    【后台】XXXX TBuyShort 第 295 行出现信号
2016-06-21 09:35:17.903    【后台】XXXX TBuyShort 已成功触发下单操作 价格:702.000000 数量:4 类型:0 账户: 品种:XXXX
2016-06-21 09:35:17.903    【后台】下单已发送
2016-06-21 09:35:17.919    【后台】XXXX 运行结束
2016-06-21 09:35:17.919    【下单】XXXX 价694.500000 量2 买卖1 类型0 开平0 账户xxxxxxxxxxxx Formula 1
2016-06-21 09:35:17.919    【下单】XXXX 价702.000000 量4 买卖1 类型0 开平0 账户xxxxxxxxxxxx Formula 1
2016-06-21 09:35:17.919    当前尚有未处理完事件 - 6021
2016-06-21 09:35:18.130    当前尚有未处理完事件 - 6012
2016-06-21 09:35:18.138    【回报】xxxxxxxxxxxx : XXXX - 正在申报 2 价格:694.5000 开仓 卖出
2016-06-21 09:35:18.457    【回报】xxxxxxxxxxxx : XXXX - 正在申报 4 价格:702.0000 开仓 卖出
2016-06-21 09:35:18.877    【后台】XXXX TBuyShort 第 295 行出现信号
2016-06-21 09:35:18.882    【后台】XXXX TBuyShort 已成功触发下单操作 价格:694.500000 数量:2 类型:0 账户: 品种:XXXX
2016-06-21 09:35:18.882    【后台】下单已发送
2016-06-21 09:35:18.907    【后台】XXXX TBuyShort 第 295 行出现信号
2016-06-21 09:35:18.911    【后台】XXXX TBuyShort 已成功触发下单操作 价格:702.000000 数量:4 类型:0 账户: 品种:XXXX
2016-06-21 09:35:18.916    【后台】下单已发送
2016-06-21 09:35:18.922    【后台】XXXX 运行结束
2016-06-21 09:35:18.924    【下单】XXXX 价694.500000 量2 买卖1 类型0 开平0 账户xxxxxxxxxxxx Formula 1
2016-06-21 09:35:18.929    【下单】XXXX 价702.000000 量4 买卖1 类型0 开平0 账户xxxxxxxxxxxx Formula 1
2016-06-21 09:35:18.934    当前尚有未处理完事件 - 6021
2016-06-21 09:35:19.126    当前尚有未处理完事件 - 6012
2016-06-21 09:35:19.143    【回报】xxxxxxxxxxxx : XXXX - 正在申报 2 价格:694.5000 开仓 卖出
2016-06-21 09:35:19.441    【回报】xxxxxxxxxxxx : XXXX - 正在申报 4 价格:702.0000 开仓 卖出

日志没有异常,与公式的指令一致。

以下是编号为action2的指令代码。
globalvariable:cc=15;
...
action2:=... and (aa-high)/mindiff<=cc and...;//省略部分全部都是and,没有or,因此这个条件必须通过才可能触发action2
if action2 then
begin
for j4a=1 to j4 do 
begin
tbuyshort(1,bb,lmt,j4b,0),allowrepeat;
msgout(1,stklabel&'/action2'&'/volume:'&numtostr(bb,0)&'/orderprice:'&numtostr(j4b,2)&'/time:'&numtostr(time,0)),allowrepeat;
end;
aa:=j4b;
msgout(1,stklabel&'/action2'&'/aa:'&numtostr(aa,2)&...&'/time:'&numtostr(time,0));
end;

公式固定1秒轮询。

msgout留下的记录可见,17秒执行完公式后,aa的值为702,时间133600的high是686.50(见下面附图),mindiff是0.5,因此(aa-high)/mindiff<=cc条件应该无法通过,为什么18秒可以通过?

图片点击可在新窗口打开查看此主题相关图片如下:未命名图片.png
图片点击可在新窗口打开查看


上述问题出现没有规律性,公式一天交易大概10笔左右,一两个星期才出现一次奇怪的动作,也不是固定某个动作,每次都不同。请帮助找原因。谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/22 21:45:22 [显示全部帖子]

cc值不变,公式没有地方对它赋值。

mindiff也不会变的吧,我没改过里面的设置,再说公式绝大部分的指令都是对的,这说明这个变量也没问题。

至于high无法确定是686.5,你意思是当时分笔里可能有比它更高的值?

msgout输出了所有的变量的,我只是没有都贴出来,省略了,上面那个判断是关键,从数据看它的确是通不过啊。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/22 21:58:52 [显示全部帖子]

我刚才看了那个品种的日线,当日最高价与分钟线的最高价是一样的,因此,可以排除分钟线低于日线最高价的可能。当日日线的最高价也就是688.5(见下图),就算用这个价,上面的条件也应该通不过的。

图片点击可在新窗口打开查看此主题相关图片如下:未命名图片.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/22 22:04:07 [显示全部帖子]

补充一点,j4b的计算使用到了mindiff的,从指令的价格上可以判断当时的mindiff值就是0.5, 所以,我找不到任何理由上面的条件会通过。

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/23 9:51:51 [显示全部帖子]

前面已说过了

1. cc值不变,放在globalvariable是为了减少运算量和修改参数时比较方便,如果在普通变量里赋值,公式每解释一遍都要对它赋值。公式里没有其他地方对cc赋值,只有调用它。

2. action2里的所有条件都是and, 没有or,我觉得就算其他条件都通过,如果上面的条件通不过,action2也不应该通过才是。

如果您认为上述信息还不足以找出是什么问题,我还应该做些什么来进一步调试?

 回到顶部
帅哥哟,离线,有人找我吗?
a141027
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:472 积分:0 威望:0 精华:0 注册:2014/10/27 16:51:49
  发帖心情 Post By:2016/6/23 10:36:51 [显示全部帖子]

因为出问题的地方不固定,这就是要把所有变量每次轮询的值都debugfile出去了,现在已开了日志,再写出全部变量,运行了9个策略,不知道系统会不会反应不过来。。既然你们都这么说,我试试吧。

 回到顶部