外汇数据 - 分析日内数据

时间:2013-04-07 07:26:56

标签: python pandas

我最近刚刚发现了大熊猫和蟒蛇。我已经通过Wes'本书,加上我在SO上反复搜索大熊猫标记的问题,以收集这个问题的答案。所以我试过......不幸的是,我微薄的编程智能正在闪耀;)

以下是我要做的事情:

我有Intraday FX数据(每小时),我试图做一些非常简单的分析。我希望测试价格测试每日开放水平的频率,并拒绝或通过它。

这对我来说似乎很简单......我只是迷失了将所有组件组合在一起以获得最终的完整解决方案。

在psuedocode中,这是我想要实现的目标:

  • 通过read_csv
  • 读取数据
  • 计算每日开放水平(使用at_time?)
  • 适用于所有小时蜡烛
    • 测试蜡烛是否低于每日开放水平
    • 测试蜡烛的关闭是否高于每日开放水平

如果有人能指出我正确的方向,我真的很感激。我正处于放弃这一点的地步。我觉得答案应该很简单,但我现在迷失了

以下是我一直在使用的数据:

data = pd.read_csv('data/GBPUSD60.csv', 
                names=['Date','Time','Open','High','Low','Close','Volume'],
                parse_dates={'Timestamp': ['Date', 'Time']},
                index_col=['Timestamp'])

                # Get rid of the volume
                del data['Volume']

结果DF:

                     Open    High    Low     Close   
Timestamp                   
2012-11-14 04:00:00  1.58766 1.58890 1.58749 1.58877      
2012-11-14 05:00:00  1.58874 1.58887 1.58819 1.58849      
2012-11-14 06:00:00  1.58849 1.58921 1.58831 1.58890      
2012-11-14 07:00:00  1.58890 1.58895 1.58811 1.58876      
2012-11-14 08:00:00  1.58874 1.58934 1.58841 1.58849      

我假设我需要采取以下两种方式之一:

  • 按天分组数据并循环遍历行以测试​​日内蜡烛。
  • 其次,我可以使用df.apply函数并生成一个测试蜡烛的函数

任何一种方法的问题都是我在尝试访问我需要的字段时会遇到各种麻烦。

1 个答案:

答案 0 :(得分:1)

您的伪代码已被发现。这是语义

第1步:制作日期栏

df['date'] = [i.date() for i in df.index]

第2步:每天开放(假设开盘价是当天第一支蜡烛的开盘价)

df['dailyOpen'] = df.groupby('date').open.transform(lambda s: s[0])

第3步:比较

df['flag'] = (df.low < df.dailyOpen) & (df.close > df.dailyOpen)

如果你想要一天中发生上述次数,这应该可行

res = df.groupby('date').flag.sum()