策略开发指南

证券走势

证券走势主要分为三个大类,趋势向上,趋势向下,震荡形态.

趋势向上可以分为短期趋势,中长期趋势。

趋势向下可以分为短期急趋势,急跌,中期下跌趋势,长期下跌。

震荡形态主要是一段时间内,股票的价格在一个相对稳定的价格区间内震荡,可以获取短线套利机会。之后会专门做一期套利的专题,这里主要讲一下趋势向上和趋势向下的策略创建以及指引。


宽投指标

宽投指标主要分四大类,技术指标,数学函数,统计函数,基本面指标

1.技术指标

技术指标主要是指证券分析的各种技术性指标,比如BOLL,MACD,KDJ,WilliamR,SMA等等以及股票的收盘价,最高价,最低价,开盘价,成交数量等基础性指标。技术指标层面,宽投基本上涵盖了市场上的主流指标。

2.数学函数

数学指标主要是指数学类的数据计算,比如ABS(绝对值),MAX(最大值),MIN(最小值),Sqrt(平方根)等

3.统计函数

统计指标是指数学类的统计,比如AVG(平均),Covar(协方差),Sum(求和),Correl(相关性),Dvar(方差)

4.基本面指标

基本面指标是指PE,DPS,EPS等证券的基本面数据。

特别需要讲的一点是,宽投提供了一系列可以直接调用的函数,直接选择代码或者某些指标性证券,进行比较。

宽投指标的组合方式,主要是通过数学的方式,比如>,<,+,-,x,,/等等。

举个例子:

BarClose ('D',0) > BarClose('D',-1)

以日作为分析周期,今天的收盘价格大于昨天的收盘价格。

客户想要知道宽投的具体的指标函数以及解析,可以参考宽投的指标集,请登录 www.zlwang.com.cn查阅参考文档.

 

 

1. K线属性

本章主要根据应用场景介绍K线的各个基本属性。K线的属性包含了证券某个周期内的最高价,最低价,开盘价,收盘价,成交量,k线长度等。客户如果想知道某个时间周期内的特定价格,可以分别使用使用下面的函数获取。

 

1.1 收盘价

BarClose

返回一根K线的收盘价。

语法

BarClose('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

1.2 开盘价

BarOpen

返回一根K线的开盘价。

语法

BarOpen('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

1.3 最高价

BarHigh

返回一根K线的最高价。

语法

BarHigh('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

1.4 最低价

BarLow

返回一根K线的最低价。

语法

BarLow('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

1.5 成交量

BarVolume

返回一根K线的交易量。

语法

BarVolume('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

1.6 最高价与最低价之差(K线长度)

BarRange

返回一根K线的最高价与最低价之差。

语法

BarRange('interval',index)

interval 是任意支持的K线周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。’1’到’90’代表分钟周期,'D' 表示每天(日线周期)。'W' 表示每周。'M'表示每月。

index 是K线位置,0表示当前,-1表示前一期,以此类推。

 

 

2. 周期,定位,时间序列

在上一章中,我们介绍了K线的基本属性,在实际应用中,我们可能想要知道的是某一天或者五分钟内的最高价,收盘价等。具体函数在时间点上的应用,就涉及到了 interval-周期,index–定位,start_index和end_index-时间序列的使用。这一章中,我们着重讲一下时间序列,周期以及定位的应用。

 

2.1 interval-周期

interval是宽投几乎每一个指标中都要应用到的,interval是任意支持的K线时间周期:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。'D' 表示每天。'W' 表示每周。'M' 表示每月。

我们想要知道

某个股票的五分钟内的最低价格:

BarLow('5',index)

某个股票某天的收盘价:

BarClose('D',index)

某个股票某1分钟内的最高价:

BarHigh('1',index)

某个股票60分钟内的开盘价:

BarOpen('60',index)

某个股票某月的成交量:

BarVolume('interval',index)

 

2.2 index –定位

我们想要知道某个股票某一天的最低价格,就要使用Index。Index是宽投的时间定位函数公式函数中的位置参数,0表示当前,-1表示前一期,以此类推。

下面是实际中的例子:

某个股票当前5分钟内5分钟周期的最新K线的最低价格:

BarLow('5', 0)

请注意,index=0 的位置指向尚未结束的K线,上一个已结束的K线用-1代表, 如BarLow('5', -1)

某个股票前一天的收盘价:

BarClose('D',-1)

某个股票当前时间前推三分钟的最高价:

BarHigh('1', -3)

某个股票前一个小时内的开盘价:

BarOpen('60',-1)

某个股票当月是4月,想知道1月份的成交量:

BarVolume(M',-3)

 

2.3 start_index和end_index-时间序列

我们想要找到过去一个月内的最高价,时间序列可以迅速的找到区间。

start_index是第一根K线的指标,0表示当前,-1表示前一期,以此类推。

end_index是最后一根K线的指标。

比如我们想要找到过去30天的最高价:

最高价格的函数:PeriodHigh('interval',start_index, end_index)

我们以“D”作为interval(时间周期),向前推30天,到昨天的最高价格,

PeriodHigh('D',-30, -1)就是过去30天的最高价格。

由此我们衍生出过去30个5分钟K线的最低价格:

最低价格的函数:PeriodLow('interval',start_index, end_index)

PeriodLow('5',-30, -1)就是过去30个5分钟K线的最低价格

 

 

3. 价格走势

上面两章简要的介绍了K线基本属性,定位,周期和时间序列。在投资过程中,我们想要找到的是符合预期的一些价格走势,比如说连续几天 /5min/60min上涨,连续几天/5min/60min下跌,价格三天窄幅震荡等。

 

3.1连续三天上涨

如上图,我们想要找到连续三天上涨的股票,有一个条件必须要满足的:

第二天的收盘价肯定要大于前一天的收盘价

我们用第一章中讲的BarClose('interval',index)函数,如下:

BarClose('D',-4)< BarClose('D', -3)

BarClose('D',-3)< BarClose('D', -2)

BarClose('D',-2)< BarClose('D', -1)

因为两个条件要同时满足,我们加上“并且“符号“&”:

BarClose('D',-4)< BarClose('D', -3)

&BarClose('D', -3)< BarClose('D', -2)

&BarClose('D', -2)< BarClose('D', -1)

我们把上面的两个条件,放到众量网上建立策略,就可以每天实时获取市场上连续三天上涨的股票。连续三个5分钟/60分钟上涨的情况如下:

连续三个小时上涨:

BarClose('60',-3) < BarClose('60', -2)

&BarClose('60', -2) < BarClose('60', -1)

&BarClose('60', -4) < BarClose('60', -3)

连续3个5分钟上涨

BarClose('5',-3) < BarClose('5', -2)

&BarClose('5', -2) < BarClose('5', -1)

&BarClose('5', -4) < BarClose('5', -3)


3.2连续三天下跌

如上图,我们想要找到连续三天下跌的股票,同上涨一样有一个条件必须要满足的:

第二天的收盘价肯定要小于于前一天的收盘价

我们用第一章中讲的BarClose('interval',index)函数,如下:

BarClose('D',-4)> BarClose('D', -3)

BarClose('D',-3)> BarClose('D', -2)

BarClose('D',-2) >BarClose('D', -1)

因为两个条件要同时满足,我们加上符号“&”:

BarClose('D',-4)> BarClose('D', -3)

&BarClose('D', -3)> BarClose('D', -2)

&BarClose('D', -2) >BarClose('D', -1)

我们把上面的两个条件,放到众量网上建立策略,就可以每天实时获取市场上连续三天下跌的股票。连续三个5分钟/60分钟下跌的情况如下:

连续三个小时下跌:

BarClose('60', -4) > BarClose('60', -3)

BarClose('60', -3) > BarClose('60', -2)

BarClose('60', -2)> BarClose('60', -1)

连续3个5分钟下跌

BarClose('5', -4) > BarClose('5', -3)

BarClose('5', -3) > BarClose('5', -2)

BarClose('5', -2) > BarClose('5', -1)

 

3.3 价格连续三天窄幅震荡

如上图,窄幅震荡的情形下,股票的价格没有大幅度的波动和震荡,我们假定为每天的价格波动在三天内的最高价和最低价格之间,那么我们得到如下:

三天内每天的价格波动要小于三天内最高价和最低价之间的差值

我们分别用到前面两章中讲的BarLow('interval', index) (注释:代码应该用不同字体,下面用的是Lucida Console)

BarHigh('interval', index)PeriodHigh('interval', start_index, end_index)PeriodLow('interval', start_index, end_index)函数,如下:

BarHigh('D', -3)- BarLow('D', -3)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

BarHigh('D', -2)- BarLow('D', -2)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

BarHigh('D', -1)- BarLow('D', -1)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

上述三个条件要同时满足,我们加上符号“&”:

BarHigh('D', -3)- BarLow('D', -3)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

&BarHigh('D', -2)- BarLow('D', -2)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

&BarHigh('D', -1)- BarLow('D', -1)< PeriodHigh('D', -3, -1) -PeriodLow ('D', -3, -1)


3.4 连续两天涨停/跌停

如上图,黄色标注区域,该股票连续两天涨停,沪深市场的涨跌停是前一天收盘价的10%,实际涨跌停的区间在9.95%-10.05%之间:

连续两天涨停价格收盘,收盘价是前一天的10%

 

我们分别用到前面两章中讲的BarClose('interval', index)函数,如下:

BarClose('D', -2)-BarClose('D', -3)<= BarClose('D', -3)*0.1005

BarClose('D', -2)-BarClose('D', -3)>= BarClose('D', -3)*0.0995

BarClose('D', -1)-BarClose('D', -2)<= BarClose('D', -2)*0.1005

BarClose('D', -1)-BarClose('D', -2) >=BarClose('D', -2)* 0.0995

 

上述四个条件要同时满足,我们加上符号“&”:

BarClose('D', -2)-BarClose('D', -3)<= BarClose('D', -3)*0.1005

&BarClose('D', -2)-BarClose('D', -3)>= BarClose('D', -3)*0.0995

&BarClose('D', -1)-BarClose('D', -2)<= BarClose('D', -2)*0.1005

&BarClose('D', -1)-BarClose('D', -2) >=BarClose('D', -2)* 0.0995

 

连续两天跌停:

BarClose('D', -3)-BarClose('D', -2)<= BarClose('D', -3)*0.1005

&BarClose('D', -3)-BarClose('D', -2)>= BarClose('D', -3)*0.0995

&BarClose('D', -2)-BarClose('D', -1)<= BarClose('D', -2)*0.1005

&BarClose('D', -2)-BarClose('D', -1) >=BarClose('D', -2)* 0.0995


3.5 连续五天收阳线

如上图,黄色标注区域,该股票连续五天收阳线,想要找到五连阳价格走势的,我们可以使用如下的思路:

连续五天收盘价高于当天的开盘价

五连阳的走势形态,需要使用到BarClose('interval', index)BarOpen('interval', index)函数:

BarClose('D', -5)> BarOpen('D', -5)

BarClose('D', -4)> BarOpen('D', -4)

BarClose('D', -3)> BarOpen('D', -3)

BarClose('D', -2)> BarOpen('D', -2)

BarClose('D', -1)> BarOpen('D', -1)

同时满足五个条件,还是需要加上“&

BarClose('D', -5)> BarOpen('D', -5)

&BarClose('D', -4)> BarOpen('D', -4)

&BarClose('D', -3)> BarOpen('D', -3)

&BarClose('D', -2)> BarOpen('D', -2)

&BarClose('D', -1)> BarOpen('D', -1)

五连阴:

BarClose('D', -5)< BarOpen('D', -5)

&BarClose('D', -4) < BarOpen('D', -4)

&BarClose('D', -3) < BarOpen('D', -3)

&BarClose('D', -2) < BarOpen('D', -2)

&BarClose('D', -1) < BarOpen('D', -1)

 

 

4. 循环函数(引用2的例子)

连续下跌,连续上涨,震荡等价格走势,基本上可以使用K线基本属性表达出来。众量网为了简化表达的方式,设置了循环函数,简化了编写过程。

 

4.1LoopAnd

价格走势这一章中连续三天上涨的表达式如下:

BarClose('D', -4)< BarClose('D', -3)

&BarClose('D', -3)< BarClose('D', -2)

&BarClose('D', -2)< BarClose('D', -1)

LoopAnd( {条件表达式}, start_index, end_index,step)

step代表start_index, end_index时间序列的间隔

在某一时间序列中按step进行区分的条件表达式的条件都通过,换句话说,时间序列中所有的条件表达式都成立。

如:LoopAnd( {条件表达式}, -100, -1,1)100k线到前一天的k线,每一个都要循环

    LoopAnd( {条件表达式}, -100, -1,2)100k线到前一天的k线,间隔1个循环

    备注:1就是每一个K线加1,2就是每一个K线加2

我们把连续三天上涨的转换成LoopAnd函数,如下:

LoopAnd( { BarClose('D', #)< BarClose('D', #)}, -3, -1,1)

备注:用#代替 index#是动态循环

因为BarClose('D', -4)< BarClose('D', -3)index前一天是“-4”,后一天是“-3”,两者存在差值,函数表达式如下:

LoopAnd( { BarClose('D', #-1)< BarClose('D', #)}, -3, -1,1)

 

上面的函数所起到的功能和连续三天上涨走势的功能是一致的,都可以在市场中筛选到相同的证券。

连续三天下跌:

BarClose('D', -4)> BarClose('D', -3)

&BarClose('D', -3)> BarClose('D', -2)

&BarClose('D', -2) >BarClose('D', -1)

转换为:

LoopAnd( { BarClose('D', #-1)> BarClose('D', #)}, -3, -1,1)

 

连续三天窄幅震荡

BarHigh('D', -3)- BarLow('D', -3)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

&BarHigh('D', -2)- BarLow('D', -2)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

&BarHigh('D', -1)- BarLow('D', -1)< PeriodHigh('D', -3, -1) -PeriodLow ('D', -3, -1)

转换为:

LoopAnd( { BarHigh('D', #)- BarLow('D', #)< PeriodHigh('D', -3, -1) - PeriodLow ('D', -3, -1)

}, -3, -1,1)

 

4.2 LoopMaxLoopMin

LoopMax ( {数值表达式}, start_index, end_index,step)

返回在某个时间序列中数值表达式的最大值

LoopMin( {数值表达式}, start_index, end_index,step)

返回在某个时间序列中数值表达式的最小值

假设我们想要知道某个股票近期的最大值和最小值,我们可以直接使用PeriodHigh('interval', start_index, end_index)PeriodLow('interval', start_index, end_index),可以很快的得到结果。但是实际应用中,会有SMABOLLKDJ等技术指标,我们想得到某个时间序列中该技术指标的最大值和最小值,就需要使用LoopMaxLoopMin,与这些技术指标配合使用。

比如boll线,分为上轨和下轨,我们想要知道上轨和下轨在60个交易日内的最大值和最小值,下面是boll线上轨和下轨的函数:

BbUpper

描述

返回一个K线的布林线高值。

语法

BbUpper('interval', period, deviation, index)

interval 是任意支持的蜡烛线区间:1, 2, 3, 5, 7, 10, 15, 20, 30, 45, 60, 90, D, W, M.'D' 表示每天。'W' 表示每周。 'M'表示每月。

Period是阶段,建议值为20。

deviation是标准差,建议值是2。

index是蜡烛线指标,0表示当前,-1表示前一期,以此类推。

例子

BbUpper('5',20, 2.0, -1)

 

BbLower

描述

返回一个K线的布林线低值。

语法

BbLower('interval',period, deviation, index)

interval 是任意支持的蜡烛线区间:1,2,3,5,7,10,15,20,30,45,60,90,D,W,M。'D' 表示每天。'W' 表示每周。'M' 表示每月。

Period是阶段,建议值为20。

deviation是标准差,建议值是2。

index是蜡烛线指标,0表示当前,-1表示前一期,以此类推。

例子

BbLower ('5', 20, 2.0, -1)

 

BOLL线函数结合LoopMax和LoopMin两个函数,我们就可以组合出如下:

LoopMax({BbUpper('D', 20, 2.0, #)}, -60, -1,1)上轨60天最大

LoopMin({BbUpper('D', 20, 2.0, #)}, -60, -1,1)上轨60天最小

LoopMax({ BbLower('D', 20, 2.0, #)}, -60, -1,1)下轨60天最大

LoopMin({BbLower('D', 20, 2.0, #)}, -60, -1,1)下轨60天最小

备注:用#代替 index#是动态循环

 

其他的函数,比如说SMA,KDJ等技术指标,都可以和LoopMaxLoopMin进行组合。

 

4.3 LoopOr

LoopOr ( {条件表达式}, start_index, end_index,step)

在某一时间序列中按step进行的条件表达式的条件部分通过,换句话说,就是只要其中的一部分条件满足即可。

我们想要找到市场中在过去三个交易日中,出现涨停的股票:

LoopOr ( { BarClose('D', #)-BarClose('D', #-1)<= BarClose('D', -3)*0.1005

& BarClose('D', #)-BarClose('D', #-1)>= BarClose('D', -3)*0.0995

}, -3, -1,1)

找出涨停的条件表达式可以参考第三章价格走势中的连续涨停。


4.4 LoopCount

LoopCount ( {条件表达式}, start_index, end_index,step)

统计在某一时间中按step进行的条件表达式通过的数量,实际应用中,我们多用作来统计天数,即过去一段时间内,收盘价小于boll线下轨的天数,或者收盘价低于SMA的天数等等。

60天收盘价小于BOLL线下轨的天数

LoopCount ( { BarClose('D', #)<BbLower('D', 20, 2.0, #)}, -60, -1,1)

 

10天内收盘价低于SMA5天线的天数

Sma

描述

返回给定K线,指定值val_series和阶段period的简单移动平均值。

语法

Sma('val_series', 'interval', period, index)

val_series 是引用表达式。可以选用OPEN, HIGH, LOW, CLOSE, VOLUME。典型的是'CLOSE'

interval 是任意支持的蜡烛线区间:1, 2, 3, 5, 7, 10, 15, 20, 30, 45, 60, 90, D, W, M.'D' 表示每天。'W' 表示每周。 'M'表示每月。

period是计算Sma所用的阶段。

index 是蜡烛线指标,0表示当前,-1表示前一期,以此类推。

例子

Sma(' CLOSE ', 'D', 20, -1)

结合上述SMA的描述,配合LoopCount如下:

LoopCount ( { BarClose('D', #)< Sma(' CLOSE ', 'D', 5, #)},-5, -1,1)

 

5. 技术走势

上面四章,我们重点介绍了众量网的各个基础性指标,在实际中的应用。本章主要结合证券的上涨形态,下跌形态以及震荡形态,和我们宽投的各个指标的应用,让您快速迅捷的掌握各个趋势形态的股票获取。

 

5.1 上涨趋势

 

5.1.1 SMA

   

上面是本钢板材这只股票在某一个时间段的实际走势,作为一个投资者,我们肯定是想要在股票的上升初期和上升中继过程中,从市场上找到这个形态的股票。那我们就需要通过对各个指标的分析,从市场上找到这个形态的股票。首先我们不是盲目的去找,而是要形成一个比较完善的思路。

思路:

移动均线多头排列趋势形成,5日,10日,20日分别突破60日线后,股价整体重心向上移动。

多头排列,sma5>sma10>sma20>sma60,

股价重心向上移动,换句话说,在过去的某一时间段内,大部分的sma5>sma10,我们可以假设过去15天中有10sma5>sma10,那么如下:

LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-5, -1,1) >10

我们应用sma指标,就可以得到如下:

Sma(' CLOSE ', 'D', 5, -1) > Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

 

5.1.2 MACD

上面是某只股票的日k线形态图,我们结合MACD技术指标,通过众量网函数找到市场上处于如上图上涨趋势的证券。

 对上图黄色区域进行分析,macd的快线上穿突破慢线,并在几个交易日中一直处于慢线的上方,直至difdea都大于0,然后平滑下来,趋势逆转向下,dif下穿dea。实盘交易中,我们需要找到的是dif上穿dea,接下来的几个交易日dif一直在dea的上方。

Macd=dif(中国)

Macd('val_series', 'interval', fastPeriod, slowPeriod, index)

例子:

Macd('CLOSE', '5', 12, 26, -1)

Macdsingel=dea(中国)

MacdSignal('val_series', 'interval', fastPeriod, slowPeriod, smoothPeriod, index)

例子:

MacdSignal('CLOSE', '5', 12, 26, 9, -1)

Macdhist=macd(中国)

MacdHist('val_series', 'interval', fastPeriod, slowPeriod, smoothPeriod, index)

例子:

MacdHist ('CLOSE', '5', 12, 26, 9, -1)

val_series 是引用表达式。可以选用OPEN, HIGH, LOW, CLOSE, VOLUME

interval 是任意支持的蜡烛线区间:1, 2, 3, 5, 7, 10, 15, 20, 30, 45, 60, 90, D, W, M.'D' 表示每天。'W' 表示每周。 'M'表示每月。

index 是蜡烛线指标,0表示当前,-1表示前一期,以此类推。

fastPeriod, slowPeriodmacd的快慢线的计算标准值

smoothperiod是macd的平滑阶段

fastPeriod标准值12

slowPeriod标准值26

smoothperiod标准值9

 

1 DIF上穿DEA,前一天dif低于dea,第二天dif大于dea,趋势形态初步改变:

Macd('CLOSE', 'D', 12, 26, -4) < MacdSignal('CLOSE', 'D', 12, 26, 9, -4) Macd('CLOSE', 'D', 12, 26, -3) > MacdSignal('CLOSE', 'D', 12, 26, 9, -3)

2 为了确定趋势有大的转变,我们得确定在上穿之后的两天,dif大于dea

Macd('CLOSE', 'D', 12, 26, -2) > MacdSignal('CLOSE', 'D', 12, 26, 9, -2)

Macd('CLOSE', 'D', 12, 26, -1) > MacdSignal('CLOSE', 'D', 12, 26, 9, -1)

 

上述条件,我们进行组合:

Macd('CLOSE', 'D', 12, 26, -4) < MacdSignal('CLOSE', 'D', 12, 26, 9, -4) &Macd('CLOSE', 'D', 12, 26, -3) > MacdSignal('CLOSE', 'D', 12, 26, 9, -3)

&Macd('CLOSE', 'D', 12, 26, -2) > MacdSignal('CLOSE', 'D', 12, 26, 9, -2)

&Macd('CLOSE', 'D', 12, 26, -1) > MacdSignal('CLOSE', 'D', 12, 26, 9, -1)

 如上组合,我们可以得到MACD的趋势向上,判断某个证券趋势形态向上,我们可以把上面简化为:

Macd('CLOSE', 'D', 12, 26, -4) < MacdSignal('CLOSE', 'D', 12, 26, 9, -4)

&LoopAnd( { Macd('CLOSE', 'D', 12, 26, #) > MacdSignal('CLOSE', 'D', 12, 26, 9, #))}, -3, -1,1)


5.1.3 BOLL

上图是某个股票的k线形态图,黄色标注区域是该股票对应的BOLL线走势图。K线形态和BOLL线形态,相当一致。Boll线中轨趋势向上,趋势上涨过程中,k线价格区间一直在中轨上方,重心不断上移,k线加速过程,突破boll线上轨。

我们通过BOLL线指标判断趋势,BOLL线中轨平滑度很高,我们把它作为一个趋势判断的依据。循环函数那一章,已经介绍过BOLL线指标,这里就不在重复介绍。

Boll线中轨值T日大于T-1日,T-1日小于T-2日,T日之后连续三天大于前一天的中轨值,我们可以认为短期趋势向上。

1 Boll线中轨值T日大于T-1日,T-1日小于T-2

(BbUpper('D', 20, 2.0,-4)+BbLower('D', 20, 2.0, -4))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

(BbUpper('D', 20, 2.0,-6)+BbLower('D', 20, 2.0, -6))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

2 T日之后连续三天大于前一天的中轨值

LoopAnd( { (BbUpper('D',20,2.0,#)+BbLower('D',20,2.0,#))/2 > (BbUpper('D', 20, 2.0, #-1)+BbLower('D', 20, 2.0, #-1))/2}, -3, -1,1)

12组合起来如下,我们使用“并且”也就是“&”:

 (BbUpper('D', 20, 2.0,-4)+BbLower('D', 20, 2.0, -4))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

&(BbUpper('D', 20, 2.0,-6)+BbLower('D', 20, 2.0, -6))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

&LoopAnd({(BbUpper('D',20,2.0,#)+BbLower('D',20,2.0,#))/2>(BbUpper('D',20,2.0,#-1)+BbLower('D', 20, 2.0, #-1))/2}, -3, -1,1)

 

如果我们需要找到的是下跌之后趋势反转,我们可以加上T-1之前的三天的中轨值是逐渐变小的,也就是

LoopAnd({(BbUpper('D',20,2.0,#)+BbLower('D',20,2.0,#))/2<(BbUpper('D',20,2.0,#-1)+BbLower('D', 20, 2.0, #-1))/2}, -7, -5,1)

再配合上面的12,就是趋势下跌反转为上升趋势。

 

5.1.4 ADX

 

上图下面黄色标注区域,紫色线是ADX指标。ADX 无法告诉你趋势的发展方向。可是,如果趋势存在, ADX 可以衡量趋势的强度。不论上升趋势或下降趋势, ADX 看起来都一样。

上图中,我们不难发现,在上涨趋势中,ADX一直处于一个比较强的状态,下跌趋势中ADX也处于一个很强的状态,我们可以把ADX配合其他的趋势型指标,确定上涨趋势和下跌趋势的强弱。我们现在假定ADX大于30为趋势强进。

Adx

返回一个给定K线的平均定向指数的值。

Adx 是用来测量价格变动多少的趋势。

语法

Adx('interval', period, index)

interval 是任意支持的蜡烛线区间:1, 2, 3, 5, 7, 10, 15, 20, 30, 45, 60, 90, D, W, M.'D' 表示每天。'W' 表示每周。 'M'表示每月。

period 是计算Adx所用的阶段。

index 是蜡烛线指标,0表示当前,-1表示前一期,以此类推。

例子

Adx('5', 14, -1)

 

SMA趋势向上:

Sma(' CLOSE ', 'D', 5, -1) > Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

Macd趋势向上:

Macd('CLOSE', 'D', 12, 26, -4) < MacdSignal('CLOSE', 'D', 12, 26, 9, -4)

&LoopAnd( { Macd('CLOSE', 'D', 12, 26, #) > MacdSignal('CLOSE', 'D', 12, 26, 9, #))}, -3, -1,1)

BOLL趋势向上:

(BbUpper('D', 20, 2.0,-4)+BbLower('D', 20, 2.0, -4))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

&(BbUpper('D', 20,2.0,-6)+BbLower('D', 20, 2.0, -6))/2 > (BbUpper('D', 20, 2.0,-5)+BbLower('D', 20, 2.0, -5))/2

&LoopAnd({(BbUpper('D',20,2.0,#)+BbLower('D',20,2.0,#))/2>(BbUpper('D',20,2.0,#-1)+BbLower('D', 20, 2.0, #-1))/2}, -3, -1,1)

 

上面几个趋势向上的判断,我们都是以三个日k线作为趋势向上的判断,配合ADX,就是可以认为在这三天ADX>30,放开限制,就是两天大于30,那么

LoopCount( { Adx('D', 14, #)>=30},-3,-1,1)>=2

为了增加趋势向上判断的可靠性,增加趋势强度,我们都可以配合上ADX指标进行应用。

 

5.2 下降趋势

 

5.2.1 SMA短期下跌趋势反转

长期下跌之后,5sma拐头准备向上,短期形态向上,

MACD走势和sma走势基本相同,但是MACD的滞后性比较强。通过smamacd确定下跌趋势后的反弹形态,

Sma是近十个交易日最低点,T日的SMA要大于T-1日的sma

对策略思路进行一步步分拆分,把每一个条件都做出来,分别如下:

1 sma5一段时间内小于sma10,判断处于向下趋势:

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -15,-1,1)

 

2 sma5当天大于前一天的sma5,有反转趋势:

SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, 0)

 

我们使用SMA判断趋势短期反转的情况,这样可以得到如下

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -15,-1,1)

&SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, 0)

 

 

6. 交易场景

趋势形态中,找到对应K线形态的证券,我们需要在一个比较合适的价格进仓,并在达到预期的止盈止损点平仓。这样,我们就讲到了交易的应用,策略筛选出了好的证券,我们就需要在合适的价格,合适的时间上进仓和平仓。

 

6.1 趋势逆转

我们以5.2.1 SMA短期下跌趋势反转为例,如下图

由上面的图,我们可以看出,当SMA5突破SMA10之后,之后的两天SMA5>SMA10,我们可以认为向上突破后,短期趋势逆转,突破后的第二个交易日是建仓时机。

现在我们假定建仓日是T日,那么我们就需要修改之前突破的日期为T-2日,

原来的过滤器:

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -15,-1,1)

&SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, 0)

 

过滤器修改如下:

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -17,-3,1)

&SMA('CLOSE','D',5, -3) < SMA('CLOSE','D',5, -2)

 

我们是要T日建仓,那么T-1日的SMA5>SMA10:

SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, -1)

 

上面的组合完成,完整的过滤器如下:

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -17,-3,1)

&SMA('CLOSE','D',5, -3) < SMA('CLOSE','D',5, -2)

SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, -1)

 

如果上面的过滤器,我们不做任何设置,那么策略就会在上图的第二根曲线指示的K线位置建仓。

实际中,我们建仓,就需要做如下,

1 我们花多少钱买这个股票,

2 我们要买多少数量

3 什么时候止盈,什么时候止损

 这样就牵涉到了订单管理:

$QTY:100000/LAST;进仓数量=10万可用资金除以进仓价格(可指定进仓数量)

$LAST:LAST;进仓价格

$TARGET:$LAST*0.1;进仓价格的10%止盈

$STOP:$LAST*0.08;进仓价格的8%止损

我们把订单管理和过滤器组合起来,就是一个完整的策略

 

$QTY:100000/LAST;

$LAST:LAST;

$TARGET:$LAST*0.1;

$STOP:$LAST*0.08;

LoopAnd( { SMA('CLOSE','D',10, #)> SMA('CLOSE','D',5, #) }, -17,-3,1)

&SMA('CLOSE','D',5, -3) < SMA('CLOSE','D',5, -2)

SMA('CLOSE','D',5, -1) < SMA('CLOSE','D',5, -1)


6.2 趋势跟踪

 

我们以5.1.1的趋势向上场景为例,进行进仓

如上图我们可以在箭头标示的位置进行上升趋势的建仓,5.1.1的过滤器如下:

Sma(' CLOSE ', 'D', 5, -1)> Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

箭头标示的K线当天的最高价小于当天的SMA10,那我们就可以设置我们的进仓时间点,T-1K线当天的最高价小于当天的SMA10,那么我们在T日建仓:

BarHigh('D', -1) < Sma(' CLOSE ', 'D', 10, -1)

组合如下:

Sma(' CLOSE ', 'D', 5, -1) > Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

& BarHigh('D', -1)< Sma(' CLOSE ', 'D', 10, -1)

 

我们再按照趋势反转中的订单管理,加上自己的设置,我们设置最大使用自己200000建仓,止盈止损分别为8%5%,那么完整的策略如下:

$QTY:200000/LAST;

$LAST:LAST;

$TARGET:$LAST*0.08;

$STOP: $LAST*0.05;

Sma(' CLOSE ', 'D', 5, -1) > Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

&BarClose('D', -1) < Sma(' CLOSE ', 'D', 10, -1)

 

上面的图形中箭头标示的位置,还有sma5下穿sma10的情形,我们也可以设置为T-1sma5下穿sma10T日建仓,如下:

Sma(' CLOSE ', 'D', 5, -2) > Sma(' CLOSE ', 'D', 10, -2)

Sma(' CLOSE ', 'D', 5, -1) < Sma(' CLOSE ', 'D', 10, -2)

完整的策略如下:

$QTY:200000/LAST;

$LAST:LAST;

$TARGET:$LAST*0.08;

$STOP:$LAST*0.05;

Sma(' CLOSE ', 'D', 5, -1) > Sma(' CLOSE ', 'D', 10, -1)

&Sma(' CLOSE ', 'D', 10, -1) > Sma(' CLOSE ', 'D', 20, -1)

&Sma(' CLOSE ', 'D', 20, -1) > Sma(' CLOSE ', 'D', 60, -1)

&LoopCount ( { Sma(' CLOSE ', 'D', 10, -1) < Sma(' CLOSE ', 'D', 5, -1)},-15, -1,1)>10

& Sma(' CLOSE', 'D', 5, -2) > Sma(' CLOSE', 'D', 10, -2)

&Sma(' CLOSE', 'D', 5, -1) < Sma(' CLOSE', 'D', 10, -2)

我希望定期收到功能更新和策略思路。

还有其他问题?

给我们留言!
联系我们