Python,将记号数据转换为OHLCs

2024-04-25 17:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中将tick数据从GainCapital转换为OHLCs,但遇到了一些问题

源数据链接在这里http://ratedata.gaincapital.com/

我输入的代码如下:

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

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

df = pd.read_csv('USD_JPY_Week3.csv', names=['lTid', 'cDealable', 'CurrencyPair', 'RateDateTime','RateBid','RateAsk'], 
                 converters={'RateDateTime': conv_str_to_datetime}) # or change 'converters' to 'parse_dates=True' here

grouped = df.groupby('CurrencyPair')
ask =  grouped['RateAsk'].resample('15Min').ohlc()
bid = grouped['RateBid'].resample('15Min').ohlc()
pandas.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid'])

当我使用converters时,我得到:

ValueError: time data 'RateDateTime' does not match format '%Y/%m/%d %H:%M:%S'

当我用parse_dates=True替换它时,Python返回:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'

我完全困惑于此,如果有人能帮助我使我的代码工作,我将不胜感激。你知道吗

enter image description here 请注意,在截图中我用红色圆圈突出显示了同一单元格的日期时间之间的差异,这可能是原因之一,但我不确定

文件的前10行如下:

lTid    cDealable   CurrencyPair    RateDateTime    RateBid RateAsk
6858533811  D   USD/JPY 00:06.4 110.585 110.605
6858534097  D   USD/JPY 03:10.1 110.584 110.604
6858534127  D   USD/JPY 03:30.1 110.583 110.603
6858534151  D   USD/JPY 04:11.6 110.58  110.593
6858534284  D   USD/JPY 05:15.4 110.58  110.591
6858534287  D   USD/JPY 05:15.6 110.58  110.59
6858534316  D   USD/JPY 05:30.1 110.58  110.591
6858534335  D   USD/JPY 05:34.9 110.565 110.585
6858534342  D   USD/JPY 05:35.1 110.565 110.58

Tags: to数据代码importpandasdatetimeasusd