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天均线

if( cross( obj1.val, obj2.val )==1 ) //用cross函数判断5天均线是否上穿10天均线

{

  return 1 ;            //返回值1,将符合条件的股票选出

}

return 0 ;

2. BB

收盘线与bb交叉

bcross = cross( close, BB.bbsubstd ) or cross( close, BB.bbaddstd ) ;

//用cross函数判断收盘线是否与上下信道交叉,并将值赋予变量bcross。

if( bcross==1 )            

{

  return 1 ;        //如果bcross等于1则有交叉,将符合条件的股票选出

}

return 0 ;

3. DMI

检查dip与din是否交叉.

bcross = cross( DMI.dip, DMI.din ) ;  //检查dmi的两条线是否交叉

if( bcross<>1 )

{

  return 0 ;

}

if( DMI.adx[0]>20 )          //如果adx值大于20

{

  return 1 ;            //将符合条件的股票选出

}

return 0 ;

4. MACD

检查是否出现 macd金叉

bcross = cross( MACD.macd1, MACD.macd2 ); // 检查macd1与macd2是否交叉.

if( bcross<>1 )

{

  return 0 ;                //剔除没有交叉的股票

}

if( MACD.macd1[0]>0 and MACD.macd1[1]>0 ) // 检查macd1, macd2是否在0上方.

{

  return 1 ;              //选出符合条件的股票

}

return 0 ;

5. RSI

检查RSI及其EMA是否向上交叉.

ind_ema rsima( 9, RSI.val ) ;

bcross = cross( RSI.val, rsima.val ) ;

if( bcross==1 )               // bcross==1, 表示RSI上穿rsima;

{                        

  return 1 ;

}

检查RSI及其EMA是否在昨天向上交叉.

bcross = cross( ref( RSI.val, 1) , ref( rsima.val, 1) ) ; //用ref函数求昨天的rsi及ema 值

if( bcross==1 )

{

  return 1 ;

}

6. ZIGZAG

检查是否是下跌波段回稳.

if( ZIGZAG.type[1]<>1 or ZIGZAG.type[0]<>2 )

{

  return 0 ;              //不选出处在上升波段及未确定下降波段的股票

}

if( ZIGZAG.height[0]>5 )  //检查最后一个波段高度.如果已经反弹太高, 入场危险.

{

  return 0 ;

}              // 可能是一个上升波段的开始, 如果是, 则是入场良机.

return 1 ;

7. ts_sma, ts_ema, ts_sar, ts_sarv, ts_jsar, ts_jsarv. ts_ephl.

选出TS_SAR正在发出买入信号的股票.

if( TS_SAR.sgntype[0]==1 and TS_SAR.bars[0]==0 )

{

/*

sgntype的定义: 0--未知道, 1--多头市场, 2--空头市场

bars指相邻信号之间的天数.

*/

  return 1 ;

}

// 选出TS_SARV正在发出买入信号的股票.

if( TS_SARV.sgntype[0]==1 and TS_SARV.bars[0]==0 )

{

  return 1 ;

}

// 选出TS_JSAR正在发出买入信号的股票.

if( TS_JSAR.sgntype[0]==1 and TS_JSAR.bars[0]==0 )

{

  return 1 ;

}

// 选出TS_JSARV正在发出买入信号的股票.

if( TS_JSARV.sgntype[0]==1 and TS_JSARV.bars[0]==0 )

{

  return 1 ;

}

return 0 ;

8.ts_var

aa = selbestexpert( 0, 0 ) ; // 选择最大利润中的 最好的分析专家.

if( aa.experttype==0 ) // 分析专家类型是0, 表示没有取到优化结果.

{

  return 0 ;

}

// 如果历史中: 准确率小于50% 或者 交易段数<=3次, 不选出来.

if( aa.winper<50 or aa.tradecount<=3 )

{

  return 0 ;

}

ts_var obj( aa, SYMBOL ) ; // 用优化结果构建一个 交易系统.

if( obj.sgntype[0]==1 and obj.bars[0]==0 ) // 选出当天发出买入信号的股票.

{

  return 1 ;

}

return 0 ;

1.7.2.5 系统选股

可将保存在css\system目录下的脚本文件,显示在窗口内,方便调用,一目了然。(注:条件选股需先下载股票日线数据)

1. system下的脚本文件为系统提供的脚本选股文件.

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

1.7.3 自定义指标

点击"特色"菜单>"自定义指标",打开指标列表,导入DAT指标文件或自己编写自定义指标。

1.7.4 异动雷达

点击菜单“特色”选项,选择“异动雷达”弹出提示框,选择“是”。

打开“异动雷达”设置参数。

1.7.5 预警系统

1.7.5.1 设置预警条件

可在软件“预警系统”中设置个股预警系统,个股预警系统是指用户将个股设置特定的条件(比如“价格高于 元”、“价格低于 元”、“涨幅大于 %”、“跌幅大于 %”、“换手率大于 %”、“量比大于 ”等等),当该股票在行情中满足所设条件时,系统会显示个股预警提示窗口,提醒用户注意该股票行情。

l 调出预警系统:

在菜单中选择"特色"->"预警系统"。

l 点击“增加条件”按钮,预警类型分为“价格高于 元”、“价格低于 元”、“涨幅大于 %”、“跌幅大于 %”、“换手率大于 %”、“量比大于 ”等等;

l 如何加入股票:点击“加入”按钮,弹出股票列表,用户可在此选择股票。

1.7.5.2 启动预警

点击“启动预警”按钮即可。实例,将“长江实业”预警条件设为“价格高于135.00元”启动预警;

当长江实业所现价越过135.00元时,系统会在右下方显示个股预警提示窗口。

1.7.6 数据下载

凡进行条件选股等分析,都需先进行下载股票日线数据。

l 打开数据下载

点击“系统”下的"数据下载",打开数据下载窗口,您可进行数据下载及维护。

l 数据下载对话窗

下载日线数据:若下载所有股票日线数据就勾上"下载所有股票的数据";若是下载某些股票数据,就点"添加股票"在股票列表中添加想要下载之股票。最后点"开始下载"便进行下载,右边是进度条,达100%会提示下载完成,下载所需时间视乎您的网速,在此建议电信用户连接电信服务器,网通用户连接网通服务器,这样数据下载速度较快。

l 盘后退出程序时(16:15),提示下载历史数据,自动补齐本地的历史数据。(提示:第一次下载历史数据大概需要25分钟)。

1.7.7 财经视频

点击工具栏“特色”菜单,在弹出的二级菜单中选择“财经视频”

弹出打开视频窗口。

1.7.8 同步自选股

1.在行情表或自选股界面右键点击,打开自选股同步功能。

2.下载自选股

3.下载自选股将会覆盖本地数据

1.7.9 自选股数据拖放

添加自选股同页间与不同页间数据拖放功能。

1.7.10 默认自选股

如果用户还没有添加自选股,默认加上00388.HK和08017.HK。