以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  为什么,I 的值,始终是6?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=1473)

--  作者:dzfp2010
--  发布时间:2010/4/19 18:01:49
--  为什么,I 的值,始终是6?

俺把这个作为后台交易系统,来测试后台交易函数的用法,为啥I的值一直是:6?

VARIABLE:I=0;
IF I<=10 THEN BEGIN
DEBUGFILE(\'F:\\Debug_1.Txt\',\'当前持仓量为:%.2f\',THOLDING2);
DEBUGFILE(\'F:\\Debug_1.Txt\',\'当前多头持仓量为:%.2f\',TBUYHOLDINGEX(\'888888\',\'SRY01\',1));
DEBUGFILE(\'F:\\Debug_1.Txt\',\'==============变量的值是:%.2f ================\',I);
I:=I+1;
END


 

[此贴子已经被作者于2010-4-19 18:02:56编辑过]

--  作者:admin
--  发布时间:2010/4/19 18:09:15
--  

DEBUGFILE 是最后一个周期才起作用的函数。

VARIABLE:I=0; 这种声明是属于周期间的全局变量

你的公式存在逻辑问题。

情参考公式常见问题,里面专门对此做了介绍

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332

[此贴子已经被作者于2010-4-19 18:10:35编辑过]

--  作者:dzfp2010
--  发布时间:2010/4/19 18:14:04
--  模拟操盘能否做后台测试?

嗯,想了一下,明白了,试了一下又不明白了,I的值,还是没有像所希望的那样“从0递增到10”。。

VARIABLE:I=0;
IF I<=10 THEN BEGIN
DEBUGFILE(\'F:\\Debug_1.Txt\',\'当前持仓量为:%.2f\',THOLDING2);
DEBUGFILE(\'F:\\Debug_1.Txt\',\'当前多头持仓量为:%.2f\',TBUYHOLDINGEX(\'888888\',\'SRY01\',1));
DEBUGFILE(\'F:\\Debug_1.Txt\',\'==============变量的值是:%.2f ================\',I);
If ISLASTBAR THEN I:=I+1;
END

[此贴子已经被作者于2010-4-19 18:24:33编辑过]

--  作者:admin
--  发布时间:2010/4/19 18:27:47
--  

逻辑混乱

DEBUGFILE是最后一个周期才有效的,所以不会记录I的累加过程

你后面增加了ISLASTBAR更是没有效果,因为VARIABLE声明的变量只在整个公式计算周期有效,不会保存硬盘上

 


--  作者:dzfp2010
--  发布时间:2010/4/19 18:43:33
--  

嗯,又想了一下,又明白了,是不是可以这样理解:

 

VARIABLE,定义的变量,公式或者交易系统会每个周期都会运行一次,变量值也随着公式或者交易系统在每个周期的运行而变化,也就是随着周期的变化而变化,但是,交易系统和公式在最后一个周期会随着每个“TICK”的变化而变化,而变量不会随着每个“TICK”的变化而变化,随着“TICK”的变化,它变成了无效值 0。。。


--  作者:admin
--  发布时间:2010/4/19 19:23:35
--  

你试试DEBUGFILE2函数的返回结果。