python计算asi指标值
时间: 2024-05-27 14:14:56 浏览: 187
抱歉,我是一名语言模型,无法直接执行代码。但我可以提供一些思路,帮助您计算ASI指标值。
ASI指标是Accumulative Swing Index的缩写,是一种技术分析指标,用于评估价格波动趋势的强度。ASI指标的计算方法较为复杂,需要依次计算每一笔交易的ASI值。
以下是ASI指标的计算公式和步骤:
1. 计算每一笔交易的True Range(TR):
TR = max(high - low, abs(high - preClose), abs(low - preClose))
其中,high、low和preClose分别表示当日的最高价、最低价和前一日的收盘价。
2. 计算每一笔交易的Directional Movement(DM):
+DM = high - preHigh
-DM = preLow - low
如果+DM和-DM都为0,则+DM和-DM的值都为0;如果+DM大于-DM,则-DM的值为0;如果-DM大于+DM,则+DM的值为0。
3. 计算每一笔交易的Directional Movement Index(DMI):
+DMI = 100 * EMA(+DM, n) / TR
-DMI = 100 * EMA(-DM, n) / TR
其中,EMA表示指数移动平均,n为指数移动平均的周期,通常取14。
4. 计算Swing Index(SI)和Accumulative Swing Index(ASI):
a. 计算每一笔交易的R:
R = SI[t - 1] + 0.5 * DM[t - 1] + 0.25 * DM[t]
其中,t表示当前交易日的序号,SI[t-1]表示前一笔交易的Swing Index值。
b. 计算每一笔交易的SI:
如果DMI[t]大于DMI[t-1],则SI[t] = R + max(high[t-1] - preClose[t], preClose[t] - low[t-1]);
如果DMI[t]小于DMI[t-1],则SI[t] = R + max(high[t-1] - preClose[t], preClose[t] - low[t-1]) - min(low[t-1] - preClose[t], preClose[t] - high[t-1]);
如果DMI[t]等于DMI[t-1],则SI[t] = R + max(high[t-1] - preClose[t], preClose[t] - low[t-1]) + abs(DM[t]);
c. 计算每一笔交易的ASI:
如果SI[t]大于SI[t-1],则ASI[t] = ASI[t-1] + SI[t];
如果SI[t]小于SI[t-1],则ASI[t] = ASI[t-1] + 0.5 * SI[t];
如果SI[t]等于SI[t-1],则ASI[t] = ASI[t-1];
其中,ASI[0] = 0。
以上是ASI指标的计算公式和步骤,您可以使用Python编写代码,依次计算每一笔交易的ASI值。希望对您有所帮助!
阅读全文