何時間も探してきたので、親切にしてください。
Pythonで過去のForexデータを取得するためのソリューションが必要です。
株式の場合は簡単です。
import pandas as pd
import pandas_datareader as pdr
start = dt.date.today() - dt.timedelta(days=30)
end = dt.date.today()
df = pdr.DataReader('AAPL', 'google', start, end)
print(df.head())
Google、yahoo、fred、oandaを試しました。何も動作しないようです。
データをリクエストする方法のコード例を教えてください。 (ほとんどの場合、1行で問題ありません)。
ありがとうございました。
過去の通貨値だけが必要ですか?
forex_python
datetime
クラスを持つモジュール(datetime
モジュールから)。私はpython 3を使用していますが、それがあまりにも重要であることを疑っています。
これらの為替レートは、1999年以降の欧州中央銀行からの午後3時(CET)のデータです。
>>> from datetime import datetime
>>> from forex_python.converter import get_rate
>>> t = datetime(2001, 10, 18) # the 18th of October, 2001
>>> get_rate("USD", "GBP", t)
0.69233
>>> get_rate("GBP", "USD", t)
1.4444
>>> 1 / 1.4444 # check
0.6923289947382997
>>> t = datetime(2006, 6, 26) # June 26th, 2006
>>> get_rate("GBP", "USD", t)
1.8202
そう
01/10/01、1 USD == 0.69 GBP、
2006年6月26日、1ポンド== 1.82米ドル。
小売ブローカーのフィードは常にゆがんでいますが、良い歴史的なフィードがないことに同意しません。 FXの業界標準は [〜#〜] ebs [〜#〜] フィードです。ただし、これは高価なオプションです。 FXMarketAPI は、これに厳密に一致するフィードを提供します。どのブローカーとも提携していません。 APIにはpandasエンドポイントがあり、データのプルに役立ちます。無料ユーザーのリクエスト数は1000に制限されていますが、以下の例をご覧ください。
URL = "https://fxmarketapi.com/apipandas"
params = {'currency' : 'EURUSD',
'start_date' : '2018-07-02',
'end_date':'2018-12-06',
'api_key':'**************'}
response = requests.get("https://fxmarketapi.com/apipandas", params=params)
df= pd.read_json(response.text)
たぶん、あなたは十分に頑張っていません:)数か月前にこれを公開した非常に見栄えの良い章。確かに、これは最良のコード(最初のオープンソースプロジェクト)ではありませんが、現在開発中であり、継続的に改善されています。次のバージョンはより効率的でクリーンになります。
FXCMの履歴データをすべてMariadbにローカルに保存するように設計されています。
+---------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+--------+
| date | bidopen | bidhigh | bidlow | bidclose | askopen | askhigh | asklow | askclose | volume |
+---------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+--------+
| 2017-04-27 10:01:00 | 17.294000 | 17.296000 | 17.289000 | 17.290000 | 17.340000 | 17.340000 | 17.334000 | 17.335000 | 113 |
| 2017-04-27 10:02:00 | 17.290000 | 17.298000 | 17.285000 | 17.295000 | 17.335000 | 17.342000 | 17.330000 | 17.340000 | 114 |
| 2017-04-27 10:03:00 | 17.295000 | 17.301000 | 17.289000 | 17.299000 | 17.340000 | 17.347000 | 17.340000 | 17.344000 | 98 |
| 2017-04-27 10:04:00 | 17.299000 | 17.300000 | 17.286000 | 17.295000 | 17.344000 | 17.345000 | 17.330000 | 17.340000 | 124 |
| 2017-04-27 10:05:00 | 17.295000 | 17.295000 | 17.285000 | 17.292000 | 17.340000 | 17.340000 | 17.330000 | 17.336000 | 130 |
| 2017-04-27 10:06:00 | 17.292000 | 17.292000 | 17.279000 | 17.292000 | 17.336000 | 17.336000 | 17.328000 | 17.332000 | 65 |
| 2017-04-27 10:07:00 | 17.292000 | 17.304000 | 17.287000 | 17.298000 | 17.332000 | 17.348000 | 17.332000 | 17.345000 | 144 |
| 2017-04-27 10:08:00 | 17.298000 | 17.306000 | 17.297000 | 17.302000 | 17.345000 | 17.350000 | 17.343000 | 17.346000 | 96 |
| 2017-04-27 10:09:00 | 17.302000 | 17.303000 | 17.294000 | 17.294000 | 17.346000 | 17.346000 | 17.338000 | 17.338000 | 50 |
| 2017-04-27 10:10:00 | 17.294000 | 17.296000 | 17.281000 | 17.291000 | 17.338000 | 17.338000 | 17.328000 | 17.333000 | 50 |
または、基本的なツールを使い始めて、独自のツールを構築したい場合。
データを取得するには、デモまたはライブFXCMアカウントが必要です。それらは、異なる時間枠( fxcm )で、10年間の無料の履歴データを提供します。
ペッパーストーンの無料のティックベースの履歴データが2009年から始まる毎月のcsv形式で表示されます(訪問: https://www.truefx.com/?page=downloads )最も人気のあるペアについて、私は書きました= python Seleniumを使用してすべてのcsvファイルをダウンロードするコード(スクリプトはすべてのcsvファイルをフォルダー名forexにダウンロードします):
import datetime, time, os
from dateutil.relativedelta import relativedelta
from Selenium import webdriver
tmp_dir = os.path.join(os.getcwd(), 'forex')
if not os.path.isdir(tmp_dir): os.makedirs(tmp_dir)
options = webdriver.ChromeOptions();
options.add_argument("--window-size=1300,900")
options.add_experimental_option("prefs", {
"download.default_directory": tmp_dir,
"download.Prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": False,
"safebrowsing.disable_download_protection": True
})
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument('--disable-logging')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--no-sandbox')
browser = webdriver.Chrome(options=options)
pairs = ['AUDJPY', 'AUDNZD', 'AUDUSD', 'CADJPY', 'CHFJPY', 'EURCHF', 'EURGBP', 'EURJPY', 'EURUSD', 'GBPJPY', 'GBPUSD', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY']
for pair in pairs:
curr_date = datetime.datetime(2015, 1, 1)
while curr_date + relativedelta(months=1) < datetime.datetime.now():
file_name = '{p}-{ym2}.Zip'.format(p=pair, ym2=curr_date.strftime('%Y-%m'))
url = 'http://www.truefx.com/dev/data/{y}/{ym1}/{p}-{ym2}.Zip'.format(
y=curr_date.strftime('%Y'),
ym1=curr_date.strftime('%B').upper()+'-'+curr_date.strftime('%Y') if curr_date <= datetime.datetime(2017, 3, 1) else curr_date.strftime('%Y-%m'),
p=pair,
ym2=curr_date.strftime('%Y-%m')
)
file_found = False
for root, dirs, files in os.walk(tmp_dir):
for file in files:
if file_name in file: file_found = True
if not file_found:
time.sleep(5)
browser.get (url)
file_downloaded = False
while not file_downloaded:
time.sleep(1)
for root, dirs, files in os.walk(tmp_dir):
for file in files:
if file_name in file and not '.crdownload' in file: file_downloaded = True
print(file_name, 'downloaded from', url)
curr_date = curr_date + relativedelta(months=1)
print('completed')
要旨のソース: https://Gist.github.com/mamedshahmaliyev/bca9242b7ea6a13b3f76dee7a5aa111a
FXCMは最近、公式のpython forexconnectのラッパーをリリースしました。
サポートフォーラムがあります: http://www.fxcodebase.com/code/viewforum.php?f=51&sid=e2b414c06f9714c605f117f74d689a9b
履歴の取得に関する記事のコードスニペットがあります。
from forexconnect import fxcorepy, ForexConnect
with ForexConnect() as fx:
try:
fx.login("user_id", "password", "fxcorporate.com/Hosts.jsp",
"Demo", session_status_callback=session_status_changed)
history = fx.get_history("EUR/USD", "H1",
datetime.datetime.strptime("MM.DD.YYYY HH:MM:SS", '%m.%d.%Y %H:%M:%S').replace(tzinfo=datetime.timezone.utc),
datetime.datetime.strptime("MM.DD.YYYY HH:MM:SS", '%m.%d.%Y %H:%M:%S').replace(tzinfo=datetime.timezone.utc))
fxcmpyを使用できます。 http://fxcmpy.tpq.io/
ここに簡単な例があります:
import matplotlib.pyplot as plt
import datetime as dt
import fxcmpy
con = fxcmpy.fxcmpy(config_file='fxcm.cfg')
# must optain API Token, see link for details.
start = dt.datetime(2018, 7, 6,8,0,0)
end = dt.datetime(2018, 7, 7,18,0,0)
c = con.get_candles('XAU/USD', period='m1', columns=['bidclose','tickqty'], start=start, end=end )
# Basic plotting of close and volumne data
fig, ax = plt.subplots(figsize=(11,8))
ax.plot(c.index,c['bidclose'], lw=1, color='B',label="Close")
ax2= ax.twinx()
ax2.plot(c.index,c['tickqty'], lw=1, color='G',label="Volume")
plot.show()