fetch_historical_data – ShinyBroker

# fetch_historical_data

`fetch_historical_data(contract, endDateTime='', durationStr='1 D', barSizeSetting='1 hour', whatToShow='Trades', useRTH=True, host='127.0.0.1', port=7497, client_id=9999, timeout=3)`

Fetch historical data for a tradable asset

Creates a temporary IBKR client socket at the specified `host`, `port`, and `client_id`, then makes a query for the historical data specified by the input parameters, receives the response, closes the socket, formats the response, and returns the result.

If `timeout` number of seconds elapse before receiving historical data, then `fetch_historical_data` returns `None`.

## Parameters

Name | Type | Description | Default
--- | --- | --- | ---
`contract` | Contract | The Contract object for which you want data | required
`endDateTime` |  | Ending datetime string formatted as “YYYYMMDD HH:mm:ss TMZ” specifying the end of the time period for which you want historical data. Leave it as the default “” to get historical data up to the current present moment. | `''`
`durationStr` |  | A Duration String that specifies how far back in time you want to fetch data. | `'1 D'`
`barSizeSetting` |  | A Bar Size that specifies how fine-grained you want your historical data to be (daily, weekly, every 30 seconds, etc). | `'1 hour'`
`whatToShow` |  | You may select from any of the Historical Data Types but for most cases you’ll probably be happy with one of “BID_ASK”, “MIDPOINT”, or “TRADES”. | `'Trades'`
`useRTH` |  | “Use Regular Trading Hours”. Set to `False` if you want the historical data to include after-hours/pre-market trading | `True`

## Examples

    import shinybroker as sb

    historical_data = sb.fetch_historical_data(
        contract=sb.Contract({
            'symbol': "AAPL",
            'secType': "STK",
            'exchange': "SMART",
            'currency': "USD"
        })
    )

    print(historical_data)

    #### Try an example with a bad barSizeSetting
    #### fetch_historical_data prints an informative error message and returns None
    historical_data_bad_barsize = sb.fetch_historical_data(
        contract=sb.Contract({
            'symbol': "AAPL",
            'secType': "STK",
            'exchange': "SMART",
            'currency': "USD"
        }),
        barSizeSetting="1 hrs"
    )
    print(historical_data_bad_barsize)