盤中大戶買賣超計算問題

  •   541 
  • 最後發表   atsushi  2024 十二月 13
atsushi 發文於   2024/11/23

請問

想做監控盤中大戶買賣超的監控回報

監測到最新狀況已買超1000張就觸發監控

例如

買賣超從0到1000,條件符合,觸發監控

買賣超從-2000到-1000,條件符合,觸發監控

想問是否有建議的函數可以使用?

希望有可以直接取得今日盤中買賣超最低量、最大量的函數

如果沒有,官方能考慮開發新增?

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/11/24

希望有可以直接取得今日盤中買賣超最低量、最大量的函數。

Ans:目前沒有這種函數。系統函數著眼於是否大部份人會使用。個別需求的函數,可能要自己開發。

你可以用GetField("買進大單量", "1") + GetField("買進特大單量", "1") - (GetField("賣出大單量", "1") + GetField("賣出特大單量", "1"))計算每分鐘的大戶買賣超。

atsushi 發文於   2024/11/24

我知道可以用其他做法去實現

但如果要用迴圈式去跑今日盤中最高低的買賣超量,可能很耗費效能、不切實際

所以才這樣問

atsushi 發文於   2024/11/24

請教,以下這種作法的思路,是否正確可行?

 

value= TrueCount(GetField("買進特大單量", "1") -GetField("賣出特大單量", "1")>0, 開盤至今分鐘數)

If(value>0) 時執行

Summation(GetField("買進特大單量", "1")-GetField("賣出特大單量", "1"), value) > 1000 觸發條件

或這樣寫

 

Summation(GetField("買進特大單量", "1"),value)-Summation(GetField("賣出特大單量", "1"), value) > 1000 觸發條件

虎科大許教授 發文於   2024/11/24

TrueCount是由現在往前計算連續符合條件的期數。你的寫法只會在某根K棒買進特大單大於賣出特大單時才加總符合條件連續期數的買進特大單與賣出特大單差額的總量。若這個邏輯符合你的想法,程式運作是可行的。

atsushi 發文於   2024/11/24

如果從最低量到目前量,這段區間要忽略中間的震盪量,這個做法應該就不符合了,只能適用連續急拉的狀況

我找不到可以直接抓盤中買賣超的最低和最高量的函數

SimpleLowestBar或Extremes這類的函數雖然好像可以抓極值,但買賣超張數必須計算才能取得

也就是說,上述兩個函數的數列參數欄位應該不能直接帶入這個計算? GetField("買進特大單量", "1")-GetField("賣出特大單量", "1")

atsushi 發文於   2024/11/24

我比較希望官方至少給一個盤中大單、小單的累積買賣超數列欄位...

虎科大許教授 發文於   2024/11/24

你若開盤前啟動策略,可逐一計算每根K棒特大買單量與特大賣單量的差額,並計算最低及最高量。

XS小幫手 發文於   2024/12/02

atsushi 您好,

如許教授所說,您可以改成用日頻率統計GetField("買進大單量", "D") + GetField("買進特大單量", "D") - (GetField("賣出大單量", "D") + GetField("賣出特大單量", "D")),賦值給一個變數去判斷。

這不需要用到迴圈,目前我們將資料做大小單的分類,再讓用戶去自行設計所需的大小單組合,會比較有彈性。

atsushi 發文於   2024/12/13

atsushi 您好,

如許教授所說,您可以改成用日頻率統計GetField("買進大單量", "D") + GetField("買進特大單量", "D") - (GetField("賣出大單量", "D") + GetField("賣出特大單量", "D")),賦值給一個變數去判斷。

這不需要用到迴圈,目前我們將資料做大小單的分類,再讓用戶去自行設計所需的大小單組合,會比較有彈性。

之前有寄信詢問其他問題,已經超過一周多,都沒回應,沒收到信?不想回信?

XS小幫手 發文於   2024/12/13

atsushi 您好,

您的通知我們有收到,只是尚在排隊當中

您可以用以下腳本為範例去修改  

if date <> date[1] then value1 = 1 else value1+=1;
value2 = GetField("買進大單量", "D") + GetField("買進特大單量", "D") - (GetField("賣出大單量", "D") + GetField("賣出特大單量", "D"));   //當日累積的特大單買賣超
value3 = simplehighest(value2, value1);   //當日最高的特大單+大單買賣超
value4 = simplelowest(value2, value1);    //當日最低的特大單+大單買賣超

或者是可以以這樣的邏輯去設計

if isfirstcall("date") then begin
      value1 = 0;
      value2 = 0;
end;

value1 = GetField("買進大單量", "1") + GetField("買進特大單量", "1") - (GetField("賣出大單量", "1") + GetField("賣出特大單量", "1"));
if  value1 > value2 then value2 = value1; //value2 = 當日最高的特大單+大單買賣超


但還是建議您寫完腳本後,用print去檢查您的腳本是否有符合需要的方向

發表回覆
Close