請問我設這兩個條件式,原本回測6000~8000筆,為何回測筆數之後變成47萬筆呢,是否有地方寫錯呢?
and getsymbolField("OTC.TW", "Close","D")[1]<getsymbolField("OTC.TW", "close","D")[2]
or getsymbolField("OTC.TW", "close")<getsymbolField("OTC.TW", "close","D")[1]
請問我設這兩個條件式,原本回測6000~8000筆,為何回測筆數之後變成47萬筆呢,是否有地方寫錯呢?
and getsymbolField("OTC.TW", "Close","D")[1]<getsymbolField("OTC.TW", "close","D")[2]
or getsymbolField("OTC.TW", "close")<getsymbolField("OTC.TW", "close","D")[1]
getsymbolField("OTC.TW", "close")<getsymbolField("OTC.TW", "close","D")[1]這個條件很可能一直都成立,例如當天開低。在逐筆洗價時,回測會每分鐘都符合條件,若沒有用其他變數控制,則可能每分鐘都進場一次,回測的筆數當然會很龐大。
Hello 森77,
小編補充,若您還有其他條件的話,有可能是因為沒有正確的使用括號所導致。
舉例來說,有 condition1 ~ condition4 4個條件。
if condition1 and condition2 and condition3 or condition4 then ret = 1;
這樣會在 condition1 ~ condition3 為 True 的時候或 condition4 為 True 的時候觸發。
若是希望有 condition1 ~ condition3 或 condition1, condition2, condition4 為True時觸發,則應該改為:
if condition1 and condition2 and (condition3 or condition4) then ret = 1;
2 評論