除權行情的檢討腳本該怎麼寫

By | 2015-07-02

有網友問到,XS能不能透過語法,找出某特定日之後,一段時間股價的漲跌幅?例如股東會後,法說會後,或是開放信用交易日之後,除權除息日之後有那些股票漲幅較大的。

我們公司的高手高手高高手寫了一個函數來解決這個問題,函數的腳本如下:

1Input: target(numeric);
2
3variable: i(1);
4
5if target > date then
6begin
7GetBarOffset = 0;
8return;
9end;
10
11while true
12begin
13Value1 = date[i];
14if Value1 <= target then
15begin
16GetBarOffset = i;
17return;
18end;
19i = i + 1;
20end;

這個函數可以算出特定日期是從現在開始往回算的第幾根BAR

它的用法是Getbaroffset(某日期);

例如我們在7/2日寫出value1=getbaroffset(20150701);

意思是昨天是今天算來的第幾根bar,那麼value1就=1。

 

運用這個函數,可以寫出下面這個腳本來找出特定日期之後,到現在個股的漲跌幅

1Input: type(1);
2SetInputName(1, "1:股東會,2:除息日,3:法說日");
3
4Input: dist(20);
5SetInputName(2, "事件發生在最近幾日");
6
7Input: ratio(1);
8SetInputName(3, "上漲%");
9
10switch(type)
11begin
12case 1:
13Value1 = GetField("股東會日期");
14case 3:
15Value1 = GetField("法說會日期");
16case 2:
17Value1 = GetField("除息日期");
18end;
19
20If datediff(Date, Value1) >= 0 and datediff(Date, Value1) <= dist then
21begin
22// 計算今日到'Value1'那一天的漲跌幅
23//
24Value2 = GetBarOffset(Value1);
25Value3 = RateOfChange(Close, Value2);
26if Value3 >= ratio Then Ret = 1;
27end;
28
29OutputField(1, Value1); setoutputname(1, "發生日期");
30OutputField(2, Value2); setoutputname(2, "距離今日幾天");
31outputfield(3, Value3); setoutputname(3, "區間漲幅(%)");

抱歉的是,我們目前選股中可以拿來計算的事件欄位只有除權日,像法說會啦,股東會啦,這些都還沒有support,(我會請同事們加進來)所以就先拿這腳本來算除息後距今20天內的股票漲幅超過1%的有那些,選出來的股票及漲跌幅排列如下圖。

 

0702
我算了一下,一共31檔,漲幅低於1的有65檔
跌幅較大的如下圖
070201

從這些股票我們大致可以看得出來,先前有先拉的,基本面展望比較不明朗的,就不要太期待填權填息行情了。