如何避免oandapyV20.endpoints.instruments.InstrumentsCandles与仪器历史记录存在差异?

时间:2019-05-21 17:12:01

标签: python

我正在使用oandapyV20.endpoints.instruments.InstrumentsCandles()从Oanda中提取乐器历史记录。将历史记录从8h30m以前拉到现在,以15m为增量可以正常工作。但是,以15s为增量从21m之前提取历史记录将返回不完整的数据。时不时地会跳过增量。

运行下面的代码,将以15m的增量打印从8h30m到现在的在InstrumentList中为每个乐器记录的迭代次数。由于每种乐器的时间范围和增量长度相同,因此将重复相同的数字。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
import datetime
import pandas as pd

api = API(access_token="---")
accountID = "---"
instrumentList = ['AUD_CAD', 'AUD_CHF', 'AUD_NZD', 'AUD_USD', 'CAD_CHF', 'EUR_AUD', 'EUR_CAD', 'EUR_CHF', 'EUR_GBP','EUR_NZD','EUR_USD', 'GBP_AUD', 'GBP_CAD', 'GBP_CHF', 'GBP_NZD', 'GBP_USD', 'NZD_CAD', 'NZD_CHF', 'NZD_USD', 'USD_CAD', 'USD_CHF']

startDate_15min = datetime.datetime.now() - datetime.timedelta(hours=8, minutes=30)
startDate_15min = startDate_15min.strftime('%Y-%m-%dT%H:%M:%SZ')
endDate_15min = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ')
params_15min = {'from':startDate_15min, 'to':endDate_15min, 'granularity':'M15'}

instrumentValuesDic_15min = {}

for instrument in instrumentList:

    r = instruments.InstrumentsCandles(instrument = instrument, params = params_15min)
    api.request(r)

    print(len(r.response.get('candles')))#<<<prints the number of iterations for each instrument

    instrumentValuesDic_15min[instrument] = r.response.get('candles')

但是,当运行相同的代码时,将时间范围更改为21m,并递增为15s,则打印每种乐器的迭代次数将返回不同的值。

startDate_15sec = datetime.datetime.now() - datetime.timedelta(minutes = 21)
startDate_15sec = startDate_15sec.strftime('%Y-%m-%dT%H:%M:%SZ')
endDate_15sec = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ')
params_15sec = {'from':startDate_15sec, 'to':endDate_15sec, 'granularity':'S15'}

instrumentValuesDic_15sec = {}

for instrument in instrumentList:

    r = instruments.InstrumentsCandles(instrument = instrument, params = params_15sec)
    api.request(r)

    print(len(r.response.get('candles')))#<<<prints the number of iterations for each instrument    

    instrumentValuesDic_15sec[instrument] = r.response.get('candles')

在返回的数据上滚动显示某些迭代被跳过。 有没有办法从Oanda获得这些数据而没有漏洞?

0 个答案:

没有答案