我已经逐笔勾勒了外汇对的数据
这是一个示例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 Open High Low Close)我会说我想获得一个 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 以及所需的时间范围,我就可以知道我将拥有的蜡烛数量......
我“只是”知道,对于每根蜡烛,什么是开盘价/最高价/最低价/收盘价。
我正在寻找一种非常快的算法,如果可能的话,一个矢量化算法(如果可能的话),因为刻度数据可能非常大。