jackthetan 發表於 16-3-4 14:09

請教均價線公式哪裡錯了


Data1 5分, Data2 1分
寫成一個指標載入後, print 出來發現
0846 的量總和還對, 0847 後就亂了, 不知原因在哪




Vars: SumVolume(0) , SumPriceVol(0) , VWAP(0) ;

IF (D <> D) of data2 Then
Begin
SumVolume = 0 ;
SumPriceVol = 0 ;
End ;

SumVolume = SumVolume + Ticks of data2;
SumPriceVol = SumPriceVol +(C of data2)*(Ticks of data2);

If SumVolume > 0 Then
VWAP = SumPriceVol/SumVolume
Else
VWAP = C of data2;

Plot1(VWAP ,"VWAP Data2",white,Default,3) ;

if D > 1160228 then
begin
print("D=" ,D of data2 , ",T of data2=", T of data2,
       " Ticks of data2=", Ticks of data2,
       " C of data2=", C of data2,      
       " SumVolume=", SumVolume ,
       " SumPriceVol=", SumPriceVol);
end;


alexliou 發表於 16-3-4 14:34

您在每個變數前面加個intrabarpersist試試看

jackthetan 發表於 16-3-6 18:11

似乎OK 了, 請教這是為什麼呢?

alexliou 發表於 16-3-6 21:31

本帖最後由 alexliou 於 16-3-6 21:42 編輯

jackthetan 發表於 16-3-6 18:11
似乎OK 了, 請教這是為什麼呢?

在 EasyLaguage Essentials Programmers Guide的第42頁
"Variable Calculation and Storage"這個section 有描述到變數值在IntraBar是如何處理的
When you reference a variable, the value of the variable returns is the value of the variable as the close of the previous bar.
........
So each time an analysis technique calculates intra-bar, the previous intra-bar value of a variable is thrown away.
Each variable value only gets permanently set once per bar when the bar close.

你的例子裡, 5分線是主圖, 以1分線的資料來計算daily-reset 的VWAP
對5分線的Bar而言, 根據1分線提供的資料所做的計算, 就是Intra Bar的Result, 算完後就扔掉了
下一分鐘在計算的時候, 所有變數的值又回到了上一根5分Bar Close時的值
所以在8:47分計算時, 你所reference到的價量相關值
並不是8:46分時的值, 而是前一天收盤時的價量相關值

如果要把IntraBar時的計算留下來
變數宣告時, 就必須加上IntraBarPersist

p.s. 我原先也以為, 在multiple timeframe的圖裡
建立在高時間層級的策略或指標
在不使用ADE的狀況下
除了與高時間層級Bar 同一個time stamp 那根低時間層級Bar外
存取不到其他低時間層級Bar的資料
你印出來的 traceout result 讓我推翻了我原先的看法
5分線圖裡, 每1分鐘還是有計算的


jackthetan 發表於 16-3-14 11:44

非常感謝, 不過雖然解決了, 但是6年1分K 要跑6分鐘好久,{:4_161:}
頁: [1]
查看完整版本: 請教均價線公式哪裡錯了