最近在寫策略時發現一個現象無法理解,我大概描述一下我的情況。
我要計算前n日的收盤總合,一開始我是自己使用for迴圈來寫,寫完後發現第N+1日時並沒有計算出數值,
後來就加了show了一些訊息出來看,裡面包含了data和currentbar的資訊,發現dates在第n日還是正常的,
但到N+1日時就有問題,currentbar也是一樣。剛開始以為是我程式問題,後來寫一個測試程式,並改用MC內建的summation
來計算,測試後發現問題是一樣的。再進一步追查發現。只要執行了summation函式後,這函式後面的程式也不會再執行,
直接跳到程式最一開始,並且currentbar和date也跳掉了(像是重新計算)。才想說是不是MC在使用這函式時是否有特別限制,
想請問小祕書或各位大大們是否知道原因呢? 還是MC有bug(我覺得機會不大)。
一並附上我測試程式和show出的訊息
程式如下,LongTrendLen是49
補充說明。
我使用自己寫的程式(for loop)去分析,發現如果使用"C[7]"這種要讀取前幾日的收盤價方式,
當執行到這一行程式後,後面就不執行了,馬上又從頭開始。這點感覺很奇怪。
而執行了1百多個日K後,就不會再發生這問題了。
currentbar改成barnumber看看~
改成barnumber還是一樣,目前看到主要的原因是Close[n]這個語法,
只要用到前幾日的這個語法就會有問題,但如果n是0就不會有問題。
我也是遇到了一樣的問題。
後來我的解決方法是,不要用『時序』,全部改成『陣列』
在矩陣裡,看你要怎麼回溯到前n的K棒,都不會有問題。
但如此一來,全部引用的函數,也通通都要改寫喔!
會想要改成陣列,主要的動機是多週期的同步問題
因為在時序內的data2,c[0]是不會跟data1同步的
如果還要去搞ADE、GV,那就會把問題弄得更複雜
所以,用陣列是一個好方法。
只是在視覺畫圖上,多半又要用到時序
只好在最大引用K棒之後,看結果了!
不過,畫圖只是在開發階段,給人看的
寫好程式之後,畫圖就可以全部關閉了!