有網友問到,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%的有那些,選出來的股票及漲跌幅排列如下圖。
我算了一下,一共31檔,漲幅低於1的有65檔
跌幅較大的如下圖
從這些股票我們大致可以看得出來,先前有先拉的,基本面展望比較不明朗的,就不要太期待填權填息行情了。