以下是我目前的理解。
我所指的序列變數,是指CloseD(1)、HighD(1) 等的用法。
例如, HighD() 其實可以找到系統裡面有個自訂函式,如下:
SetBarMode(1);
input: PeriodsAgo(numericsimple);
HighD = GetField("High","D")[PeriodsAgo];
因此series序列變數,如:CloseD(1)、HighD(1) 等,不應該看成一個序列變數,而應該看成一個序列函數。
這表示 series 序列變數其實是一個序列函數,而XS似乎不能把序列函數當成一個參數,傳進去自訂函數使用。
如果把序列函數送進自訂函數裡面,傳遞進去的是一個value,而這個value會以陣列的形式儲存。
有趣的是,HighD(1) 送進去函數之後,假設用HighD_Array承接,而該頻率是1分鐘。
HighD_Array[0] 會是 HighD(1),但是HighD_Array[1] 並不是 HighD(2)。
我不理解 HighD_Array[1] 代表的意義是甚麼。
所以我寫了一個指標腳本來測試看看。
測試指標腳本: Test.series_function
//Test.series_function
variable:HighD_Array(0); HighD_Array=0;
HighD_Array = highD(1);//昨天的最高價
plot1(highD(1),"highD(1)");
plot2(HighD_Array[0], "HighD_Array[0]");
plot3(HighD_Array[0 + 1], "HighD_Array[0 + 1]");
plot4(HighD_Array[0 + 2], "HighD_Array[0 + 2]");
plot5(HighD_Array[0 + 4.5*60 + 0], "HighD_Array[0 + 4.5*60 + 0]");
plot6(HighD_Array[0 + 4.5*60 + 1], "HighD_Array[0 + 4.5*60 + 1]");
plot7(HighD_Array[0 + 4.5*60 + 2], "HighD_Array[0 + 4.5*60 + 2]");
執行腳本之後,觀察點放在9:00的結果如下:
highD(1) 616
HighD_Array[0] 616
- HighD_Array[0] 承接的是今天 9:00 看的 HighD(1),也就是昨天的最高點 616
HighD_Array[0 + 1] 619
- HighD_Array[0 + 1] 承接的是昨天 13:29 看的 HighD(1),也就是前天的最高點 619
HighD_Array[0 + 2] 619
- HighD_Array[0 + 2] 承接的是昨天 13:28 看的 HighD(1),也就是前天的最高點 619
HighD_Array[0 + 4.5*60 + 0] 619
- HighD_Array[0 + 4.5*60 + 0] 承接的是昨天 9:00 看的 HighD(1) ,也就是前天的最高點619
HighD_Array[0 + 4.5*60 + 1] 615
- HighD_Array[0 + 4.5*60 + 1] 承接的是前天 13:29 的 HighD(1) ,也就是大前天的最高點 615
HighD_Array[0 + 4.5*60 + 2] 615
- HighD_Array[0 + 4.5*60 + 2] 承接的是昨天 13:28 的 HighD(1) ,也就是大前天的最高點 615
{ 4.5*60 表示 9:00 ~13:29 共 4.5個小時,每小時60分鐘 }
{ 在XS的時間序列上,沒有13:30這個時間點,一天的最後一個時間點是13:29 }
.jpg?width=690&upscale=false)
而執行腳本之後,觀察點放在9:01的結果如下:
highD(1) 616,highD(1)代表昨天的最高點 616
HighD_Array[0] 616
- HighD_Array[0] 承接的是今天 9:01 看的 HighD(1),也就是昨天的最高點 616
HighD_Array[0 + 1] 616
- HighD_Array[0 + 1] 承接的是昨天 9:00 看的 HighD(1),也就是昨天的最高點 616
HighD_Array[0 + 2] 619
- HighD_Array[0 + 2] 承接的是昨天 13:29 看的 HighD(1),,也就是前天的最高點 619
HighD_Array[0 + 4.5*60 + 0] 619
- HighD_Array[0] 承接的是昨天 9:01 看的 HighD(1) ,也就是前天的最高點 619
HighD_Array[0 + 4.5*60 + 1] 619
- HighD_Array[0 + 4.5*60 + 1] 承接的是前天 9:00 的 HighD(1) ,也就是前天的最高點 619
HighD_Array[0 + 4.5*60 + 2] 615
- HighD_Array[0 + 4.5*60 + 2] 承接的是昨天 13:29 的 HighD(1) ,也就是大前天的最高點 615
{ 4.5*60 表示 9:00 ~13:29 共 4.5個小時,每小時60分鐘 }
{ 在XS的時間序列上,沒有13:30這個時間點,一天的最後一個時間點是13:29 }
.jpg?width=690&upscale=false)
綜合以上的結果,推論如下:
在頻率為1分鐘的環境,當 HighD_Array = highD(1);
HighD_Array[0] 指的是 "在該時間點看 highD(1) 的值"。
而 HighD_Array[0 + i] 則是指 "在該時間點回跳 i 分鐘,在回跳的時間點看 highD(1) 的值"。
以上的推論,再麻煩小幫手指正,感謝小幫手。
3 評論