我的腳本編譯沒有問題
但是執行回測都會出現"其他失敗 回測執行異常(1)"

我有寄MAIL到XQservice@XQ.com.tw給小幫手
再拜託幫我看一下
我的腳本編譯沒有問題
但是執行回測都會出現"其他失敗 回測執行異常(1)"

我有寄MAIL到XQservice@XQ.com.tw給小幫手
再拜託幫我看一下
更
找到原因了
//----做多出場條件----
if position = 1 and filled = 1 and PASS = 1 then begin
if close cross Over addspread(filledavgprice, (2.5*DUATR)) then begin
setposition(0, market, label:="多單獲利出場");
PASS = 0 ;
end else
if close cross Under addspread(filledavgprice, (-1.5*DUATR)) then begin
setposition(0, market, label:="多單虧損出場");
PASS = 0 ;
end else
if value1[1] cross Under 0 then begin
setposition(0, market, label:="多單MACD翻轉出場");
PASS = 0 ;
end;
end;
//----做空出場條件----
if position = -1 and filled = -1 and PASS = 2 then begin
if close cross under addspread(filledavgprice, (-2.5*DUATR)) then begin
setposition(0, market, label:="空單獲利出場");
PASS = 0 ;
end else
if close cross over addspread(filledavgprice, (1.5*DUATR)) then begin
setposition(0, market, label:="空單虧損出場");
PASS = 0 ;
end else
if value1[1] cross over 0 then begin
setposition(0, market, label:="空單MACD翻轉出場");
PASS = 0 ;
end;
end;
只要將cross over跟cross under改成用><跟=就可以了
但是為什麼會這樣?
為什麼出場不能用cross over跟cross under??
你需要了解cross over及cross under的定義。它們與大於及小於是不同的。在3月15日的週末特訓班課程中,我有說明兩者的差異。若不清楚兩者的差異,很容易犯上邏輯錯誤。
我明白cross over及cross under是穿越而不是比大小
所以在價位上用><來寫會比較直觀
所以說cross over及cross under在碰到價位跳空會無法觸發判斷嗎?
cross over是前一根K沒有cross over,而這根K出現cross over,才是cross over。若前一根K已經cross over,這根K就不會cross over。它與是否跳空無關。
Hello 奇怪的人,
小編補充,cross over 會比較前後兩期的數值,判斷是否穿越。
而FilledAvgPrice只有提供當期值,不能使用前期值,因此會出錯。
您可以考慮改用變數保存 FilledAvgPrice 的數值,然後再用變數來當作 cross over 條件。
5 評論