我找不到以下问题的解决方案。
给定一个具有列['Open', 'High', 'Low', Close']
的数据框,我想让其他列的斐波那契水平设为N回顾期。
伪代码如下:
look_back_period = 895
maxr = highest(close, look_back_period)
minr = lowest(close, look_back_period)
ranr = maxr - minr
ON = maxr
SS = maxr - 0.236 * ranr
SO = maxr - 0.382 * ranr
FI = maxr - 0.50 * ranr
TE = minr + 0.382 * ranr
TT = minr + 0.236 * ranr
ZZ = minr
我想在上面的列中输入相对编号。仅当minr
或maxr
发生变化时,这种情况才会改变。
希望这很清楚。
答案 0 :(得分:0)
假设您的数据已经存在于名为df
的熊猫数据框中,则可以使用熊猫apply
方法获得所需的功能:
lookBack = 895
def minFunction(row):
if row.name < lookBack:
return 0
return df['Close'].loc[row.name - lookBack:row.name].min()
df['minr'] = df.apply(minFunction, axis = 1)
您可以继续以相同的方式实施maxFunction
。
我希望这个答案可以帮助您解决问题。
答案 1 :(得分:0)
这是如何解决的。不知道这是否是最有效的方法,但想共享它。
look_back_period = 895
c = 0
ON = []
SS = []
TT = []
ZZ = []
for i in df['Close']:
if c + look_back_period < len(df):
df2 = df.iloc[c : c + look_back_period, : ]
maxr = df2['Close'].max()
minr = df2['Close'].min()
ranr = maxr - minr
ON.append(maxr)
SS.append(maxr - 0.236 * ranr)
TT.append(minr + 0.236 * ranr)
ZZ.append(minr)
c = c + 1
else:
break
df = df.head(-895)
df['ON'] = ON
df['SS'] = SS
df['TT'] = TT
df['ZZ'] = ZZ
df = df.to_csv('5_min_fibonacci_values.csv', index=False)