繁體

简单应用
例一:选出昨日跌幅大于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]"代表AB之比,"rng>=0.98 and rng<1.02"代表AB之比接近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 ;

 


Copyright (c) 香港捷利资讯有限公司 版权所有,并受法律保护。未经本公司正式书面同意,不得将全部或部分内容,转载于任何形式媒体。