【问题标题】:TD Amertirade API price history - json string returnTD Ameritrade API价格历史 - json字符串返回
【发布时间】:2021-10-07 15:46:55
【问题描述】:

我对 td ameritrade 的“价格历史”api 返回的 json 字符串有疑问。在我的 python 代码中,我能够将蜡烛数据放入 pd 数据框中。我使用 CBOE/NYSE 等各种网站来创建我的代码列表,但是我注意到一些代码,例如 AACQ,不返回任何数据。如果在 json 字符串的“empty = true”部分创建一个 If 循环,则可以处理此问题。这是通用的 json 响应摘要

//CandleList:
{
  "candles": [
    {
      "close": 0,
      "datetime": 0,
      "high": 0,
      "low": 0,
      "open": 0,
      "volume": 0
    }
  ],
  "empty": false,
  "symbol": "string"
}

我通过

获取 OHLC 数据
    # define the payload
    payload = {'apikey':client_id,
               'periodType':'day',
               'period':'10',
               'frequencyType':'minute',
               'frequency':'1',
               'needExtendedHoursData':'false'}

    # make a request content 
    time.sleep(0.501)
    content = requests.get(url = endpoint, params = payload)

    # convert it dictionary object

    data = content.json()
    #print(data)    
    hist = pd.DataFrame(data['candles'])

在我看来,json 字符串可以制成 3 个对象,1 个“蜡烛”、2 个“空”和 3 个“符号”。我的这种想法是否正确,我该怎么做。我尝试只处理我的代码并使用“空”创建一个数据框,但这没有用。

【问题讨论】:

  • 请不要将示例数据作为图像包含在内 - 实际上将文本 JSON 数据复制/粘贴到您的问题正文中会更省力,并且有助于更多地获得可复制/粘贴的版本数据供其他人粘贴到他们自己的 IDE 中进行测试。 Why not upload images of code/errors when asking a question?
  • 很抱歉。我试图将 json 文本放入正文中,但它一直给我错误。 15分钟后,我放弃并上传了图片。
  • "它一直给我错误" 发帖时到底有什么错误?你能再试一次吗?如果他们必须手动转录您的 JSON 数据,您的问题不太可能从其他人那里获得太多实质性帮助。
  • 我以为我只是模拟一个新问题,但我不能“提出问题”,因为我已经达到了极限。本质上它是在告诉我正确地输入我的代码。我不记得确切的措辞了。我尝试了 cntl K 方法和 ''' code''' 方法,但只有部分代码输入正确。当我删除 json 响应时,红色框消失了,表明我可以发布问题。这就是我放置 png 附件的原因。
  • 我编辑了问题,当我突出显示 json 响应并单击代码按钮时,它接受了它。是的……

标签: python json api stock ameritrade


【解决方案1】:

我能够使用 if 和 continue 语句在我的 while 循环中完成我想要的操作

if df1.empty == 1:
        continue

但我仍然很好奇我是否如何处理后两个对象,更好奇的是选项链 json 响应,即

//OptionChain:
{
  "symbol": "string",
  "status": "string",
  "underlying": {
    "ask": 0,
    "askSize": 0,
    "bid": 0,
    "bidSize": 0,
    "change": 0,
    "close": 0,
    "delayed": false,
    "description": "string",
    "exchangeName": "string",
    "fiftyTwoWeekHigh": 0,
    "fiftyTwoWeekLow": 0,
    "highPrice": 0,
    "last": 0,
    "lowPrice": 0,
    "mark": 0,
    "markChange": 0,
    "markPercentChange": 0,
    "openPrice": 0,
    "percentChange": 0,
    "quoteTime": 0,
    "symbol": "string",
    "totalVolume": 0,
    "tradeTime": 0
  },
  "strategy": "'SINGLE' or 'ANALYTICAL' or 'COVERED' or 'VERTICAL' or 'CALENDAR' or 'STRANGLE' or 'STRADDLE' or 'BUTTERFLY' or 'CONDOR' or 'DIAGONAL' or 'COLLAR' or 'ROLL'",
  "interval": 0,
  "isDelayed": false,
  "isIndex": false,
  "daysToExpiration": 0,
  "interestRate": 0,
  "underlyingPrice": 0,
  "volatility": 0,
  "callExpDateMap": "object",
  "putExpDateMap": "object"
}
 //StrikePriceMap:
{}
 //Option:
{
  "putCall": "'PUT' or 'CALL'",
  "symbol": "string",
  "description": "string",
  "exchangeName": "string",
  "bidPrice": 0,
  "askPrice": 0,
  "lastPrice": 0,
  "markPrice": 0,
  "bidSize": 0,
  "askSize": 0,
  "lastSize": 0,
  "highPrice": 0,
  "lowPrice": 0,
  "openPrice": 0,
  "closePrice": 0,
  "totalVolume": 0,
  "quoteTimeInLong": 0,
  "tradeTimeInLong": 0,
  "netChange": 0,
  "volatility": 0,
  "delta": 0,
  "gamma": 0,
  "theta": 0,
  "vega": 0,
  "rho": 0,
  "timeValue": 0,
  "openInterest": 0,
  "isInTheMoney": false,
  "theoreticalOptionValue": 0,
  "theoreticalVolatility": 0,
  "isMini": false,
  "isNonStandard": false,
  "optionDeliverablesList": [
    {
      "symbol": "string",
      "assetType": "string",
      "deliverableUnits": "string",
      "currencyType": "string"
    }
  ],
  "strikePrice": 0,
  "expirationDate": "string",
  "expirationType": "string",
  "multiplier": 0,
  "settlementType": "string",
  "deliverableNote": "string",
  "isIndexOption": false,
  "percentChange": 0,
  "markChange": 0,
  "markPercentChange": 0
}
 //Underlying:
{
  "ask": 0,
  "askSize": 0,
  "bid": 0,
  "bidSize": 0,
  "change": 0,
  "close": 0,
  "delayed": false,
  "description": "string",
  "exchangeName": "'IND' or 'ASE' or 'NYS' or 'NAS' or 'NAP' or 'PAC' or 'OPR' or 'BATS'",
  "fiftyTwoWeekHigh": 0,
  "fiftyTwoWeekLow": 0,
  "highPrice": 0,
  "last": 0,
  "lowPrice": 0,
  "mark": 0,
  "markChange": 0,
  "markPercentChange": 0,
  "openPrice": 0,
  "percentChange": 0,
  "quoteTime": 0,
  "symbol": "string",
  "totalVolume": 0,
  "tradeTime": 0
}
 //ExpirationDate:
{
  "date": "string"
}
 //OptionDeliverables:
{
  "symbol": "string",
  "assetType": "string",
  "deliverableUnits": "string",
  "currencyType": "string"
}

我一直在试图弄清楚如何将这些数据导入我的数据库。

【讨论】:

  • 我知道您是我们社区的新手,让我为您提供一些有用的提示。首先,问题要简洁明了。您的问题专门与 TD Ameritrade API 有关,但您的问题中没有包含 [ameritrade] 标签。此外,由于您的答案没有解决问题,您应该只是编辑问题本身而不是发布答案。最后,我建议您将帖子的标题改为问题形式(描述问题本质的简短而清晰的问题)。
猜你喜欢
  • 2022-10-01
  • 2021-02-24
  • 2022-08-07
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多