俺把这个作为后台交易系统,来测试后台交易函数的用法,为啥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
DEBUGFILE 是最后一个周期才起作用的函数。
VARIABLE:I=0; 这种声明是属于周期间的全局变量
你的公式存在逻辑问题。
情参考公式常见问题,里面专门对此做了介绍
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332
嗯,想了一下,明白了,试了一下又不明白了,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
逻辑混乱
DEBUGFILE是最后一个周期才有效的,所以不会记录I的累加过程
你后面增加了ISLASTBAR更是没有效果,因为VARIABLE声明的变量只在整个公式计算周期有效,不会保存硬盘上
嗯,又想了一下,又明白了,是不是可以这样理解:
VARIABLE,定义的变量,公式或者交易系统会每个周期都会运行一次,变量值也随着公式或者交易系统在每个周期的运行而变化,也就是随着周期的变化而变化,但是,交易系统和公式在最后一个周期会随着每个“TICK”的变化而变化,而变量不会随着每个“TICK”的变化而变化,随着“TICK”的变化,它变成了无效值 0。。。
你试试DEBUGFILE2函数的返回结果。