在Python中计算交易指标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python中计算交易指标相关的知识,希望对你有一定的参考价值。
我想请求以下代码的帮助:
di = (sm - 1.0) / 2.0 + 1.0
c1 = 2 / (di + 1.0)
c2 = 1 - c1
c3 = 3.0 * (cd * cd + cd * cd * cd)
c4 = -3.0 * (2.0 * cd * cd + cd + cd * cd * cd)
c5 = 3.0 * cd + 1.0 + cd * cd * cd + 3.0 * cd * cd
asset['i1']=0
asset['i2']=0
asset['i3']=0
asset['i4']=0
asset['i5']=0
asset['i6']=0
asset['i1'] = c1*asset['C'] + c2*(asset['i1'].shift(1))
asset['i2'] = c1*asset['i1'] + c2*(asset['i2'].shift(1))
asset['i3'] = c1*asset['i2'] + c2*(asset['i3'].shift(1))
asset['i4'] = c1*asset['i3'] + c2*(asset['i4'].shift(1))
asset['i5'] = c1*asset['i4'] + c2*(asset['i5'].shift(1))
asset['i6'] = c1*asset['i5'] + c2*(asset['i6'].shift(1))
如何更改代码,以便计算每个新行使用前一行计算?问题是目前它正在使用前一行的0。目标是用Python计算珊瑚趋势指标。有一个名为“asset”的pandas DataFrame,其中包含价格和日期作为时间戳。值c1,c2,c3,c4,c5是指标常数。我们需要为整个数据帧计算“i1,'i3'... i6”。每行都是从前一行计算出来的,不管怎样,可能应该在数据帧上使用'apply'函数,因为当前它正在计算整个列(使用先前定义的零,而不是前一行的实际值)。 DataFrame是quete big有更快的方法,因为在pandas数据帧中使用“for”需要花费大量的时间
谢谢
答案
只需创建一个for循环并保持前一个变量,如下所示:
di = (sm - 1.0) / 2.0 + 1.0
c1 = 2 / (di + 1.0)
c2 = 1 - c1
c3 = 3.0 * (cd * cd + cd * cd * cd)
c4 = -3.0 * (2.0 * cd * cd + cd + cd * cd * cd)
c5 = 3.0 * cd + 1.0 + cd * cd * cd + 3.0 * cd * cd
asset['i1'] = c1*asset['C'] + c2*(asset['i1'].shift(1))
var = asset['i1']
for index in range(2,7):
asset['i'+ str(index)] = c1*var + c2*(asset['i'+ str(index)].shift(1))
以上是关于在Python中计算交易指标的主要内容,如果未能解决你的问题,请参考以下文章