不是,这个归根到底,其实就是条件嵌套造成的逻辑差异。
你上的代码简化后(把所有的or之类的干掉。你可以认为总条件是c>o)就是这个结构
总条件中不含holding=0时:
[PEL] 复制代码 if c>o then begin
if holding<0 then begin
sellshort(1,1,market);
end
if holding=0 then begin
buy(1,1,market);
end
end
那么上述代码整体逻辑执行时,当c>o时(无论是否有持仓都能进入判断体内),之后才判断第2行和第6行的子条件是否成立。这种情况类似于,无论你带不带礼物都能到正常进入朋友家的小区大门,然后在朋友家的2个孩子分别判断礼物是不是他们喜欢的。如果喜欢才给他们自己的房间开门。
总条件中含holding=0时:
[PEL] 复制代码 if c>o and holding=0 then begin
if holding<0 then begin
sellshort(1,1,market);
end
if holding=0 then begin
buy(1,1,market);
end
end
你想下,总条件中有holding=0的限制时,当总条件成立时,但是除非你是第一次空仓时才能进入到语句内,之后因为holding不再等于0. 逻辑不可能再进入到子判断体中。
相当于朋友家的其中一个孩子,先在小区大门口等着你,发现你带的礼物不是他要的,直接就把你拒之小区大门门外。即使你手里有另外几个孩子喜欢的礼物,关键你根本没有到朋友家里呢。
条件嵌套的整体过程是:
外部条件先被判断,内部条件后被判断,就像家里总闸和卧室电闸的关系。
|