OANDAで、シストレ/APIを利用する際にお世話になる関数の紹介です。情報は、基本的に公式ドキュメント (英語) から引っ張ってきています。
もくじ
OANDA シストレ(oandapyV20) の始め方 記事一覧
もくじ
- 実現損益 / 未実現損益
- 取引可能な通貨ペア一覧
- 口座内の残金
- 通貨ごとのスプレッド
- ローソク足
- 現在の売値・買値
実現損益 / 未実現損益
AccountDetailsクラスから取れます。ここでは書きませんが、ポジションごとの損益情報も取れます。
import oandapyV20.endpoints.accounts as accounts r = accounts.AccountDetails(accountID) api.request(r) print('実現損益 (日本円):', r.response['account']['pl']) print('未実現損益 (日本円):', r.response['account']['unrealizedPL'])
# 出力 実現損益 (日本円): -171030.5141 未実現損益 (日本円): 0.0000
取引可能な通貨ペア一覧
AccountInstrumentsクラスから取れます。通貨ごとの最大/最小取引可能数も、このクラスで取得できます。
import oandapyV20.endpoints.accounts as accounts r = accounts.AccountInstruments(accountID=accountID) api.request(r) for i, inst in enumerate(r.response['instruments']): print(i, inst['name'])
# 出力 0 AUD_CHF 1 CAD_SGD 2 USD_INR 3 GBP_SGD 4 USD_SEK 5 NZD_HKD 6 EUR_SEK 7 USD_SGD 8 SGD_CHF 9 EUR_CHF 10 TRY_JPY 11 USD_JPY 12 EUR_TRY 13 USD_HUF 14 AUD_SGD 15 AUD_CAD 16 CAD_HKD 17 NZD_SGD 18 USD_CZK 19 AUD_NZD 20 SGD_JPY 21 SGD_HKD 22 HKD_JPY 23 CHF_ZAR 24 NZD_USD 25 EUR_USD 26 USD_DKK 27 USD_PLN 28 GBP_AUD 29 USD_MXN 30 GBP_USD 31 CHF_HKD 32 NZD_CAD 33 GBP_CHF 34 USD_THB 35 USD_NOK 36 USD_TRY 37 GBP_JPY 38 USD_CHF 39 EUR_NOK 40 EUR_ZAR 41 EUR_CAD 42 USD_HKD 43 NZD_CHF 44 EUR_DKK 45 EUR_PLN 46 EUR_NZD 47 GBP_PLN 48 ZAR_JPY 49 EUR_HKD 50 CAD_CHF 51 CHF_JPY 52 USD_CNH 53 GBP_ZAR 54 EUR_SGD 55 AUD_USD 56 CAD_JPY 58 NZD_JPY 59 EUR_CZK 60 EUR_AUD 61 AUD_JPY 62 GBP_NZD 63 GBP_HKD 64 GBP_CAD 65 USD_SAR 66 AUD_HKD 67 EUR_HUF 68 USD_CAD 69 EUR_JPY 70 EUR_GBP
口座内の残金
AccountSummaryクラスから取れます。現在のレバレッジ率等も、このクラスから取得できます。
import oandapyV20.endpoints.accounts as accounts r = accounts.AccountSummary(accountID) api.request(r) print(r.response['account']['balance'])
# 出力 0.2808
通貨ごとのスプレッド
Spreadsクラスから取れます。期間等の設定が結構面倒なので、詳細はオフィシャルのドキュメントも参照しながら。。。
import oandapyV20.endpoints.forexlabs as labs params = { "instrument": "EUR_USD", "period": 604800 } r = labs.Spreads(params=params) api.request(r) res = r.response print('avg', sum([array[1] for array in res['avg']])/len(res['avg'])) print('max', sum([array[1] for array in res['max']])/len(res['max'])) print('min', sum([array[1] for array in res['min']])/len(res['min']))
# 出力 avg 1.462701854166668 max 2.302122015915118 min 1.8941176470588232
ローソク足
InstrumentsCandlesクラスから取れます。古いものが先で、新しいものが後になります。最新のローソク足については、まだ更新中の可能性がある点に注意が必要です。取得するローソク足のサイズ(=期間)についてはgranularityで変更可能で、選択可能なものについてはこちらを参照。5秒足から月足までが指定可能。
import oandapyV20.endpoints.instruments as instruments params = { "count": 5, "granularity": "M5" } r = instruments.InstrumentsCandles(instrument="DE30_EUR", params=params) api.request(r) res = r.response for c in res['candles']: print(c['time'].split('.')[0], c['mid']['o'], c['mid']['h'], c['mid']['l'], c['mid']['c'], c['volume'])
# 出力 2020-10-23T19:35:00 12650.4 12653.8 12648.8 12650.4 281 2020-10-23T19:40:00 12650.4 12657.6 12650.3 12656.6 341 2020-10-23T19:45:00 12656.6 12658.0 12653.0 12654.9 415 2020-10-23T19:50:00 12654.8 12660.8 12652.1 12660.8 507 2020-10-23T19:55:00 12660.8 12668.6 12658.8 12663.9 333
現在の売値・買値
PricingInfoクラスから取れます。paramsの中で通過ペアを複数指定するときはカンマ区切りで、スペースを挟んではいけません。
import oandapyV20.endpoints.pricing as pricing params = { "instruments": "EUR_USD,USD_JPY" } r = pricing.PricingInfo(accountID=accountID, params=params) rv = api.request(r) for price in rv['prices']: print(price['instrument']) print('asks', price['asks']) print('bids', price['bids'])
# 出力 EUR_USD asks [{'price': '1.18653', 'liquidity': 3000000}] bids [{'price': '1.18569', 'liquidity': 3000000}] USD_JPY asks [{'price': '104.752', 'liquidity': 3000000}] bids [{'price': '104.666', 'liquidity': 3000000}]
[…] 関数編1 […]
[…] 関数編1 […]
[…] 関数編1 […]
[…] 関数編1 […]
[…] 単位期間等のパラメータを指定します。指定可能な通貨ペアについては、こちらの過去記事です。 […]