【问题标题】:Fibonacci retracement for stock timeseries data股票时间序列数据的斐波那契回撤
【发布时间】:2019-11-12 13:12:21
【问题描述】:

我找不到以下问题的解决方案。 给定一个包含['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

我希望上面的列带有相对编号。仅当minrmaxr 发生更改时才会更改。

希望它足够清楚。

【问题讨论】:

  • 嘿伙计,欢迎来到 SO,阅读 How to Ask,如果可能的话 - 发布一些示例(或真实)数据和您的预期输出。

标签: python pandas time-series fibonacci


【解决方案1】:

假设您的数据已经在名为 df 的 pandas 数据框中,您可以使用 pandas 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。 我希望这个答案可以帮助您解决问题。

【讨论】:

  • 这对一个人来说是件好事。但我想有一个全新的斐波那契列,只有在之前的look_back_period中,maxr的数字更大,minr的数字更低时才会改变。
  • 啊抱歉,我不明白。我编辑了我的答案,它现在应该适合你的问题;)
【解决方案2】:

这是怎么解决的。不知道这是否是最有效的方式,但我想分享一下。

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多