Author Archives: 發財橘子

選股常用語的對應程式集

愈來愈多網友,開始試著用XS來寫程式挑股票,決定進場時機,新手上路,需要老司機,我整理了一些股市專有名詞對應的語法,供大家參考。

一,整理結束

語法如下:

//盤整後噴出
input: Periods(20,"計算期數");
input: Ratio(3,"近期波動幅度%");
settotalbar(300);
setbarback(50);

condition1 = false;

if (highest(high[1],Periods-1) - lowest(low[1],Periods-1))/close[1] <= ratio*0.01 
then condition1=true//近期波動在?%以內
else return;

if condition1 and high = highest(high, Periods)
and close>close[1]*1.02
then ret=1;//盤整後往上突破

這個腳本可以挑出像下面這樣的股票

2019032301

 

二,下跌時價量背離

腳本如下

input:period(10);
input:times(5);
if close[1]*1.1<close[40]
and countif(c>c[1]xor v>v[1],period)
>=times
and close=highest(close,period)
then ret=1;

可以挑出的股票如下

2019032202

三,KD進入超賣區

腳本如下

input: Length(9), RSVt(3), Kt(3);
variable: rsv(0), k(0), _d(0);

SetBarBack(maxlist(Length,6));
SetTotalBar(maxlist(Length,6) * 4);

SetInputName(1, "天數");
SetInputName(2, "RSVt權數");
SetInputName(3, "Kt權數");

Stochastic(Length, RSVt, Kt, rsv, k, _d);

IF k<20 and _d<30
then ret=1;

這是在挑出KD值分別低於20及30的股票

四,千張大戶增加

腳本如下

value1=GetField("大戶持股人數","W",param:=1000);
value2=GetField("散戶持股人數","W");
if value1>value1[1]
and value2<value2[1]
then ret=1;
outputfield(1,value1,0,"本週大戶人數");
outputfield(2,value1[1],0,"上週大戶人數");
outputfield(3,value1-value1[1],0,"大戶增加數");
outputfield(4,value2,0,"本週散戶人數");
outputfield(5,value2[1],0,"上週散戶人數");

這腳本可以挑出千張大戶數比前一週多的股票

五,BBand出現買進訊號

腳本如下

input:length(20);
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 1);
down1 = bollingerband(Close, Length, -1 );
mid1 = (up1 + down1) / 2;

bbandwidth = 100 * (up1 - down1) / mid1;
if bbandwidth crosses above 5 and close > up1 and close> up1[1]
then ret=1;

六,本益比低於某個水準

腳本如下

input:per(12,"本益比上限");
value1=GetField("本益比","D");
if value1<per
then ret=1; 

七,近期處於上昇趨勢

腳本如下

input:Length(20); //"計算期間"

LinearReg(close, Length, 0, value1, value2, value3, value4);
//做收盤價20天線性回歸
{value1:斜率,value4:預期值}
value5=rsquare(close,value4,20);//算收盤價與線性回歸值的R平方
if value1>0 and value5>0.2
then ret=1;

八,放量起漲

腳本

if average(volume,5) > 200 and
 C> 10 and
 volume > average(V[1],20) *2 
 and close>close[1]*1.01
 then ret=1;

九,空翻多

腳本如下:

condition1 = angle(date[20], date[5]) < 0;
value1 = angle(date[5], date);
condition2 = value1 > 0;

setoutputname1("angle");
outputfield1(value1);
if condition1 and condition2 then ret=1;

十,投信第一天大買進

腳本如下

value1=GetField("最新股本");//單位:億
value2=GetField("投信買張","D");
value3=value2*close/10; //單位:萬}

 
 
condition1=value3>200 and value1<80;
 
condition2=filter(condition1,5);

if condition2 
then ret=1;

這邊有用了一個叫filter的函數,這個涵數是用來過濾一定期別內某一情況為true的次數就僅有最近這一期是true.

 

提供這些腳本,主要是讓大家可以參考,也可以直接copy之後編譯完成變成您的腳本,然後再跟其他條件整合起來一起用。

xqlite banner

法人推荐股的使用說明

在XQ裡有一個功能叫法人推荐股,整理了最近券商投顧對台股的最新評等及目標價,我每天習慣會瞄一下,看看裡頭有沒有值得進一步作功課的標的。

這個功能在全球贏家裡的選單如下圖

2019032201

在操盤高手裡則如下圖

2019032202

兩者都是在選股Menu裡頭

點撃後會呈現以下的畫面

2019032203

這裡面整理了國內sell side主要研究機構,個股的最新評級,包括預測的目標價,目標價與最新價位間的差距就是隱含上漲空間。

我個人的使用心得有以下幾個

一,投資評等先看強力買進。

如果是中立啦,區間操作啦,優於大盤啦,持有啦,這推荐的力道都不夠強勁。要特別留意的是強力買進。

舉個例子,以下是最近出現的強力買進評等

2019032206

統一投顧在3/12日對敦陽科發佈強力買進的評等,以下是敦陽科的K線圖

2019032205

除了強力買進之外,買進的股票也值得留意。

二,多留意中小型股。

權值股平常很難有什麼新鮮事,法說會大拜拜之後,大家行禮如儀,調整一下評等,交差了事,報告還沒有寫完股價都反應完了,但中小型股如果研究員勤於拜訪,會比較有機會出現資訊落差。

三,看一下過往的Credit。

法人評等準不準,可以看一下過去的credit,在個股分析裡的基本分析中,有一個機構評等的功能,其參考畫面如下

2019032204

在這個畫面裡,可以找到以前這家研究機構對這檔股票的評等,對照一下股價就知道值不值得參考了。

四,參考其他機構的評等

在第三點的那個頁面裡,可以參考其他研究單位對同一檔股票的評等,正所謂花花轎子人人抬,我一向認為,當大家手上都沒有,但都爭先恐後的想要上車時,股價短線的表現會最強。所以參考一下其他機構的評等,可以知道一檔股票的市場熱度。

五,參考法人及主力買賣超

真的看好會真金白銀的買下去,所以主力或法人應該會是買超,以敦陽科為例,請參考下圖

2019032207

研究員看好一檔股票之後,除了寫報告推荐給客戶之外,公司的自營商或服務的投信應該也會推荐,所以法人應該買超,其次,應該也會推荐給公司的大戶或甚至自己的親朋好友,所以主力也應該是買超,另外代操體系也會收到同樣的建議,所以前十大綜合券商也應該是買超。

例如三月八日元富投顧把明基材的評等提昇為買進,

2019032208

當天真的三大勢力都有買超,顯示這可能是有吸引到真金白銀。

六,選股不如擇時

我在使用這個功能時,一向都是我覺得這個盤有搞頭時才參考,如果覺得盤不好,就算了,不然常常會因為好奇心而手癢被市場電,特別是在空頭市場如果太好奇,常常是去接人家的燙手山芋。

以上大致是我的使用心得,大家看了評等後有興趣看報告的,請直接看券商網站,如果要客戶才能看,那就開個戶囉。

 

xqlite banner

從籌碼變化預測大盤後市多空方向

籌碼大數據這個模組,選單裡第一個就是“市場籌碼”,這個項目裡集合了各種籌碼數據與加權指數間的對照與比較,我用這些數據來協助研判大盤的後續方向。

市場籌碼裡,用來協助研判大盤後市的,除了大家很常見到的三大法人,信用交易資券數據之外,也包括了庫藏股,當沖數據,官券買賣超及大戶買賣超等等數據,具體共分成下圖這幾類

籌碼大數據裡的市場分析之籌碼指標

接下來就一類類的跟大家說明使用的方法

一,申報轉讓

籌碼大數據裡的市場分析之申報轉讓

這個項目裡是統計所有上市公司每天申報轉讓的家數,人數及總市值。

我有注意到,在市場高處不勝寒時,申報轉讓的家數及人數都會明顯的增加。

二,申請執行庫藏股的家數及金額

籌碼大數據裡的市場分析之庫藏股

這個項目在市場快見底時,會有很多家同時跳出來說要執行庫藏股,而且金額也會比平常多很多,上市公司最清楚自己的營運狀況,也最清楚知道自己的價值,現在大家愈來愈精,要靠宣佈執行庫藏股來撐股價,之後不執行的公司,愈來愈沒有credit,如果大家都有志一同的宣佈要做庫藏股,我會視為是一個空頭市場接近尾聲的訊號。

三,大戶券商的買賣超情況

籌碼大數據裡的市場分析之券商分級大券商

我會留意每天交易金額超過十億的大券商分點合計的買賣超情況,基本上這些點就是市場的意見領袖,也就是所謂的人氣之所在,從上圖大家可以發現,這些大戶們偏多,大盤就上漲,這些人賣超,盤就很難好。

四,散戶分點的整體買賣超情況

籌碼大數據裡的市場分析之券商分級小券商

從下圖可以看到,每天成交量不到一千萬的分點們,小散戶還常常是反指標,散戶通常是下跌時買進,一漲就賣出,配合第三個指標,基本上大戶買散戶賣是多頭,大戶賣散戶買則後市看跌。

五,當沖數據

籌碼大數據裡的市場分析之現股當沖

這裡的當沖張數是現股當沖及資券互抵兩個數字的加總,大家可以發現,當沖比率走高時,往往代表大家持股信心不足,只想賺當天差價,等到多頭趨勢明顯時,波段資金進來,當沖佔比就下降了。

六,借券賣出

籌碼大數據裡的市場分析之借券

這個數字是大咖的法人及大戶作空的指標,從借券賣出餘額可以看到看到大咖們作空的力道。

七,前十大綜合券商總公司

籌碼大數據裡的市場分析之前十大綜合券商總公司

之前有跟大家分享過,我認為前十大綜合券商總公司的買賣超,代表的是代操的法人動向,而代操的資金做的比較活,所以大家可以從黃線的累計買賣超趨勢,了解法人對於大盤後市的態度。

八,八大官股券商

籌碼大數據裡的市場分析之八大官股行庫

這個數據是用來研判政府相關基金護盤力道的指標,這幾年政府基金愈做愈活,大跌大護,反彈有賺就跑,從這個指標可以看到他們的動向。

以上是市場籌碼裡幾個我常用指標的應用方法,當然我也會參照三大法人及主力的相關數據,但因為這太老生常談,我就不多著墨。

原物料最新報價~景氣循環股的交易法寶

在這一版的XQ操盤高手中,有特別把產業模組獨立出來讓User可以單獨購買這個模組,這個模組是我在使用XQ全球贏家時,一直都非常喜歡的功能,我在決定景氣循環股,如Dram,太陽能,塑化股,鋼鐵股的進出場點時,一定會參考這個模組裡的最新原物料報價,這一篇就來跟大家分享我使用這一頁的心得。

我1989年剛入股市時,當時主要的類股除了金融之外就是紡織,塑化及鋼鐵股,當年有一本刊物叫作市場與行情,裡頭有各種紡織品,塑化品及鋼鐵產品的最新價格,當時我們都透過這本刊物了解上市櫃公司相關產品的最新價格,因為景氣循環股有個特性,那就是一旦供不應求,價格開始上揚時,基於預期心理,需求方會增加庫存,對價格有助漲的效果,一旦預期價格下跌,會延緩及降低補庫存的時點及庫存量,進而造成價格下跌,需求反而減少的促跌效果,而且,景氣循環股一般是連續性生產,而且都是資本密集,無法以量制價,也無法在價格上漲時馬上增加供應量,所以景氣循環股一旦出現價格往上的預期心理,隨後往往會出現一波的上漲行情,股價往往也會跟著衝一波,所以我們會密切關注景氣循環股的對應產品價格,一旦判定市場會有明顯的預期心理,那就準備執行對應的買進或賣出的動作。

XQ基於這樣的需求,整理了80多種的原物料價格及各種產業數據,讓使用者每天透過這一頁就可以了解全球主要原物料的最新價格。

2019031301

 

最近最明顯的例子是DRAM,各位只要點撃原物料最新報價的商品名稱,就可以看到跟下面這張圖類似的該商品價格長期走勢圖

DDR3PRICE

從上面這張圖,我們會發現DRAM的行情是從2016年年中開始往上走,在2017年年底就見頂了。

回頭對照看一下南亞科的股價

2408週線

南亞科的股價一直要到DRAM的漲勢很確立之後的2016年11月下旬,才開始展開了一整年的多頭行情。

前幾天我看到媒體在說南亞科去年EPS12.8,今年會配到6.5到7元,目前股價才60元,所以殖利率是12-13%,如果您有看到DRAM目前的價位,就知道現在南亞科的獲利跟去年已經無法相比擬了,南亞科能不能買,不在於殖利率是不是兩位數,而是DRAM的價格在這邊盤整完之後是要往上還是往下走。

我們從DRAM看南亞科,也可以從大陸的水泥售價看台泥及亞泥,我們來看下面這兩張圖

重慶水泥

1102

重慶水泥從2018年起一直在高檔,連帶的也讓亞泥這個大牛股的股價從30元漲到40元。

類似亞泥及南亞科這樣的情況,都可以透過最新原物料報價這個頁面每天去找出產品價格大漲或大跌的股票。

我自己在使用時有幾個小心得

1.產品價位止跌時,如果是大跌後的止跌,企業獲利數字是最壞的時候,股價還不會動,一直要到產品價格漲了一陣子之後,市場相信最壞的時候過去了,這時候產品價格進入主昇段,股價也開始進入多頭趨勢。

2.要同時留意同一系列的產品,這些產品會有同漲同跌的情況,例如像塑膠粒PE,PP,PS,SM,ABS,PVC等,價位連動的情況很明確,鋼鐵類也多少有這樣的情況,很少我這邊風景獨好的情況,所以如果師兄弟都很慘,千萬別認為價格上漲就是買進訊號,大家都一起好才是好。

3.景氣循環股供給短期不會有太大變化,影響價格的往往是對大環境未來的預期心理,所以在研判價格的反彈能否帶動產品價格由空翻多,往往要跟整體景氣的後續發展合在一起看。

 

有本書專門在寫景氣循環股

大家有興趣可以看一下這本書,然後利用“原物料最新報價”這一頁來挑出一些可以納入觀察名單的股票。

 

 

均線剛往上彎且股價與均線黃金交叉的寫法

有網友來信詢問如何寫一個腳本,來找出40日均線剛往上彎且股價同步突破40日均線。

我揣摩網友的想法,可能是想找到長期下跌趨勢剛剛確認結束的股票,就像下面的圖

2910031001

 

腳本樣本如下

if barfreq<>"Min"and barinterval<>10 then raiseruntimeerror("請使用十分鐘線");
input:period(40,"均線計算區間");
//宣告均線期別的參數
var:ma(0);
//宣告移動平均線的變數名稱
ma=average(close,period);
//指定ma這個變數就是移動平均線的值
if trueall(ma[1]<ma[2],10)
//過去十期前一根均線值都比前前根均線值還低
//代表過去十天的均線值都是下降的
and ma>ma[1]
//今天的均線值大於前一根bar的均線值
//以上兩行敘述代表均線剛上彎
and close cross over ma
//最新價位突破移動平均線

then ret=1;

由於網友要寫的是十分鐘線,所以我這裡頻率是指定十分鐘線,我用這個腳本回測了一下,表現並沒有比指數好。

檢視那些虧錢的交易,我發現通常都是進場點剛好出現在長期下跌趨勢反彈波的最高點,建議要再搭配一些如主力買超等籌碼面的選股條件來一起跑可能會有比較高的勝率。

 

 

如何找到市場上真正的高手,然後跟單??

這幾年,市場上開始出現不少跟單系統,讓一般散戶可以跟隨高手下單,高手買啥就跟著買,高手出場就跟著出場,這一招不算新招,當年我認識的一個市場大戶,就曾經委託工讀生,每天去交易所抄某一個基金經理人進出分公司裡,買進金額大的股票。

這些年交易所每個分公司的進出數據已經可以賣給系統廠商,所以我就建議同仁做了一個高手券商的功能,模仿當年那位大戶的做法,但由於不知道那些基金經理人在那裡下單? 也不知道他們是不是一下單就真的後面基金的資金就會進場拉抬? 所以就乾脆統計每個月分公司當日交易金額超過一定數字的交易,然後看看那個分公司裡,這樣的交易,長期下來勝率高,報酬率也高,這些我們就稱之為高手券商,然後接下來就讓電腦把這些券商每天新增加的高金額部位列出來,這樣,就可以做出一個隔日版的跟單系統了。

這個功能目前是放在籌碼大數據的市場籌碼裡,點了市場籌碼後,左邊會出現這樣的選單,

2019030803

 

點選高手券商英雄榜,就會看到以下的畫面

 

2019031801

透過這個畫面可以根據計算天期及每筆過濾金額,找出所有分公司在一定期間裡,超過一定金額的交易,然後計算出是那幾個分公司在這期間的交易勝率高,平均報酬率也高。

以上圖為例,我是設一年內每筆交易金額超過三百萬的交易

這樣就可以找到過去一年裡最會賺錢的三十家分公司,也就是有高手隱身其中的分公司

接著每天點選高手券商股票進出,

2019030802

就可以找到最近一個交易日,這些高手在買那些股票。

然後我們就可以一檔一檔研究這些高手買的股票,背後可能的故事,再來決定那一檔值得我們跟一跟。

如何計算兩個日期間的各項數值~以區間千張大戶增加張數為例

有網友在問說想要計算某日到某間之間的某個數值,而不是從現在到以前某日的數值,不知道要如何計算,剛好昨天被問到一個需求,有客戶想要知道有那些中小型的股票,在這一波指數盤底期間大股東有進場回補的,所以我想今天就來藉這個題目,介紹一下如何計算兩個特定日期之間相關數據的運算。

首先,如下圖

2019030701

這一次指數是在去年10/26日打了第一支腳,然後在今年的01/04打了第二根腳,我們就把這兩天中間的時間當成是大盤在打底的時間。

接下來我就寫了一個程式來尋找在這段期間內千張大戶有明顯回補股票的公司,選股腳本如下

input:startdate(20181026,"區間起始日");
input:enddate(20190104,"區間結束日");
input:vl(2000,"差額限數下限");
value1=getbaroffset(startdate);
value2=getbaroffset(enddate);
value3=GetField("大戶持股張數","W",param := 1000)[value1];
value4=GetField("大戶持股張數","W",param := 1000)[value2];
value5=GetField("大戶持股比例","W",param := 1000)[value1];
value6=GetField("大戶持股比例","W",param := 1000)[value2];
if value4-value3>vl and value6>value5 then ret=1;
outputfield(1,value3,0,"期初張數");
outputfield(2,value4,0,"期末張數");
outputfield(3,value4-value3,0,"差額張數");

透過這個腳本,跑出的股票如下

2019030602

這個腳本裡,是用getbaroffset這個函數來取得某特定日期,是位於整個K線數列裡的第幾根BAR,不同的K線頻率,這函數會自動去分辨是第幾根BAR,所以這函數用在日線及週線,回傳值會不一樣。

透過這個函數,可以從已知日期得到其在序列中的第N根BAR,這樣就可以找出特定欄位當時的值了。

至於這個選股策略,在應用上,網友的意思是如果大盤盤底時間大股東有明顯回補動作的,應該是屬於今年展望比較樂觀的,或是大股東覺得股價已委屈的。

結合多個選股條件的綜合選股方法

昨天介紹的作法被朋友打槍,他說這太難,大部份的人選股沒那麼複雜,而且沒有必要把高勝率的腳本綜合一起看,符合其中一個就可以留意了,他是個作短線的人,覺得選股打不贏內線,應該是透過一些條件,挑出一些符合多個多頭股票會有的共同特徵的標的,然後再從盤中的表現來決定怎麼操作,他建議我列出轉強股會有的共同特徵,而且是大家都看得懂的,然後幫大家計算出那幾檔股票符合最多這些特徵,進出場的事情交給大家自己來處理。

雖然覺得他的講法沒有完全都對,但還是有一定的道理,所以我列了二十個一般投資人都看得懂的選股條件,包括價值分析,籌碼分析,技術分析等等面向,然後透過計數器,挑出符合一定數量條件的股票

我寫的綜合選股腳本如下

input:lowlimit(9,"符合條件數下限");
var:counts(0);//宣告計數器
counts=0;//每根bar計算前計數器要歸零
//條件一: 本益比小於12
value1=GetField("本益比","D");
if value1<=12 then counts=counts+1;
//條件二:股價淨值比小於2
value2=GetField("股價淨值比","D");
if value2<2 then counts=counts+1;
//條件三:殖利率大於4
value3=GetField("殖利率","D");
if value3>4 then counts=counts+1;
//條件四:開盤委買量創20日高點
value4=GetField("開盤委買","D");
if value4=highest(value4,20) 
then counts=counts+1;
//條件五:佔全市場成交量比創20日高點
value5=GetField("佔全市場成交量比","D");
if value5=highest(value5,20)
then counts=counts+1;
//條件六:月營收維持兩位數成長
value6=GetField("月營收年增率","M");
if value6>=10 then counts=counts+1;
//條件七:現金股利超過一元
value7=GetField("現金股利","Y");
if value7>=1 then counts=counts+1;
//條件八: 外資買超
value8=GetField("外資買賣超","D");
if value8>=300 then counts=counts+1;
//條件九: 投信買超
value9=GetField("投信買賣超","D");
if value9>=300 then counts=counts+1;
//條件十: 董監事持股高於一定比例
value10=GetField("董監持股佔股本比例","D");
if value10>=25 then counts=counts+1;
//條件十一:主力連三日買超
value11=GetField("主力買賣超張數","D");
if trueall(value11>300,3) then counts=counts+1;
//條件十二:近一週千張大戶比前一週多
if GetFieldDate("大戶持股人數","W") <> date then begin
value20 = GetField("大戶持股人數","W",param := 1000)[1];
value21 = GetField("大戶持股人數","W",param := 1000)[2];
end
else begin
value20 = GetField("大戶持股人數","W",param := 1000);
value21 = GetField("大戶持股人數","W",param := 1000)[1];
end;
if value20>value21
then counts=counts+1;
//條件十三:地緣券商買超
value12=GetField("地緣券商買賣超張數","D");
if value12>100 then counts=counts+1;
//條件十四:分公司淨賣超家數超過淨買超的兩倍
//代表籌碼被收集
value13=GetField("分公司淨買超金額家數","D");
value14=GetField("分公司淨賣超金額家數","D");
if value14>2*value13 then counts=counts+1;
//條件十五: 近三日動量指標有突破零
if barslast(Momentum(Close, 10) Crosses Above 0)<=3
then counts=counts+1;
//條件十六:近三日有RSI黃金交叉
if barslast(RSI(Close, 5) Crosses Above RSI(Close, 10))<=3
then counts=counts+1;
//條件十七:關鍵券商買超
value15=GetField("關鍵券商買賣超張數","D");
if value15>0 then counts=counts+1;
//條件十八: 股價突破兩倍的真實波動區間
value16=average(truerange,20);
value17=average(close,20)+2*value16;
if close crosses over value17 
then counts=counts+1;
//條件十九:上漲角度突破30度
value18=rateofchange(close,20);
value19=arctangent(value18/20*100);
if value19 crosses over 30
then counts=counts+1;
//條件二十: 出量
if volume >=average(volume,20)*1.3
then counts=counts+1;
if counts>=lowlimit then ret=1;
outputfield(1,counts,0,"符合條件數");

這個腳本前天跑出來的股票清單如下

 

不過今天介紹這個方法的主要目的還是在說明計數器的用法,以及barslast的概念,大家不見得同意我這二十項條件的設法,透過計數器及barslast的語法,大家可以自行設計自己的綜合選股法。

 

intrabarpersist的用法

intrabarpersist是用在逐筆洗價時的一個語法,XS程式執行時,變數的值是延續前一根Bar的值,然後跟據最新一根的價位來計算最近一根的值。

interbar1

但這個邏輯在使用逐筆洗價時,在有些特別的情況下,必須在同一根bar,把之前進來的數據,當成前一根的數據來計算新進的數據,這時候就可以使用intrabarpersist這個宣告。

intrabar2

這個函數最常被用在計算累計大單這樣的腳本中,下面就是一個很典型的應用範例

intrabar3

這樣的話,就可以把每一筆的大單都累計進來了,當超過N筆單時就可以觸發訊號。