返回首页
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!

量化交易策略——CCI指标

时间:2017-01-22 13:43来源:未知 作者:杨清婉 点击:
20世纪80年代,美国股市分析家唐纳德蓝伯特(Donald Lambert)发明了顺势指标,即CCI指标,早期被用于期货市场的判断,后来被广泛应用在股票市场的研判。与大多数技术分析指标相比,根据统计学原理的CCI指标是比较独特的,它通过测量股价的波动是否已超出其正

  20世纪80年代,美国股市分析家唐纳德·蓝伯特(Donald Lambert)发明了顺势指标,即CCI指标,早期被用于期货市场的判断,后来被广泛应用在股票市场的研判。与大多数技术分析指标相比,根据统计学原理的CCI指标是比较独特的,它通过测量股价的波动是否已超出其正常范围,来预测股价变化趋势的技术分析指标,属于超买超卖类指标的一种。

  CCI与其他技术分析指标一样,由于选用的计算周期不同,其中包括:分钟CCI指标、日CCI指标、周CCI指标、年CCI指标等很多种类型。其中,日、周CCI指标较为常用在股市研判。

  与其他技术分析指标相比,CCI指标的计算是比较复杂的,以日CCI计算为例的两种计算方法:

  1.CCI = (TP-MA)÷MD÷0.015

  其中:TP=(最高价 最低价 收盘价)÷3;

  MA= 最近N日收盘价的累计之和÷N;

  MD=最近N日(MA-收盘价)的累计之和÷N;

  0.015为计算系数,N为计算周期。

  2.中价与中价的N日内移动平均的差÷N日内中价的平均绝对偏差

  其中:中价=(最高价﹢最低价﹢收盘价)÷3;

  平均绝对偏差为统计函数。

  CCI指标和其他没有运行区域限制的指标不同之处就是,它有一个相对的技术参照区域,按市场的通行的标准可分为三大类:﹢100、﹣100和﹢100—﹣100之间:

  1.当CCI>﹢100时,表示股价已进入超买区间,需要多加关注股价的异动现象;

  2.当CCI<﹣100时,表示股价已进入超卖区间,投资者可以逢低吸纳股票;

  3.当CCI介于﹢100—﹣100之间时,表示股价处于窄幅振荡整理的区间——常态区间,投资者应以观望为主。

  CCI策略

  选取CCI处于100—150之间,处于上涨趋势的股票。

  

 

  

 

  

 

  

 

  

 

  from CAL.PyCAL import *

  import pandas as pd

  import numpy as np

  start = '2010-08-01' # 回测起始时间

  end = '2014-08-01' # 回测结束时间

  benchmark = 'HS300' # 策略参考标准

  universe = set_universe('HS300') # 证券池,支持股票和基金

  capital_base = 100000 # 起始资金

  freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测

  refresh_rate = 20 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,

  若freq = 'm'时间间隔为分钟

  def initialize(account): # 初始化虚拟账户状态

  pass

  def handle_data(account): # 每个交易日的买入卖出指令

  eq_CCI = cci(account,85)

  buylist = []

  for stk in account.universe:

  try:

  if eq_CCI[stk] > 100 and eq_CCI[stk] < 150:

  buylist.append(stk)

  except:

  pass

  for stk in account.valid_secpos:

  order_to(stk, 0)

  for stk in buylist[:]:

  if stk not in account.universe or account.referencePrice[stk] == 0 or np.isnan(account.referencePrice[stk]):

  bulist.remove(stk)

  for stk in buylist:

  order(stk, account.referencePortfolioValue/account.referencePrice[stk]/len(buylist))

  

 

  样本外测试

  from CAL.PyCAL import *

  import pandas as pd

  import numpy as np

  start = '2014-08-01' # 回测起始时间

  end = '2015-08-01' # 回测结束时间

  benchmark = 'HS300' # 策略参考标准

  universe = set_universe('HS300') # 证券池,支持股票和基金

  capital_base = 100000 # 起始资金

  freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测

  refresh_rate = 20 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,

  若freq = 'm'时间间隔为分钟

  def initialize(account): # 初始化虚拟账户状态

  pass

  def handle_data(account): # 每个交易日的买入卖出指令

  eq_CCI = cci(account,85)

  buylist = []

  for stk in account.universe:

  try:

  if eq_CCI[stk] > 100 and eq_CCI[stk] < 150:

  buylist.append(stk)

  except:

  pass

  for stk in account.valid_secpos:

  order_to(stk, 0)

  for stk in buylist[:]:

  if stk not in account.universe or account.referencePrice[stk] == 0 or np.isnan(account.referencePrice[stk]):

  bulist.remove(stk)

  for stk in buylist:

  order(stk, account.referencePortfolioValue/account.referencePrice[stk]/len(buylist))

  

 

相关阅读:从连锁餐饮到量化投资,其实没什么不一样

(责任编辑:admin)
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!
------分隔线----------------------------
云量化商城
如果您会开发策略,请进!大量项目等待与您合作!
推荐内容
量化投资培训