在Larry Connors的技术交易书中,我发现了一个简单的指标,即对于金融资产时间序列,它衡量的是同一方向的连续关闭数。个别日子的得分为-1,0或+1,取决于收盘价是否低于,等于或高于前一收盘价。
系列每天递增关闭的方向相同,当方向改变时,它会重置为-1,0或1。
这就是我到目前为止:
df['sign'] = np.sign(np.log(df['close']/df['close'].shift(1)).map(str)
df['streak'] = df.groupby((df['sign'] != df['sign'].shift(1)).cumsum()).cumcount()+1
这捕获条纹,但不指示方向,因为我使用资产的返回
(np.log(DF [ '关闭'] / DF [ '关闭']。移位(1))
我今天收盘=昨天收盘时没有捕捉到0的状态。 如何修改代码以捕获效果;如果可能,没有“签名”栏?
答案 0 :(得分:1)
你在99%的路上:
df['sign'] = np.sign(np.log(df['close']/df['close'].shift(1))).map(str)
df['streak'] = df.groupby((df['sign'] !=df['sign'].shift(1)).cumsum()).cumcount()+1
df['final_streak'] = df['sign'].astype(float)*df['streak']
应该给你你想要的东西(不知道怎么做而不使用sign栏,考虑到你已经完成的工作,这个解决方案似乎最简单。)