公式里,加入了调试语句:
debugfile('D:\turtle.log', 'symble: %s', stkname());
debugfile('D:\turtle.log', 'enterbars: %.2f', tenterbars(0));
日志文件中的内容:
。。。。
2010-06-10 14:03:04.687 enterbars: 4294965284.00
2010-06-10 14:03:04.703 enterbars: -1.00
2010-06-10 14:03:04.703 enterbars: -1.00
2010-06-10 14:03:04.718 enterbars: -1.00
2010-06-10 14:03:04.718 enterbars: -1.00
2010-06-10 14:03:04.718 enterbars: -1.00
2010-06-10 14:03:04.734 enterbars: -1.00
2010-06-10 14:03:04.734 enterbars: -1.00
2010-06-10 14:03:04.750 enterbars: -1.00
2010-06-10 14:03:04.750 enterbars: -1.00
2010-06-10 14:03:04.750 enterbars: -1.00
2010-06-10 14:03:04.750 enterbars: -1.00
2010-06-10 14:03:04.765 enterbars: 4294965136.00
2010-06-10 14:03:04.781 enterbars: 4294966834.00
2010-06-10 14:03:04.781 enterbars: 4294965260.00
2010-06-10 14:03:04.781 enterbars: -1.00
2010-06-10 14:03:04.796 enterbars: -1.00
2010-06-10 14:03:04.796 enterbars: -1.00
2010-06-10 14:03:04.812 enterbars: -1.00 <--- 到这里正好19行(我监控了19个品种)
2010-06-10 14:03:08.140 symble: (null)
2010-06-10 14:03:08.140 enterbars: -1.00
当前确实有仓位:
几个问题:
1. 为什么tenterbars取不到有效值?
2. stkname()为什么取不到品种名称?是不是%s的格式串有问题? debugfile里支持什么样的格式串?(这个好像没看到有文档说明)
3. 我监控的是19个品种, 调试中一次循环前面看到19个enterbars, 但symble只输出了一次。也很奇怪。 (两个debugfile语句连续执行的,并且没有放在条件语句中)
[此贴子已经被作者于2010-6-10 14:15:07编辑过]
tenterbars需要历史的成交记录才能正确返回结果,如果你的成交记录被清空或者是手工再其他位置进行开平仓交易,那么将无法返回正确结果。你可以再交易监控里,看看你所在公式的历史成交记录的开仓记录是否是全的。
stkname函数返回的变量只有在DRAWTEXT等绘制文字的函数中才能正确显示,其他方式打印出来的数字都是字符串在金字塔内的地址牌号
第3个问题,由于你的公式过于简单,我们这里无法印证问题存在,是否给出一个具体可以复现问题的测试公式。
以下是引用admin在2010-6-10 17:32:07的发言:
tenterbars需要历史的成交记录才能正确返回结果,如果你的成交记录被清空或者是手工再其他位置进行开平仓交易,那么将无法返回正确结果。你可以再交易监控里,看看你所在公式的历史成交记录的开仓记录是否是全的。
我在另一个帖子里提到过,系统之前有几次死机,导致预警记录都未能保留下来。 如果tenterbars需要历史记录才能返回正确结果, 那这个历史记录就太重要了,死机丢失记录就不可谅解了。 建议改成随时打开,随时写入,随时关闭的方式, 以避免由于程序意外退出导致历史记录丢失。
好消息是: 最近几天一直都没出现过死掉的现象, 不知是我不开股票行情的原因, 还是最近的升级给解决掉了。
stkname函数返回的变量只有在DRAWTEXT等绘制文字的函数中才能正确显示,其他方式打印出来的数字都是字符串在金字塔内的地址牌号
明白了。
但是有什么办法,能在调试日志中区分各品种的信息呢?
第3个问题,由于你的公式过于简单,我们这里无法印证问题存在,是否给出一个具体可以复现问题的测试公式。
这个我回头再多试试再说。
[此贴子已经被作者于2010-6-10 19:15:47编辑过]
以下是引用admin在2010-6-10 17:32:07的发言:
tenterbars需要历史的成交记录才能正确返回结果,如果你的成交记录被清空或者是手工再其他位置进行开平仓交易,那么将无法返回正确结果。你可以再交易监控里,看看你所在公式的历史成交记录的开仓记录是否是全的。
另外, 成交历史记录存放在哪个文件? 能否手工编辑? 这样有些时候手工补的单子,能与程序交易融合到一起.
成交记录文件在Setting目录,自己打开看看应该能看明白,是<预警名称>+Histroy.Dat。
死机问题,已经在1。98发布新版中修正
手工补单,只能在交易监控中进行的自动交易系统可识别。Ctrl+A的预警框中,双击正在运行的后台交易系统中可以看到
[此贴子已经被作者于2010-6-10 21:06:22编辑过]
以下是引用admin在2010-6-10 21:05:15的发言:
成交记录文件在Setting目录,自己打开看看应该能看明白,是<预警名称>+Histroy.Dat。
死机问题,已经在1。98发布新版中修正
手工补单,只能在交易监控中进行的自动交易系统可识别。Ctrl+A的预警框中,双击正在运行的后台交易系统中可以看到
[此贴子已经被作者于2010-6-10 21:06:22编辑过]
明白了, 非常感谢!
以下是引用admin在2010-6-10 21:05:15的发言:
成交记录文件在Setting目录,自己打开看看应该能看明白,是<预警名称>+Histroy.Dat。
[此贴子已经被作者于2010-6-10 21:06:22编辑过]
成交记录用什么软件可打开编辑?手工交易的手工加入到成交记录中tenterbars能够识别吗?
[此贴子已经被作者于2012-5-11 18:23:24编辑过]