Hello 努力中,
小編並不知道您是如何撰寫的,不過須注意就算60分鐘頻率逐筆洗價回測時是每一分鐘運算一次,[1]取到的還是上一根60分鐘Bar的資料。
所以舉例來說您在 104400 的時候運算,變數[1] 會是 090000 這根Bar的資訊 (不論是否為intrabarpersist)。
若要在每個44分時保存當下和上個44分的資料,那麼會需要兩個變數,舉例來說:
var: intrabarpersist _value1(0), intrabarpersist _value2(0);
if minute(currenttime)=44 then begin
_value2 = _value1;
_value1 = close;
end;
這樣 _value2 就會是上一次條件符合時的數值,而 _value1 就會是此次條件符合時的數值。
time>=084500 and time<=124500 and minute(currenttime)=44 這種寫法當然只會和44分連動,因為您條件中間是 and。
上面這段用中文解釋就會是 時間介於 08:45 到 12:45 之間,且分鐘為44分。
如果您希望的是 時間介於 08:45 到 12:45 之間,或是分鐘為44分,那麼應該是:
(time>=084500 and time<=124500) or minute(currenttime)=44
網站上有教學區和教學影片,裡面有XS語法的基礎和應用可以閱覽。
9 評論