优化CCI并底通达信指标公式源码
在通达信软件中,CCI(顺势指标)是一种常用的技术分析指标,用于判断股价的超买超卖状态。CCI指标源码如下所示:
```python
'''
该CCI函数传入参数为:high,low,close,n,例如:cci(高价,低价,收盘价,计算周期)
计算方法:
1.计算典型价(Typical Price):=(High+Low+Close)/3
2.计算典型价的移动平均数:=SMA(Typical Price,N)
3.计算MD(平均绝对偏离) =SUM(ABS(Typical Price-SMA),N)
=(Typical Price-Moving Average)/0.015/MD
其中,SMA是简单移动平均数,SUM是求和函数,ABS是取绝对值函数。
'''
def cci(high, low, close, n):
typical_price = (high + low + close) / 3
moving_average = []
md = []
cci_value = []
for i in range(len(typical_price)):
if i < n:
moving_average.append(None)
md.append(None)
cci_value.append(None)
else:
moving_average.append(sum(typical_price[i-n:i]) / n)
md_value = sum(abs(typical_price[i-n:i] - moving_average[i])) / n
md.append(md_value)
cci_value.append((typical_price[i] - moving_average[i]) / (0.015 * md_value))
return cci_value
```
以上是一个简单的CCI指标的计算函数,需要传入股价的高价、低价、收盘价以及计算周期n,返回一个CCI指标值的列表。
为了优化CCI指标的计算效率,可以考虑以下步骤:
1. 使用numpy库的向量化计算,将循环计算替换为数组运算,可以提高计算速度。
2.通过使用差分算法来计算移动平均线和绝对偏离的减小时间复杂度。
下面是优化后的CCI指标源码:
```python
import numpy as np
def cci(high, low, close, n):
typical_price = (high + low + close) / 3
moving_average = np.cumsum(typical_price, dtype=float)
moving_average[n:] = moving_average[n:] - moving_average[:-n]
moving_average[:n] = moving_average[n-1] / n
md = np.cumsum(np.abs(typical_price - moving_average), dtype=float)
numpy库运行速度md[n:] = md[n:] - md[:-n]
md[:n] = md[n-1] / n
cci_value = (typical_price - moving_average) / (0.015 * md)
return cci_value
```
通过利用numpy库的向量化计算和差分算法,可以大幅提高CCI指标的计算速度。
以上是一个简单的CCI指标的优化源码,可以根据个人需求进行修改和扩展。