我有一列名为RSI
的值,我希望通过pandas实现以下效果:
1)如果RSI > 70
的值,则表示该股票处于超买状态。因此,它可能会在不久的将来下降(表明意见'-1')
2)如果RSI < 30
的值,则表示该股票处于超卖状态。因此,它可能在不久的将来上升(表示意见'+1')。
3)对于(30, 70)
之间的值,如果时间't'处的RSI在时间't-1'处大于RSI,则对趋势的意见表示为'+1'且反之亦然-versa。
我该怎么办?感谢。
答案 0 :(得分: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 = 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)
如果您希望计数器在时间t累积,无论是买入(+1)还是卖出(-1)。 如果要创建该更改的图表,请将这些值存储在一个系列中。
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是不同的股票,那么只需对您的列中的每个数组执行此操作。