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
Beispiel #2
0
# 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))
Beispiel #3
0
# 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))