1.7 特色-行情系统

1.7.1 选择专家系统

在图表栏目中软件预设多种股票交易系统,提示买卖信号。

l 选择专家系统:

1.点击"分析"菜单>"选择专家系统";

2.或在工具条点选择买卖图标直接调出;

或在图表窗口双击走势线编辑主要股票对象,在弹出的属性窗口中选择"专家":

l 选择专家系统

多种分析模式供选择:EPHL, SAR, SARv, jSARv, EMAs, jSAR, SMAs ,从中选择一种专家类型,设定参数,并可选择显示的背景及文字颜色,然后按"确定"。

  图中即可看到(红色的)"买"(绿色的)"卖"信号。

l 买卖讯号使用法则

n 买卖讯号是建基于:

1.多种技术分析工具

2. 统计分析与推论

3. 时间数列分析

4. 揉合上述分析方法加人工智能分析

n 买卖讯号之特性 :

基础因素全不考虑

整体经济、行业景气、政府政策、消息有无全不考虑。

技术工具基本上是采用随势分析系统 Trend following system 原则。

n 买卖讯号之限制

n 优点:

在趋势市道下利润是不可估量的。

在任何逆势环境下(做错方向)亏损是有限且可以控制的。

n 缺点:

当市场出现不寻常之停市;或买入该股后遇上停牌;或该股属于成交稀疏冷门股;或单天大幅急挫者,亏损是无法控制及无从估计的。

1.7.2 条件/脚本选股

1.7.2.1 条件选股

本软件备有四种选股方式:原子条件选股、组合条件选股、脚本条件选股、系统选股。

(注:条件选股需先下载股票日线数据)

打开条件选股

a. 从"工具"菜单中选择"条件选股"

b. 快捷键为:F7

1.7.2.2 原子条件选股

在如下窗口中你可选择多个指标、设定参数,以便选出合乎条件的股票。

"原子条件选股"包括"强弱指标选股"、"成交量指标选股"、"交易系统选股"、"基本面选股"、"其它指标选股"等类别。

l 可指定多个选股条件,设定选股条件的运算公式("与"\"或")

l 可设定参数

l 设定选股范围,选股范围包括香港市场及沪深两市

l 选出来的股票会自动成为一个板块,便于调用

以上图为例:

1.指定条件选股。

我们先选定"强弱指标选股"下的"涨跌幅指标选股"并双击,"涨跌幅指标选股"即刻添到"选入条件"窗口,再选定"成交量指标选股"下的"量比选股"并双击,"量比选股"也添到"选入条件" 窗口,此时选入条件共有两个条件。

2.设定条件参数。

在"选入条件"窗口双击刚才加入的条件,随即自动出现属性内容,属性条件可自由设定参数。先设定"涨跌幅指标选股"属性,将"分析周期"设为1日即当日,涨跌幅设为大于3%即涨幅大于3%。再设定"量比选股"属性,量比设为大于5%。假如要删掉"选入条件"中的条件,只要选定欲删除的条件,按下"移除"按钮,即可删除。若要保存"选入条件",只要按下"保存"按钮即可。

3. 加入运算公式。

"与"表示同时满足两个条件;"或"表示满足其中一项条件即可; 假设在此选择"与",表示要选出"当天涨幅大于3%"且"量比大于5%"的股票。

4. 设定选股范围。

此处系统默认为"香港全部",若要更换选股范围,按"更改"按钮,从中选择板块,按确定。

5. 执行选股。

按下"执行选股"按钮即开始进行筛选,如图选出了股票,这些股票就是"当天涨幅大于3%并且量比大于3%"的股票。用这个"涨幅指标"及"量比指标"来对当日行情进行选股,选股的结果从中也反映了当日股市市况,条件选股的作用显得极具意义。若要保存选股结果,按"保存至板块"按钮就可。将它们保存到一个板块中,便于调用。

1.7.2.3 组合条件选股

可将之前在"原子条件"保存的多个条件,在此处进行组合选股,对"原子条件"选出的股票进行进一步的筛选,精确选股结果,提高选股质量。在此还方便您整理自已创建的所有"原子条件"选股文件。

在“组合条件”选股中,条件的参数是不可改的。若要修改,可转到“原子条件”进行修改。

1. "原子条件"中所创建的条件文件会显示在“组合条件”窗口中。

2. 设定选股范围,按“执行选股”。

3. 选出的股票会自动成为一个板块,便于调用。

1.7.2.4 脚本选股

脚本选股TAB页面,点击脚本规则,可以查看脚本的定义。

脚本编辑窗口

使用:

A. 系统保留字会自动显示成蓝色

B. 自动提示你所写的对象属性,可以用↑ ↓ 移动光标至要加入的"方法",再按 Enter 即可。

语法规则:

A. 区分大小写,即:A与 a是不同。

B. 每句结束都要加"; "(分号),但是if, else的语句除外。

注释语句:

// 注释当前行,"//"后的语句为注释而非脚本语句

/* */ 注释多行, "/* */"中间的语句为注释而非脚本语句

流程控制语句

if 语句

――如果满足“条件一”,则执行语句一

if (条件一)

{

 执行语句一;

}

if , else条件判断语句

――如果满足"条件一",则执行语句一,否则执行语句二

例:

if (条件一 )

{

 执行语句一;

}

else

{

 执行语句二;

}

return

语法:return 返回值

说明:指定函数的返回值。

return 1 为将符合条件的股票选出来,return 0 为将符合条件的股票排除;

在指标排序语句中,return表示用返回的值来排序。

例:return.RSI.val[0]; //所有股票按今天的rsi 值排序

保留字

一些关键字,有特定含义,被规定不许挪作它用,不能作为对象的名字。

运算符

1) +

语法:表达式1+表达式2

说明:把数字或集合的表达式相加

2) -

语法:表达式1-表达式2

说明:把数字或集合的表达式相减

3) *

语法:表达式1*表达式2

说明:把数字或集合的表达式相乘

4) /

语法:表达式1/表达式2

说明:表达式1除以表达式2

5) >

语法:表达式1>表达式2

说明:比较两个表达式是否"表达式1"大于"表达式2";如是,则返回结果为真;否则返回结果为假。

6) <

语法:表达式1<表达式2

说明:比较两个表达式是否"表达式1"小于"表达式2";如是,则返回结果为真;否则返回结果为假。

7) >=

语法:表达式1>=表达式2

说明:比较两个表达式是否"表达式1"大于等于"表达式2";如是,则返回结果为真;否则返回结果为假。

8) <=

语法:表达式1<=表达式2

说明:比较两个表达式是否"表达式1"小于等于"表达式2";如是,则返回结果为真;否则返回结果为假。

9) <>

语法:表达式1<>表达式2

说明:比较两个表达式是否"表达式1"不等于"表达式2";如是,则返回结果为真;否则返回结果为假。

10) and

语法:表达式1 and 表达式2

说明:比较两个表达式条件是否同时满足,如是,则返回结果为真;否则返回结果为假。

11) or

语法:表达式1 or 表达式2

说明:两个表达式中只要有一个为真,则返回结果为真。

12) not

语法:not 表达式

说明:对运算符(NOT)右边的数据求反;not 0 ---> 结果就是1

运算符左边只能为要定义的变量名

abc = 10 ; 这样是对的

close = open ; 这样写是错误的, close为系统保留字, 不能出现在左边.

支持数值, 集合之间的运算,例如:

10+20   数值与数值运算

10+open  数值与集合运算

open-close 集合与集合运算

对象

对象指程序中既定的一些可操作的实体。"对象"具有一定的属性和方法,属性指对象本身的各种特性参数,如气球的体积,自行车的长度等;而方法是指对象本身所能执行的功能,如气球能飞,自行车能滚动等。

注:在下列对象中[i]指的是从今天以前的第几天,[0]就是指今天,[1]就是指昨天。

l 当天行情对象REPORT

描述当天的行情报表及财务股本信息。

注:

rpt_close等同于REPORT.rpt_close。

行情中的各项数据就是这个报表对象的属性,如下表:

l 历史行情对象SYMBOL

描述K线中的数据

注:

open等同于SYMBOL.open.

open[0]等同于SYMBOL.open[0],即取当天的开盘价。

行情中的各项数据就是这个对象的属性,如下表:

l 指标对象

数据源:有两种,一种是SYMBOL;另一种是集合,如:open, close等。

l 交易系统对象

函数

1) max

语法:max(表达式1,表达式2)

说明:max(a,b)取a、b中最大值,a、b为数值,运算结果为数值

例:c=max(3,5) (c等于3,5中值最大的一个)

因此 c=5

2) min

语法:min(表达式1,表达式2)

说明:min(a,b)取a、b中最小值,a、b为数值,运算结果为数值

例:c=min(3,5) (c等于3,5中值最小的一个)

因此 c=3

3) sum

语法:sum(表达式1,表达式2)

说明:sum(a,b) 求a中最后 b个单元的和,a为集合,b为数值,运算结果为集合

例: sum(vol,5) (vol是指成交量,这个表达式是求今天及前4天内成交量总和。)

4) ref

语法:ref(表达式1,表达式2)

说明:ref(a,b) 求b日前的a值, a为集合,b为数值,运算结果是集合.

例: ref(vol,1) (vol是指成交量,这个表达式是求昨天的成交量。)

5) hhv

语法:hhv(表达式1,表达式2)

说明:hhv(a,b) 求a中最后n个单元的最大值,a为集合,b为数值,运算结果是集合.

例: hhv( high, 10 ) 

(high是指最高价,这个表达式是求今天及前9天内的最高价)

6) hhvbars

语法:hhvbars(表达式1,表达式2)

说明:hhvbars(a,b) 求a中最后 b个单元中的最大值到现在的天数, a为集合,b为数值,运算结果是集合.

例: dd = hhvbars( ref( high, 1 ), 10 )

(ref(high,1)是指前一天的最高价,这个表达式是求10天中最高价出现的时间离现在已有多少天)

7) llv

语法:llv(表达式1,表达式2)

说明:llv(a,b) 求a中最后b个单元的最小值, a为集合,b为数值,运算结果是集合.

例: llv(low, 10 ) 

(low是指最低价,这个表达式是求今天及前9天内的最低价)

8) llvbars

语法:llvbars(表达式1,表达式2)

说明:llvbars(a,b) 求a中最后 b个单元中的最小值到现在的天数, a为集合,b为数值,运算结果是集合.

例: dd = llvbars( ref(low, 1 ), 10 )

(ref(high,1)是指前一天的最低价,这个表达式是求10天中最低价出现的时间离现在已有多少天)

9) sma

语法:sma(表达式1,表达式2)

说明:sma( a,b)求sma值,运算结果是集合.

10) ema

语法:ema(表达式1,表达式2)

说明:ema( a,b)求ema 值,运算结果是集合.

11) cross

语法:cross(表达式1,表达式2)

说明:cross(A,B)求A、B是否交叉,如A上穿B,则返回值1;如A下穿B,则返回值2;如两者没有交叉,则返回值0。

例:cross( DMI.dip, DMI.din )

 检查DMI指标的dip与din是否交叉

12) count

语法:count(表达式1,表达式2)

说明:count( a,b) 统计b天中 a非0值的天数,运算结果是集合.

13) maxval

语法:maxval(表达式1,表达式2)

说明:maxval(X,N)求集合X中最后N个数据的最大值.,运算结果是数值.

例:maxval(rsi.val,9)

14) minval

语法:minval(表达式1,表达式2)

说明:minval(X,N)求集合X中最后N个数据的最小值.,运算结果是数值.

例:minval(rsi.val,9)

15) sumval

语法:sumval(表达式1,表达式2)

说明:sumval (X,N)求集合X中最后N个数据的和,运算结果是数值.

例:sumval(rsi.val,9)

16) countval

语法:countval(表达式1,表达式2)

说明:countval (X,N)求集合X中最后N个数据不为0的个数,运算结果是数值.

例:countval(close,5)

17) maxvalplace

语法:maxvalplace (表达式1,表达式2)

说明:maxvalplace( X,N ) 求集合X中最后N个数据的最大值的位置.,运算结果是数值.

例:maxvalplace(high,5)

18) minvalplace

语法:minvalplace (表达式1,表达式2)

说明:minvalplace( X,N ) 求集合X中最后N个数据的最大值的位置.,运算结果是数值.

例:minvalplace(low,5)

19) iff

语法:iff(表达式1,表达式2,表达式3)

说明:iff(a,b,c) 如果a不为0,返回值b;否则返回值c.

20) getsize

语法:getsize(表达式)

说明:getsize(a)求集合a中的单元个数.

例:getsize(close) 求某股票有收盘数据的天数,可籍此判断是否新股。

21) abs

语法:abs(表达式)

说明:abs(a)求a的绝对值

22)contain

语法:contain(表达式1,表达式2)

说明:contain(a,b)求 a中是否包含b

例:contain(rpt_name,“上海”)

就是将股票名称中有"上海"的股票选出来

范例

简单应用

例一:选出昨日跌幅大于5%的股票

chgper[1]<-5;

例二:选出上周涨幅大于20%的股票,将周期设为1周,公式如下:

chgper[1]>20;

例三:选出昨天rsi大于80的股票

RSI.val[1]>80;     //RSI.val是取RSI值,[1]为昨天数据

脚本选股实例说明:

实例一:波段抄底

算法介绍:

寻找当前是下跌波段, 并且接近上一个下跌波段的低点的股票。

运用法则:

在底部的介入能够获得比较高的利润, 但是目前股票是弱势,

因此转强需要较长的时间。同时如果确认跌破支撑位, 则应该考虑

止损出局。

if( rpt_close<=0 ) // 剔除今天停牌的股票。(*1)

{

  return 0 ;

}

ind_zigzag zz( 10, 10, close ) ;

if( zz.type[0]==1 or zz.type[0]==3 ) // 最后一个波段是下跌波段. (*2)

{

  rng = close[0]/zz.enterprice[1] ;

  if( rng>=0.98 and rng<1.02 ) // 当前价在 上一个下跌波段的低点 附近. (*3)

  {

     return 1 ;

  }

}

return 0 ;

明:"rpt_close"代表最新价,"rpt_close<=0"就是最新价小等于零即代表今天停牌股票。(*1)表示"波段抄底"选股,不对今天停牌的股票进行选股。

"ind_zigzag"代表ZigZag技术分析工具,"ind_zigzag zz( 10, 10, close )"代表ZigZag技术分析工具属性中设为价格是"收盘价"(close)、方式是"百分比"、转多是"10"、 转空是"10"。" zz.type[0]"代表最后一个波段,(*2)表示ZigZag技术分析在上述属性范围中"zz.type[0]==1 or zz.type[0]==3 "即"最后一个波段是下跌波段"的情况("1"代表下跌波段,"3"代表未达到所设转空参数的未确认下跌波段)。

close[0]"代表最新收盘价(以下简称A),"zz.enterprice[1]"代表ZigZag技术分析工具中上一个波段与近一个波段间转折点价位(以下简称B),"close[0]/zz.enterprice[1]"代表A和B之比,"rng>=0.98 and rng<1.02"代表A和B之比接近1:1,(*3)表示当前价在"一个下跌波段的低点附近"。

通过上述的运算公式,系统会计算选出符合脚本中自设条件的股票。

指标选股脚本范例:

1. 简单算数平均线SMA

两条sma线的金叉买入:

ind_sma obj1( 5, close ) ;      //定义obj1为sma对象,它的sma周期是5,

sma数据源是收盘价.

ind_sma obj2( 10, close ) ;     //10天均线