外国為替ペアのダニデータをチェックしました
これがのサンプルです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、および希望する時間枠がわかれば、キャンドルの数を知ることができます...
私は、ろうそくごとに、始値/高値/安値/終値を「知っている」だけです。
ダニのデータは非常に大きくなる可能性があるため、可能であればベクトル化されたアルゴリズム(可能であれば)を探しています。