0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OANDAのAPIを使用して検証やトレードを自動化するためのコード

Last updated at Posted at 2024-12-08

まずはAPIを取得してください。
OANDAを使用する場合はマイページにログインしてからAPIの管理というページを開いてください。

以下のURLにAPIを取得してデータを弄るためのコードやアイディアがあります。全部試してみましたが、environmentで引っかかりやすいと思います。
デモ口座を使用するのであれば、以下のURLにあるコードをそのまま使えば良いですが、本番講座を使うのであればenvironmentはliveとしてください。

import numpy as np
import oandapyV20

API_KEY = 'APIトークンを入力'
ACCOUNT_ID = 'アカウント情報を入力'

from oandapyV20 import API
import oandapyV20.endpoints.trades as trades
import json
client= API(access_token=API_KEY,environment="live")

r = trades.TradesList(ACCOUNT_ID)
print("REQUEST:{}".format(r))
rv = client.request(r)
print("RESPONSE:\n{}".format(json.dumps(rv, indent=2)))
from oandapyV20.endpoints.pricing import PricingStream
from oandapyV20 import API

これでAPIを取得することができると思います。

# APIトークンの定義
account_id = ACCOUNT_ID
access_token = API_KEY

# パラメータの設定
params = {
"instruments": "USD_JPY"
}

# API用のクラスを定義
client = API(access_token=access_token, environment="live")

# 為替データを取得
r = PricingStream(accountID=account_id, params=params)
client.request(r)
print(r.response)
import oandapyV20.endpoints.instruments as instruments
from oandapyV20 import API

# APIトークンの定義
api_token = API_KEY
# パラメータの設定
params = {
"granularity": "M5", # ローソク足の間隔
"count": 5000, # 取得する足数
"price": "M", # B: Bid, A:Ask, M:Mid
}

# 通貨ペアの設定
instrument = "USD_JPY"

# API用のクラスを定義
client = API(access_token=API_KEY, environment="live")

# 為替データを取得
r = instruments.InstrumentsCandles(instrument=instrument, params=params)
client.request(r)
print(r.response)
dict_trade = r.response

# json形式で出力
with open("M5data","w") as f:
json.dump(dict_trade, f)
import pandas as pd

# 為替データを格納するためのリストを定義
price_data = []

# データを1つずつ取り出してprice_dataに格納する
for row in r.response["candles"]:

# 辞書を定義
data = {}

# dataに格納する
data["datetime"] = row["time"]
data.update(row["mid"])
data["volume"] = row["volume"]

# price_dataに追加する
price_data.append(data)

# DataFrameに変換する
df = pd.DataFrame(price_data)

# カラム名の定義
columns = {
"o": "open",
"h": "high",
"l": "low",
"c": "close"
}

# カラム名の変更
df.rename(columns=columns, inplace=True)
df.head()

上のコードではjson形式でデータを出力したり、pythonで処理しやすいようにデータフレーム形式にすることもできます。

また、ローソク足の時間軸の表記にも作法があるので、上のURLを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?