股票程序化

一、T+1 股票程序化交易
      1、程序化选股
           案例1:选出N日内上涨天数多于下跌天数的股票
      2、T+1运行模组:对选好的股票进行程序化交易
           案例2:均线和布林通道趋势交易系统

二、T+0 股票程序化交易
      1、T+0运行模组:散户对被套股票进行日内交易,减少亏损
           案例3:日内新低做空策略



程序化交易在境外的股票市场和国内的期货市场已经得到广泛的应用,如果能将这种交易理念引入到股票交易中,会取得更好的收益。 股票程序化的优势体现在以下几点:
1、股票程序化可以针对一篮子股票进行程序化交易,通过这种交易的方式,投资者可以在分散风险的同时使资金使用率达到最大化。
2、在持有股票的情况下,股票程序化可以实现股票的T+0交易,盘活持仓,增加收益。
3、程序化交易利用计算机高速、快捷的处理能力,抓住股市上价格的瞬间变化,获得利润。


一、T+1 股票程序化交易


传统的股票交易在买入股票后,持有相当长一段时间,赚取长期趋势的利润。但持有的股票完全暴露于市场风险之下,也放弃了从市场环境中短期的变动中获利的可能;长期持有期间,资金一直处于占用状态,大大降低了资金的使用效率。用程序化交易的方式,可以帮助我们识别和利用市场的中短期价格波动,实现在波段中低买高卖,赚取更多利润。


1、程序化选股

公式选股是我们在股票交易过程中常用的工具,是否能选出入场位置优越的股票,是评判选股公式优劣的唯一标准。我们如果确定一个选股公式是否有效呢?下面我们看看如何使用选股回测功能对选股公式进行历史检测的。


案例1:选出N日内上涨天数多于下跌天数的股票

利用选股公式,选出指定的历史时间段中每天符合选股条件的股票,并且可以逐日查看股票明细及K线图

如:选出满足5日内阳线根数多于阴线的股票
选股公式:COUNT(ISDOWN,5)<COUNT(ISUP,5), SELECT;
步骤如下图:


还可以在这次选股结果的基础上,进一步使用其他选股公式进行筛选
选股公式:
B:=VOL>REF(VOL,1);
COUNT(B,3)=3, SELECT;
在进一步优选中选择该选股公式,即可之前选股基础上再次选股

我们通过对历史数据中选出的股票进行分析,便会很快的对选股公式进行判断,是否可以使用或者是否需要进一步优化等。


注:
1、编写选股公式时,选股条件需要用SELECT函数编写;
2、选股回测是基于日K线数据计算;
3、筛选结果是选择的日期对应的日K线满足条件的股票。


2、T+1运行模组:对选好的股票进行程序化交易


跟传统的股票持有方式相对,股票自动交易可以更加灵活的应对组合中各股票的价格波动,实现更多的买卖机会,创造更多利润。


案例2:均线和布林通道趋势交易系统

我们利用指数加权移动平均线和BOLL通道两种技术分析指标,构建双指标的趋势交易系统
如下:
UPPERMA:=EMA(HIGH,30);//计算30根K线最高价的EMA
LOWERMA:=EMA(LOW,30);//计算30根K线最低价的EMA
MID:=MA(CLOSE,26);//布林通道中轨
TMP2:=STD(CLOSE,26);
TOP:=MID+2*TMP2;//布林通道上轨
BOTTOM:=MID-2*TMP2;//布林通道下轨
C>UPPERMA&&C>TOP,BK(1000);//买入
L<LOWERMA&&L<BOTTOM,SP(AVAILABLE_OPI);//卖出
CROSSDOWN(C,BKHIGH-5),SP(AVAILABLE_OPI);//止损
AUTOFINANCING;//自动入金

回测效果:
将该策略在15只股票构成的股票组合中回测,在2011年-2016年中,该策略在股票篮子中的资金曲线与买入持有策略的资金曲线对比如下:



两种策略的收益情况对比如下:
买入持有策略 程序化波段交易
盈利率 资金占用天数占比 盈利率 资金占用天数占比
太原重工 -41.32% 100.00% 65.78% 41%
天成控股 23.22% 100.00% 36.28% 42%
东方航空 -1.31% 100.00% 37.56% 38%
宏图高科 73.96% 100.00% 123.87% 42%
西部资源 -10.15% 100.00% 22.22% 39%
金发科技 -24.61% 100.00% 2.88% 44%
中国船舶 -28.48% 100.00% 23.88% 32%
航天机电 -15.21% 100.00% 13.79% 46%
巨化股份 8.01% 100.00% 33.96% 39%
波导股份 122.31% 100.00% 200.19% 46%
中国平安 32.80% 100.00% 21.34% 35%
太极集团 104.30% 100.00% 130.57% 72%
宜华健康 520.71% 100.00% 648.96% 46%
中粮地产 64.91% p >100.00% 51.63% 41%
宁波联合 17.05% 100.00% 47.32% 44%

一篮子股票组合 14%   58%

加载运行:


步骤一:菜单栏》编写,选择批量回测的功能
步骤二:在股票篮子上点击右键》回测合约池
步骤三:回测完成后,在资金曲线右键》装入到模组,后台运行


加载完成后,在股票合约运行模组中,可以查看各模组运行情况,模组之间独立运行、互不干扰。由于模型中有AUTOFINANCING函数,各个模组按需自动入金,


二、T+0 股票程序化交易


合理利用规则,程序化交易模型把前一天的持仓卖掉当天再买回来,先卖后买一样可以日内盈利,变相实现了股票T+0交易。 散户可对被套股票进行日内交易,减少亏损;机构可盘活持仓,创造附加利润。


1、T+0运行模组:散户对被套股票进行日内交易,减少亏损

散户解套型T+0交易:普通散户可以利用被套牢的股票,根据当日的行情走势高抛低吸,变相实现T+0交易,减少亏损。这种交易方式是在一个交易日内先卖后买,一个交易日实际上只能进行一次完整的交易。


案例3:日内新低做空策略


在编写T+0交易的模型时,在模型中加入STOCKT0函数,可以将模型设置为日内模型,但是只能每天做一次完整交易(一次完整交易,是指底仓额底减少后,恢复到底仓额度为一次交易)。

我们利用下面模型进行T+0交易:
N:=BARSLAST(DATE< >REF(DATE,1))+1;
RC:=VALUEWHEN(DATE< >REF(DATE,1),REF(C,1));
OO:=VALUEWHEN(DATE< >REF(DATE,1),O);
DN:=VALUEWHEN(DATE< >REF(DATE,1),L);
OO<RC*(1-0.0001)&&C<DN&&N>=2,SK(1000); TIME>=1450,BP(1000);
STOCKT0;


注:

1.股票T+0必须在回测参数中设置底仓额度,底仓额度用尽不可以再卖出股票,底仓满额不可以再买入股票;
2.STOCKT0函数设置模型T+0标志,但是只能每天做一次完整交易(一次完整交易,是指底仓额底减少后,恢复到底仓额度为一次交易);
3.模型中的SK信号实际是卖出股票;BP信号实际是买入股票。当资金不够买入股票时,后续信号终止,不再计算信号;
4.当股票T+0遇到除权除息,股票股权登记日,就将股票还原回初始。后续可以继续重新开始出信号。此处出信号方式不受过滤非过滤影响。


加载运行:

步骤一:在回测参数中设置底仓额度、资金等内容
步骤二:将模型加载到主图中进行回测
步骤三:回测完成后,在K线图右键》装入到模组,后台运行