我有一个名为RSI的值列,我想通过pandas实现以下效果:
1)如果RSI > 70的值,意味着股票是超买的。因此,它可能会在不久的将来下降(表示意见‘-1’)
2)如果RSI < 30的值,意味着股票是超卖的。因此,它可能会在不久的将来上升(表示意见‘+1’)。
3)对于(30, 70)之间的值,如果t时刻的RSI大于t-1时刻的RSI,则对趋势的看法表示为‘+1’,反之亦然。
我该怎么办呢。谢谢。
发布于 2018-03-02 16:27:25
import pandas as pd
import numpy as np
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opinion = 0
for i in t:
if i!=0:
if RSI[i] > 70:
opinion -=1
elif RSI[i] < 30:
opinion += 1
elif RSI[i] > RSI[i-1]:
opinion += 1
elif RSI[i] < RSI[i-1]:
opinion -= 1
print(opinion)无论是买入(+1)还是卖出(-1),如果你想让计数器随着时间t累积。如果您想要生成该更改的图形,请将这些值存储在Series中。
import pandas as pd
import numpy as np
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opcount = 0
opinion =[]
for i in t:
if i!=0:
if RSI[i] > 70:
opcount -= 1
opinion.append(opcount)
elif RSI[i] < 30:
opcount += 1
opinion.append(opcount)
elif RSI[i] > RSI[i-1]:
opcount += 1
opinion.append(opcount)
elif RSI[i] < RSI[i-1]:
opcount -= 1
opinion.append(opcount)
opinion = pd.Series(opinion)
print(opinion)如果你只想要一个+1,-1,0的数组,可以做同样的事情,但不需要+=或-=。
import pandas as pd
import numpy as np
import random
RSI = pd.Series(np.random.randn(50))
t = pd.Series(list(range(50)))
opinion =[]
for i in t:
if i!=0:
if RSI[i] > 70:
opinion.append(-1)
elif RSI[i] < 30:
opinion.append(1)
elif RSI[i] > RSI[i-1]:
opinion.append(1)
elif RSI[i] < RSI[i-1]:
opinion.append(-1)
else:
opinion.append(0)
else:
opinion.append(0)
opinion = pd.Series(opinion)
print(opinion)然后,您可以将其绘制为随着时间的推移显示为购买或不购买。这是假设你的RSI列是一段时间内股票的值,如果每个RSI是不同的股票,那么只需对列中的每个数组执行此操作。
https://stackoverflow.com/questions/49064780
复制相似问题