愈來愈多網友,開始試著用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;//盤整後往上突破
這個腳本可以挑出像下面這樣的股票
二,下跌時價量背離
腳本如下
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;
可以挑出的股票如下
三,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之後編譯完成變成您的腳本,然後再跟其他條件整合起來一起用。