單日三大法人同買股

  •   426 
  • 最後發表   Hk  2016 十二月 19
Hk 發文於   2016/12/18

寫了一個簡單程式想撈出過去20天內, 單日三大法人同買股, 並計算同買天數

發現不論是用Truecount 或 手動loop 計算天數, 出來的結果都不太正確

(1) Truecount

variable: i(0);
settotalbar(20);

value1 = GetField("外資買賣超", "D");
value2 = GetField("投信買賣超","D");
value3 = GetField("自營商買賣超","D");

Condition1 = TrueAny(value1 > 0 and value2 > 0 and value3 > 0,20);
Value4 = TrueCount(value1 > 0 and value2 > 0 and value3 > 0, 20);

IF Condition1 Then
Begin
  Ret = 1;
  OutputField(1,Value4,"同買天數");
End;

(2) For 迴圈

variable: i(0);
settotalbar(20);

value1 = GetField("外資買賣超", "D");
value2 = GetField("投信買賣超","D");
value3 = GetField("自營商買賣超","D");

Condition1 = TrueAny(value1 > 0 and value2 > 0 and value3 > 0,20);
Value4 = TrueCount(value1 > 0 and value2 > 0 and value3 > 0, 20);

for i = 0 to 19
    if value1[i] > 0 and value2[i] > 0 and value3[i] > 0 then value4 = value4 + 1;

IF Condition1 Then
Begin
  Ret = 1;
  OutputField(1,Value4,"同買天數");
End;

 

結果如附檔, 用TrueCount 撈出來的同買天數幾乎都是0, 用For迴圈的天數大部分又超過20

請問問題出在哪裡? 感謝!

附加文件

XQ小幫手 發文於   2016/12/19

腳本一用 truecount 計算的是 條件“連續”成立的次數,可以參考這邊的說明

腳本二用 for迴圈,算的是“20天內成立的天數”。二者計算出來的數值當然是不一樣的。

同時,腳本二在每次計算的時候,忘記把value4歸零,導致你跑出來的值是錯誤的(超過20就有問題咩)

 

你可以看一下這個指標函數跑出來的不同計算方法間的差異

value1 = GetField("外資買賣超", "D");

value2 = GetField("投信買賣超","D");

value3 = GetField("自營商買賣超","D");

 

if value1 > 0 and value2 > 0 and value3 > 0 then value4 = 1 else value4 = 0;

if value4 = 0 then value5 = 0 else value5 = value5 + value4;

value6 = summation(value4,20);

 

plot1(value4,"三大法人同買");

plot2(value5,"三大法人連續同買"); // truecount算出的結果

plot3(value6,"近20日三大法人同買"); // for迴圈算出來的結果

 

  • 按讚來自於
  • Hk Chen
發表回覆
Close