紀錄大盤

  •   194 
  • 最後發表   風期會  2023 三月 30
風期會 發文於   2023/03/16

小幫手請教:

我想要紀錄昨天大盤第一盤成交量,以及當天第一盤的成交量,我寫法是如下,但不知為何顯現的數值不符合,還請指點,感謝。

var: first_v(0), yester_first_v(0);

if getsymbolfield("TSE.TW","Date") <> getsymbolfield("TSE.TW","Date")[1] then begin
    value1 = 0;
    while getsymbolfield("TSE.TW", "seqno", "Tick")[value1] = getsymbolfield("TSE.TW", "seqno", "Tick")[value1 + 1] begin
        value1 += 1;
        end;
    yester_first_v = first_v;
    first_v = getsymbolfield("TSE.TW", "Volume", "Tick")[value1];
    end;

plot2(first_v,"當日首量");
plot3(yester_first_v,"前日首量");

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/03/20

 Hello 風期會,

 

小幫手不太確定您腳本的邏輯為什麼要這樣寫,不過既然都用 getsymbolfield("TSE.TW", "seqno", "Tick") 取得相對位置了,那麼就可以利用此來直接抓取第一根成交量。

(TSE.TW 的 volume 取回來的會是元為單位)

 

舉例來說:

value1 = getsymbolField("TSE.TW", "seqno", "Tick");

getsymbolField("TSE.TW", "volume", "Tick")[value1-1] 就會是當日的第一根金額。

 

需注意的是,TSE的第一根成交量一定都會在 09:00:05 這根Tick,而當日和歷史資料的第一根Bar系統判斷會不同。(090005 和 090000)

所以要在指標上取得每日的開盤金額應該是:

value1 = getsymbolField("TSE.TW", "seqno", "Tick");

if date = currentdate then value2 = getsymbolField("TSE.TW", "volume", "Tick")[value1-1] else value2 = getsymbolField("TSE.TW", "volume", "Tick")[value1-2];

 

plot1(value1);

plot2(value2);

 

關於這部分小幫手會和相關人員確認看是否有問題。

  • 按讚來自於
  • greg750
風期會 發文於   2023/03/24

Hi 小幫手,

此文在延伸到資訊欄位我要看是內盤或外盤成交,

而今天3/24大盤首盤是在商品盤勢這邊是紅色的『外盤』如下圖

結果資訊欄位設定的指標卻為顯現內盤如下圖,不知道是否哪裡理解錯誤

 

程式碼如下:

var: first_v(0), yester_first_v(0), _record_bidask(0), yesterday_record_bidask(0);

value1 = getsymbolField("TSE.TW", "seqno", "Tick");

if currentdate = getsymbolfielddate("TSE.TW","Date") then 
  first_v = getsymbolField("TSE.TW", "volume", "Tick")[value1-1] else yester_first_v = getsymbolField("TSE.TW", "volume", "Tick")[value1-2];

if currentdate = getsymbolfielddate("TSE.TW","Date") then
    _record_bidask = getsymbolField("TSE.TW", "BidAskFlag", "Tick")[value1-1] else yesterday_record_bidask = getsymbolField("TSE.TW", "BidAskFlag", "Tick")[value1-2]; // 內外盤標記: 1代表外盤成交(紅色), -1代表內盤成交(綠色), 0代表中立;


plot2(first_v); 
if _record_bidask=1 then setplotLabel(2,"當日首筆外盤") else if _record_bidask=-1 then setplotLabel(2,"當日首筆內盤");
plot3(yester_first_v);
if yesterday_record_bidask=1 then setplotLabel(3,"前日首筆外盤") else if yesterday_record_bidask=-1 then setplotLabel(3,"前日首筆內盤");

XQ小幫手 發文於   2023/03/27

Hello 風期會,

 

小幫手這邊測試的結果 getsymbolField("TSE.TW", "BidAskFlag", "Tick") 會回傳0,應該是因為 TSE.TW 本身不是可交易的商品,所以沒有內外盤之分。

因此導致plot2 和 plot3 的 SetPlotLabel 沒有執行。

會請相關人員確認。

感謝。

  • 按讚來自於
  • greg750
風期會 發文於   2023/03/27

好~在麻煩小幫手有更進一步資訊,在知會回文一聲,感謝

XQ小幫手 發文於   2023/03/28

Hello 風期會,

 

經和相關人員確認,TSE.TW 的 BidAskFlag 部分是如同小幫手所說,沒有交易也沒有委買委賣所以也不會有內外盤的分別。

至於還是會有內盤量/外盤量是因為該資訊是由 TSE.TW 的成分股內外盤量加總計算出的。

 

  • 按讚來自於
  • greg750
風期會 發文於   2023/03/28

謝謝小幫手資訊

 

那進一步請教,既然是由成分股內外盤量決定計算加總,是否有方法可以顯現在指標資訊,因為我想要紀錄前一天,和今天做比較。

XQ小幫手 發文於   2023/03/29

Hello 風期會,

 

小幫手不太清楚您指的 顯現在指標資訊 是什麼?

如果您要取用 TSE 昨日的內盤量,可以使用 getsymbolfield("TSE.TW", "內盤量", "D")[1]。

風期會 發文於   2023/03/29

小幫手不好意思,我沒有表達清楚,

我想要今天的大盤『首筆內外盤』的BidAskFlag資訊,顯現在指標的資訊欄位

那麼如您提到是由成份股首筆決定後計算的加總,

那麼是否可以指導該如何計算呢?感謝

XQ小幫手 發文於   2023/03/30

Hello 風期會,

 

如同小幫手上面所說,TSE.TW 不是商品,沒有交易也沒有委託價,所以也不會有內外盤 (BidAskFlag)。

 

由成分股內外盤加總的資訊是 內盤量 跟 外盤量。

如果您希望知道是如何計算的,就是把該根Bar (內盤量支援頻率為分鐘和日) 內所有成分股成交在內盤/外盤的量乘以對應價格加總起來。

 

小幫手建議您可以考慮將當日第一根Tick的指數和前一根Tick的指數相比,若大於前一根Tick的話就當作是外盤,小於前一根Tick的話當作是內盤。

 

  • 按讚來自於
  • greg750
發表回覆
Close