求助:if 判斷不成立時候也執行
作者:開拓者 TB 來源:cxh99.com 發布時間:2016年06月28日
- 咨詢內容:
想寫一個如果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;
- }
復制代碼
- 網友回復:
感謝老師! |