這是月線 (紅框處為240ma 沒資料)

這是我寫的判斷式
如果收盤價有站上月線的240ma就執行動作
if(GetField("收盤價", "M") >= Average(GetField("收盤價", "M"), 240)) then ...
但因為Average(GetField("收盤價", "M"), 240)沒有完整資料可以被運算
請問可以怎麼加判斷式才不會讓整個程式運算卡在這邊呢?
謝謝小幫手
這是月線 (紅框處為240ma 沒資料)

這是我寫的判斷式
如果收盤價有站上月線的240ma就執行動作
if(GetField("收盤價", "M") >= Average(GetField("收盤價", "M"), 240)) then ...
但因為Average(GetField("收盤價", "M"), 240)沒有完整資料可以被運算
請問可以怎麼加判斷式才不會讓整個程式運算卡在這邊呢?
謝謝小幫手
Hello mm巧克力,
就小幫手所知,如果您是使用選股腳本的話,可以使用 GetFieldStartOffset 函數來取得欄位資料筆數。
其他腳本的話應該沒辦法用函數取得資料長度,不過可以考慮使用 currentbar,會回傳目前運算過的筆數。(會受settotalbar影響)
可以使用這個資訊來限制筆數。
小幫手你好:
如果有以下這種需求
你會怎麼建議呢?
if(GetField("收盤價", "M") >= Average(GetField("收盤價", "M"), 240)) then
else if(GetField("收盤價", "M") >= Average(GetField("收盤價", "M"), 120)) then
else if(GetField("收盤價", "M") >= Average(GetField("收盤價", "M"), 60)) then
這種邏輯對於上市櫃不到10年以上
應該都會遇到資料不夠的問題...
謝謝小幫手
Hello mm巧克力,
小幫手會建議您改在選股中心使用 GetFieldStartOffset 確認筆數資料計算,然後用 outputfield 輸出確認數值。
舉例來說:
value1 = GetFieldStartOffset("收盤價", "M");
if value1 > 240 then value2 = Average(GetField("收盤價", "M"), 240)) else value2 = 0;
if value1 > 120 then value3 = Average(GetField("收盤價", "M"), 120)) else value3 = 0;
if value1 > 60 then value4 = Average(GetField("收盤價", "M"), 60)) else value4 = 0;
這樣 value2 ~ value4 就會是對應的平均價,如果長度不夠的話則會是0。
3 評論