gpt4 book ai didi

python - 从逐笔报价数据到烛台

转载 作者:太空狗 更新时间:2023-10-29 22:05:52 25 4
gpt4 key购买 nike

我有外汇对的逐笔报价

这是 EURUSD/EURUSD-2012-06.csv 的示例

EUR/USD,20120601 00:00:00.207,1.23618,1.2363
EUR/USD,20120601 00:00:00.209,1.23618,1.23631
EUR/USD,20120601 00:00:00.210,1.23618,1.23631
EUR/USD,20120601 00:00:00.211,1.23623,1.23631
EUR/USD,20120601 00:00:00.240,1.23623,1.23627
EUR/USD,20120601 00:00:00.423,1.23622,1.23627
EUR/USD,20120601 00:00:00.457,1.2362,1.23626
EUR/USD,20120601 00:00:01.537,1.2362,1.23625
EUR/USD,20120601 00:00:03.010,1.2362,1.23624
EUR/USD,20120601 00:00:03.012,1.2362,1.23625

完整的报价数据可以在这里下载 http://dl.free.fr/k4vVF7aOD

列是:

Symbol,Datetime,Bid,Ask

我想将逐笔报价数据转换为烛台数据(也称为 OHLC 开高低收)我会说我想要一个 M15 时间范围(15 分钟)作为示例

我想使用 Python 和 Pandas 库来完成这个任务。

我已经完成了部分工作......逐笔读取数据文件

这是代码

#!/usr/bin/env python

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.finance import candlestick
from datetime import *

def conv_str_to_datetime(x):
return(datetime.strptime(x, '%Y%m%d %H:%M:%S.%f'))

df = pd.read_csv('test_EURUSD/EURUSD-2012-07.csv', names=['Symbol', 'Date_Time', 'Bid', 'Ask'], converters={'Date_Time': conv_str_to_datetime})

PipPosition = 4
df['Spread'] = (df['Ask'] - df['Bid']) * 10**PipPosition

print(df)

print("="*10)

print(df.ix[0])

但现在我不知道如何开始剩下的工作...

我想得到这样的数据

Symbol,Datetime_open_candle,open_price,high_price,low_price,close_price

蜡烛的价格将基于出价列。

问题的第一部分在我看来是获取第一个 Datetime_open_candle(与所需的时间范围兼容,假设变量的名称是 dt1)和最后一个 Datetime_open_candle(假设这个变量的名称是dt2).

之后我可能需要从 dt1 获取数据到 dt2(而不是 dt1 之前和 dt2 之后的数据)

知道 dt1 和 dt2 以及所需的时间范围,我就可以知道我将拥有的蜡烛数...

我“只是为了”知道每根蜡烛的开盘价/最高价/最低价/收盘价。

我正在寻找一种非常快速的算法,如果可能的话,一个向量化的算法(如果可能的话),因为报价数据可能非常大。

最佳答案

In [59]: df
Out[59]:
Symbol Bid Ask
Datetime
2012-06-01 00:00:00.207000 EUR/USD 1.23618 1.23630
2012-06-01 00:00:00.209000 EUR/USD 1.23618 1.23631
2012-06-01 00:00:00.210000 EUR/USD 1.23618 1.23631
2012-06-01 00:00:00.211000 EUR/USD 1.23623 1.23631
2012-06-01 00:00:00.240000 EUR/USD 1.23623 1.23627
2012-06-01 00:00:00.423000 EUR/USD 1.23622 1.23627
2012-06-01 00:00:00.457000 EUR/USD 1.23620 1.23626
2012-06-01 00:00:01.537000 EUR/USD 1.23620 1.23625
2012-06-01 00:00:03.010000 EUR/USD 1.23620 1.23624
2012-06-01 00:00:03.012000 EUR/USD 1.23620 1.23625

In [60]: grouped = df.groupby('Symbol')

In [61]: ask = grouped['Ask'].resample('15Min', how='ohlc')

In [62]: bid = grouped['Bid'].resample('15Min', how='ohlc')

In [63]: pandas.concat([ask, bid], axis=1, keys=['Ask', 'Bid'])
Out[63]:
Ask Bid
open high low close open high low close
Symbol Datetime
EUR/USD 2012-06-01 00:15:00 1.2363 1.23631 1.23624 1.23625 1.23618 1.23623 1.23618 1.2362

关于python - 从逐笔报价数据到烛台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com