用Pandas构建指示分形

o2gm4chl  于 2023-01-19  发布在  其他
关注(0)|答案(1)|浏览(109)

我的数据框如下所示:

<DATE>,<TIME>,<PRICE>
20200702,110000,207.2400000
20200702,120000,207.4400000
20200702,130000,208.2400000
20200702,140000,208.8200000
20200702,150000,208.0700000
20200702,160000,208.8100000
20200702,170000,209.4300000
20200702,180000,208.8700000
20200702,190000,210.0000000
20200702,200000,209.6900000
20200702,210000,209.8700000
20200702,220000,209.8000000
20200702,230000,209.5900000
20200703,000000,209.6000000
20200703,110000,211.1800000
20200703,120000,209.3900000
20200703,130000,209.6400000

我想在这里添加另外两个布尔列,称为“向上分形”和“向下分形”。
这是股票市场指标分形周期5。
意思是:
1.脚本从第一行运行到最后一行。
1.脚本获取当前行并查看PRICE。
1.脚本采用前5行和后5行。
1.如果当前行的PRICE是最大值,则称为“向上分形”。“向上分形”列中的真值
1.如果当前行的PRICE是最小值,则称为“向下分形”。列“向下分形”中的真值
在股票市场图表上,它看起来像这样(这是一个来自互联网的例子,而不是关于我的DataFrame)

用python的标准方法找分形对我来说很容易。但是我需要panda的高速。
请帮帮我。我对Pandas图书馆很陌生。

qni6mghb

qni6mghb1#

from binance.spot import Spot
import pandas as pd
from pandas import DataFrame
import numpy as np

if __name__ == '__main__':
    cl = Spot()
    r = cl.klines("BTCUSDT", "5m", limit = "100")
    df = DataFrame(r).iloc[:, :6]
    df.columns = list("tohlcv")

    # number of rows to calculate fractal
    n = 10

    df = df.astype({'t': int})
    df = df.astype({'o': float})
    df = df.astype({'h': float})
    df = df.astype({'l': float})
    df = df.astype({'c': float})

     
    # the first way
    df['uf'] = (df['h'] == df['h'].rolling(n+n+1, center=True).max())
    df['df'] = (df['l'] == df['l'].rolling(n+n+1, center=True).min())

    # the second way
    df['upfractal'] = np.where(df['h'] == df['h'].rolling(n+n+1, center=True).max(), True, False)
    df['downfractal'] = np.where(df['l'] == df['l'].rolling(n+n+1, center=True).min(), True, False)
  
    print(df)
   
    df.to_csv('BTC_USD.csv')

相关问题