小邦使您好,
想詢問一下,我的策略在XS 編輯執行都沒問題,為什麼拿去跑策略雷達 模擬實操 他就會出現錯誤,顯示“計算停止,因為計算發生錯誤,請檢查腳本內的算式”,我用內建回測時都沒有問題呀@@? 我的版本是全球贏家6.44板


小邦使您好,
想詢問一下,我的策略在XS 編輯執行都沒問題,為什麼拿去跑策略雷達 模擬實操 他就會出現錯誤,顯示“計算停止,因為計算發生錯誤,請檢查腳本內的算式”,我用內建回測時都沒有問題呀@@? 我的版本是全球贏家6.44板


Hi red,
為什麼拿去跑策略雷達 模擬實操 他就會出現錯誤,顯示
“計算停止,因為計算發生錯誤,請檢查腳本內的算式”
我用內建回測時都沒有問題呀@@?
您好,猜想您有可能使用到
需要盤後才會有數值的相關函數,例如:
若是的話,因為這些函數在盤中洗價時,若您有取這些函數當期的資料,
則會因為沒有資料(因為盤後才會更新,例如:外資持股比例是在每日下午4:30後開始更新。)
而出現此錯誤訊息。
解決的方式為使用 getfielddate 函數來判斷這些函數的資料日期是否已更新,
若尚未更新則取前一期的數值當作盤中執行策略雷達的參考值,例如以下範例程式碼:
if GetFieldDate("外資持股比例") = date then
value1 = GetField("外資持股比例")
else
value1 = GetField("外資持股比例")[1];
以上方向供您參考,若仍有問題,請您提供
策略雷達匯出檔案(匯出時記得勾選包含自訂腳本)
至此,以利小幫手查看問題的原因,謝謝。
小幫手你好,
因為我的略中有用到盤後資料,我改了上方指令,執行日頻率是可以的,但是當我換到30分頻率,他又會出現錯誤。可以怎麼處理呢?
他在策略雷達中執行會出現紅燈,或是綠燈閃一下後就消失。
// 30分頻率
if GetFieldDate("外資持股比例","D") = date then value1 = GetField("外資持股比例,"D") else value1 = GetField("外資持股比例","D")[1];
value2=summation(value1,5);
if value2>40 then ret=1;
Hi red,
您好,謝謝您的回饋,
小幫手已詢問相關人員,待相關人員確認後,再向您說明,謝謝。
請問小幫手有回音了嗎?
Hi red,
您好,已詢問相關工程人員,
若相關工程人員確認後,會再告知小幫手,屆時再向您說明,
以上說明,謝謝您的詢問。
因為策略中有用到盤後資料
小幫手查看到您所述:盤中雷達策略中有使用到盤後資料
若您有訂閱選股模組,或許可以使用選股策略撰寫盤後選股條件,撰寫完畢後加入選股策略並設為每日自動執行,
最後將雷達執行商品設定為該選股策略的每日自動選股篩選商品清單(組合 --> 每日自動選股清單)
這樣盤中雷達即可執行到盤後篩選的股票商品,以上方向供您參考,謝謝。
小幫手您好:
但是您不說用這個演算法就可以了嗎
// 30分頻率
if GetFieldDate("外資持股比例","D") = date then value1 = GetField("外資持股比例,"D") else value1 = GetField("外資持股比例","D")[1];
value2=summation(value1,5);
if value2>40 then ret=1;
我照打回測是可以的,但是在策略雷達 盤中執行會出現執行錯誤,“計算停止,因為計算發生錯誤,請檢查腳本內的算式”,
或是綠燈閃一下即停止!!
我確定我的程式中沒有任何分母為零問題,我能將程式寄給您們看一下嗎? 實在不知道問題出錯在哪裡?
我也猜想是不是在30分鐘線頻率中date讀的格式 與 getfielddate讀的格式不同,所以出現錯誤,再麻煩解答一下
之前打錯,我的版本是6.42板
12 評論