求助:if 判断不成立时候也执行 [开拓者 TB]
- 咨询内容:
想写一个如果10天内不创新高就开空的程序,但是发现if 判断句内置条件不满足也运行,不知道如何解决。
criteria用来判断当天是否是新高,
criteriahigh用来判断10天是否创过新高,
但是发现即便if 里的condition是false情况下,criteria还是会被赋值为1,求教这是什么问题?
Params
Numeric days(10); //多少天不创新高就会出现大幅回调
Numeric highrange(50); // 新高的范围是多少
Vars
Numericseries criteria(0);
numericseries criteriahigh(0);
bool condition;
numeric myhigh;
Begin
myhigh=highest(close,highrange);
condition= myhigh==Close;
If (condition)
{
criteria=1;
}
criteriahigh=Highest(criteria,days);
if (criteriahigh==0)
{
sellshort(close,1);
}
End - TB技术人员:
criteria在这里声明的是序列变量,只要有过一次被赋值后,如果没有再次赋值改变前,之后的每一个bar都是延续之前的值。
- TB客服:
多谢老师指导,明白了,在开头加一个criteria=0,每次赋个初始值就解决了,但是还有点疑问,就是一开始condition是不成立的情况,为什么第一个criteria也会被赋值1?不应该是开始的Criteria一直是0,直到condition满足后,criteria之后全变成1么?
- 网友回复:
haniqwang 发表于 2016-4-19 08:58
多谢老师指导,明白了,在开头加一个criteria=0,每次赋个初始值就解决了,但是还有点疑问,就是一开始condi ...
上述代码的条件,在第一个bar上就已经满足了condition.
公式里加上二句调试信息就可以清楚看到。- Begin
- myhigh=highest(close,highrange);
- condition= myhigh==Close;
- Commentary("myhigh="+text(myhigh));
- Commentary("close="+text(close));
- If (condition)
- {
- criteria=1;
- }
- Begin
- 网友回复:
感谢老师!
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容