累積成交量量比

  •   509 
  • 最後發表   風期會  2024 十月 22
風期會 發文於   2024/10/08

Hi 小幫手請教

我目前腳本寫法是如下,但發現盤中的負荷太大,是否有更節省能源寫法呢?感謝指教

if time>=150000 or time<050000 then value99 = getsymbolField("FITXN*1.TF", "V", "D")
else if time>=084500 and time<134500 then value99 = getsymbolField("FITX*1.TF", "V", "D");

value1 = getbaroffset(getfield("Date", "D")[1], time);
value2 = getbaroffset(getfield("Date", "D")[2], time);
value3 = getbaroffset(getfield("Date", "D")[3], time);
value4 = getbaroffset(getfield("Date", "D")[4], time);
value5 = getbaroffset(getfield("Date", "D")[5], time);
value6 = getbaroffset(getfield("Date", "D")[6], time);
value7 = getbaroffset(getfield("Date", "D")[7], time);
value8 = getbaroffset(getfield("Date", "D")[8], time);
value9 = getbaroffset(getfield("Date", "D")[9], time);
value10 = getbaroffset(getfield("Date", "D")[10], time);
value11 = getbaroffset(getfield("Date", "D")[11], time);
value12 = getbaroffset(getfield("Date", "D")[12], time);
value13 = getbaroffset(getfield("Date", "D")[13], time);
value14 = getbaroffset(getfield("Date", "D")[14], time);
value15 = getbaroffset(getfield("Date", "D")[15], time);
value16 = getbaroffset(getfield("Date", "D")[16], time);
value17 = getbaroffset(getfield("Date", "D")[17], time);
value18 = getbaroffset(getfield("Date", "D")[18], time);
value19 = getbaroffset(getfield("Date", "D")[19], time);
value20 = getbaroffset(getfield("Date", "D")[20], time);

value100 = 
(value99[value1] + value99[value2] + value99[value3] + value99[value4] + value99[value5] +
value99[value6] + value99[value7] + value99[value8] + value99[value9] + value99[value10] +
value99[value11] + value99[value12] + value99[value13] + value99[value14] + value99[value15] + 
value99[value16] + value99[value17] + value99[value18] + value99[value19] + value99[value20])/20;

if value100 <> 0 then value51 = value99 / value100 - 1;

if value51 > 0 then plot1(value51, "出量")
else if value51 < 0 then plot2(value51, "量縮");

plot3(average(value51,13), "量均");

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

你目前的做法是每個Time往前抓過去20天同Time的成交量,並加總這20個成交量,然後用今天這個Time的成交量與過去20天加總的成交量計算變動率。要改良程式效率,可以從程式在跑K棒時就累加並使用陣列記錄每個Time的成交量。

  • 按讚來自於
  • greg750
XS小編 發文於   2024/10/15

Hello 風期會,

 

小編補充,除了用陣列來處理外,由於都是取固定長度 (當下時間向前N天) 的資料,所以您可以直接取對應的前期值 (ex. 台指期日盤長度為300,日夜盤則為1140),就可以取到前N日相同時間的資料。

  • 按讚來自於
  • greg750
風期會 發文於   2024/10/16

謝謝許教授及小幫手,了解了

XS小編 發文於   2024/10/22

Hello 風期會,

 

小編補充,您也可以使用陣列來保存相對位置的資訊。

舉例來說:

array: rec1[1440, 2](0);

 

if date <> date[1] then value1 = 1 else value1 += 1;

 

rec1[value1, 1] = rec1[value1, 2];

rec1[value1, 2] = getfield("Volume", "D");

 

這樣 rec1[value1, 2] 就會是當下K棒的日累積成交量,rec1[value1, 1] 則是前一日相同時間位置K棒的日累積成交量。

須注意這邊換日是用 date <> date[1],如果是用在期貨上的話會需要作調整 (ex. time[1] < 050000 and time >= 084500)。

發表回覆
Close