def get_equity_df(since, util, interval, price): cnt = 'mid' if price == 'M' else 'ask' if price == 'A' else 'bid' if price == 'B' else 'mid' params = { 'from': DateTime(since).value, 'to': DateTime(until).value, 'price': price, 'granularity': interval } r = instruments.InstrumentsCandles(instrument='USD_JPY', params=params) api.request(r) raw_list = [] for raw in r.response['candles']: raw_list.append([ raw['time'], raw[cnt]['o'], raw[cnt]['h'], raw[cnt]['l'], raw[cnt]['c'], raw['volume'] ]) raw_df = pd.DataFrame(raw_list, columns=[ 'Time', f'Open_{cnt}', f'Hight_{cnt}', f'Low_{cnt}', f'Close_{cnt}', 'Volume' ]) return raw_df
# http://www.algo-fx-blog.com/fx-api-oanda-v20-python-positions-management/ import pandas as pd import oandapyV20 import oandapyV20.endpoints.positions as positions import os, sys sys.path.append(os.getcwd()) from basic import accountID, access_token, api # 講座のすべてのポジションをリストとして取得 r = positions.PositionList(accountID=accountID) print(api.request(r)) # 通貨を指定してポジションを取得 r = positions.PositionDetails(accountID=accountID, instrument="EUR_GBP") print(api.request(r)) # ポジションを保有していない場合はエラー # すべてのポジションを決済する data = {"longUnits": "ALL"} # ドル円の買い注文全ての保有ポジションを決済する r = positions.PositionClose(accountID=accountID, data=data, instrument="USD_JPY") print(api.request(r))
# http://www.algo-fx-blog.com/fx-api-oanda-v20-histrocial-rate-pandas-csv/ import oandapyV20.endpoints.instruments as instruments import pandas as pd import os, sys sys.path.append(os.getcwd()) from basic import accountID, access_token, api # APIに渡すパラメータの設定 params = { "count": 2000, "granularity": "S5" # 5 seconds } # APIへ過去為替レートをリクエスト r = instruments.InstrumentsCandles(instrument="USD_JPY", params=params) api.request(r) # APIから取得した最初のmid(中値)を確認 print(r.response["candles"][1]["mid"]) # 時間を確認(デフォルトではNYタイム) print(r.response["candles"][0]["time"]) # dataとして Pythonのリストへ過去レートを変換 data = [] for raw in r.response['candles']: data.append([ raw["time"], raw["volume"], raw["mid"]["o"], raw["mid"]["h"], raw["mid"]["l"], raw["mid"]["c"] ])
import json import oandapyV20 from oandapyV20 import API from oandapyV20.exceptions import V20Error from oandapyV20.endpoints.pricing import PricingStream from basic import accountID, access_token, api instruments = 'EUR_USD,EUR_JPY' s = PricingStream(accountID=accountID, params={'instruments': instruments}) MAXREC = 10 try: n = 0 for R in api.request(s): print(json.dumps(R, indent=2)) n += 1 if n > MAXREC: s.terminate('maxrecs received {}'.format(MAXREC)) except V20Error as e: print('Error: {}'.format(e))