Author Archives: 發財橘子

盤中即時主力的動向怎麼抓?

今天被問到一個好難的問題,網友的問題是:“如何在盤中就找出主力的動向“

我想了一下,跟大家分享一個腳本,這個腳本是我用來嚐試在盤中去監控今天主力可能站在買方或賣方的股票,我寫的腳本如下

if barfreq<>"tick" then raiseruntimeerror("資料頻率請改用tick");
input:valuelowlimit(500,"單筆成交下限,單位萬元");
if q_Last*q_TickVolume/10>valuelowlimit

and q_BidAskFlag=1//外盤成交
then ret=1;

這裡是挑出外盤買進的大單,如果要挑出內盤賣出的大單,則請把

q_BidAskFlag=1改成=-1

接下來我們就把這個警示腳本加進策略雷達
2018062201

記得一定要指定頻率設成tick 我自己會把這個腳本獨立成一個螢幕來監控,所以會設一個自訂的頁面,設法如下 2018062202

先是開啟新頁,選即時監控,然後設定如下 2018062203 然後我另外切一欄放個股分時圖,組出來的畫面如下圖 2018062204以上是我自己在盤中抓主力的方法,我這裡對大單的定義是單筆成交超過500萬,我有把它設成參數,大家可以改成自己對大單的定義金額, 現在由於還不是逐筆撮合,所以單筆成交金額可能要設高一點。 以上大致是我的作法,僅供參考。

籌碼分析中的券商分公司買賣數據目前在XS上的應用

不少XS的使用者提出來希望可以把券商分公司的買賣數據,拿來寫成腳本,例如可以盯住幾個隔日沖特定券商分點的標的,或是盯住幾家法人及代操大戶有在進出的分公司。這部份我們還在研究如果用簡單的語法來解析這些數據,短期內還是無法滿足各位的需求,在此僅能跟大家說聲抱歉。

目前跟券商分公司相關,可以拿來在XS上寫腳本的欄位主要是下圖幾個

2018062001

 

我自己寫的腳本中我覺得還不錯用的,大致有幾個

//跑全部股票 停損停利都是7%

value1=GetField("分公司買進家數");
value2=GetField("分公司賣出家數");
value3=value2-value1;
value4=countif(value3>40,10);
//計算買進家數與賣出家數的差距夠大的天數
if value4>6 
and GetSymbolField("tse.tw","收盤價","D")
>average(GetSymbolField("tse.tw","收盤價","D"),10)
and close[30]>close*1.1

then ret=1;

這個出的股票不多,但勝率不錯,如果想要出多一點訊號,把條件放寬一些也是可以的

 

另外雲 端策略中心裡有個腳本我把它改成下面這個,

// 作多, 持有期別: 20
//
input:period(20);
value1=GetField("分公司賣出家數")[1];
value2=GetField("分公司買進家數")[1]; 
 
 if linearregslope(value1,period)>0
 //賣出的家數愈來愈多
 and linearregslope(value2,period)<0
 //買進的家數愈來愈少 
 and value1>200
 and average(volume,5)>=10000
 
 then ret=1;

雖然勝率不是很突出,但一些飆股會挑到,例如下面這兩檔

2016082002

2016082003

所以我會把挑出來的股票再用其他的盤中sensor去跑,挑出真的要動的股票

再次跟大家說聲抱歉。

 

 

 

移動停利的腳本寫法

有網友問到如何撰寫移動停利的腳本,我以RSI低檔回昇的進場腳本為例,請優秀的同仁寫出對應的停利腳本作為出場腳本,跟大家說明如何用停利腳本來作回測。

首先,RSI低檔回昇的腳本如下

if rsi(close,12) cross over 20
then ret=1;

那麼這個進場腳本的移動停利腳本寫法可以如下

input:ratio(10);
//設定回檔幅度

//用condition1來代表進場的觸發條件
condition1=false;

if rsi(close,12) cross over 20
then condition1=true;

value1=barslast(condition1);
//計算上一次觸發到現在共歷經幾根bar
value2=highest(high,value1);
//計算觸發後到目前為止的最高價

if close*(1+ratio/100)<value2
then condition2=true
else condition2=false;
value3=barslast(condition2);
if value3 cross under value1 then ret=1;
//觸發移動停利

這當中用condition1代表進場的條件,用barslast來計算符合進場條件後至今共有幾根bar,再拿這數字去找出條件成立後的最高點,接下來就是計算最新價跟這最高價之間是否差了一成以上,如果是的話就是出場條件成立。如果股價往上走,這個自觸發後以來的最高價就會一直走高,也就達到移動停利的目的。

接下來就可以把這個腳本加在回測的出場設定中  如下圖

2018061901

這樣就可以在回測中做到移動停利了。

大家可以把自己的進場腳本設為condition1的條件,其餘的,follow這個出場腳本的寫法就可以作出特定進場策略的移動停利腳本了。

 

以週轉率為例,介紹自訂函數及其應用

網友希望可以訂出一個選股條件,這個條件是個股的近五日平均週轉率要高於二十日平均週轉率。

首先,因著週轉率的公式是成交張數除以發行張數,我們可以先自訂一個叫turnoverrate的函數,它的腳本如下

input:period(numericsimple);
value1=GetField("普通股股本","Q")*10000;
value2=average(volume,period);
if value1<>0
then value3=value2/value1*100;
turnoverrate=value3;

要寫自訂函數的眉角有幾個

1.要先確定新增腳本時勾選的是函數腳本

2.一開始命名就要取好函數的名稱,例如我是取turnoverrate

3.在設參數的時候必須宣告參數的資料型態,例如這裡用period來代表計算天期的參數,天期的參數是一個絕對的整數值,所以就用numericsimple。

4.計算出來的週轉率值再用trunoverrate=xx這樣的方式來指定該數值就是函數值

有了這個函數,上述的選股條件就很好寫了

if turnoverrate(5)>turnoverrate(20)
then ret=1;
outputfield(1,turnoverrate(5),1,"5日平均週轉率");
outputfield(2,turnoverrate(20),1,"20日平均週轉率");

用這個條件剛剛挑出來的股票如下圖

2018052301

這樣就可以把週轉率列為選股條件之一了。

 

私房策略分享之獲利穩定公司落難時

之前有跟大家分享過,大跌後的股票,進場抄底勝率較大,我寫了一個60天內跌四成的腳本,拿所有普通股去回測過去五年,停損停利都設兩成,勝率剛好六成,但交易次數多達4176次,平均一年800次,一般人不會這樣交易。

這個腳本如下

input:n(40,"下跌的幅度");
input:period(60,"計算天數");
if close*(1+n/100)<close[period-1]
then ret=1;

這三十年來,我發現上市櫃公司,如果是好公司,就算短期踫到困難,股價大跌,只要給公司時間,往往可以恢復往日榮耀,所以我就寫了個腳本,去尋找那些獲利穩定的公司,找到後再用上個腳本去回測,我發現勝率可以拉到七成七。

我寫的選股腳本如下

value1=GetField("每股稅後淨利(元)","Y");
if trueall(value1>=2,5)//過去五年每年都賺超過兩元
and highest(value1,5)<lowest(value1,5)*1.5//獲利的高低差距在忍受範圍
then ret=1;
outputfield(1,highest(value1,5),1,"最高EPS");
outputfield(2,lowest(value1,5),1,"最低EPS");

用這個腳本最近一期挑出來的股票有100檔,前40檔如附圖

2018052201

我用這個選股法每年選出的股票,去跑上面大跌四成的腳本,結果過去五年一共出現53次進場的機會,其中有41次都可以獲利20%停利出場,只有12次是虧錢出場,虧錢的交易記錄如下

2018052202

我們可以發現,這些失敗的交易主要是出現在2015股票市場大崩盤的時候,另外這些失敗交易的標的,股本大多相對較小,跌起來往往會超跌。

所以我會先用這個方式濾出股票,再仔細檢查這檔股票有沒有止跌的跡像,或是法人介入的情況,然後再進場。

以上是我這幾年用起來比較有心得的策略之一,出的標的不多,但值得每檔好好追蹤。