インタラクティブブローカーAPIを使用してSPYで書かれた基礎とオプションの両方を取得しようとしていますが、現在のオプション(ストライク、問題は、私は歴史的なデータを取得することに固執している5ヶ月から今に戻ると言う。次のようにインタラクティブブローカー - OPT(MIDPOINTおよびTRADES)の履歴データを取得
コードは次のとおりです。
from ib.ext.Contract import Contract
from ib.ext.ContractDetails import ContractDetails
from ib.opt import ibConnection, message
import time
import datetime
def watcher(msg):
print(msg)
def contractDetailsHandler(msg):
contracts.append(msg.contractDetails.m_summary)
def contractDetailsEndHandler(msg):
global DataWait
DataWait = False
def contractHistDetailsHandler(msg):
contracts.append(msg.contractDetails.m_summary)
con = ibConnection()
con.host = "..."
con.port = ...
con.clientId = 5
con.registerAll(watcher)
con.register(contractDetailsHandler, 'ContractDetails')
con.register(contractDetailsEndHandler, 'ContractDetailsEnd')
con.register(contractHistDetailsHandler, message.historicalData)
con.connect()
contract = Contract()
contract.m_exchange = "SMART"
contract.m_secType = "OPT"
contract.m_symbol = "SPY"
contract.m_currency = "USD"
endtime = '20170102 01:00:00'
#con.reqContractDetails(1, contract)
con.reqHistoricalData(2,contract,endtime,"5 M","1 sec","TRADES",0,1)
con.reqHistoricalData(3,contract,endtime,"5 M","1 sec","MIDPOINT",0,1)
contracts = []
DataWait = True ; i = 0
while DataWait and i < 90:
i += 1 ; print(i),
time.sleep(1)
con.disconnect()
con.close()
print(contracts)
私が得るすべては、次のとおりです。
<error id=2, errorCode=321, errorMsg=Error validating request:-'yd' : cause - When the local symbol field is empty, please fill all option fields (right, strike, expiry))>
は今、私は契約オブジェクトは、それらが含まれていないことを認識していますが、どのように1は右を知ることができ、ストライキと有効期限?それは基本的に私が必要とするものです(オプションの日付と基本的な変更があります)。それには別の方法がありますか?
私にいくつかの指針を与えることができれば、大歓迎です!または、選択した範囲(選択した範囲に応じて、元のプロジェクトのためにそれが必要であるかどうか)に基づいて、基礎とオプションのいずれかの代替ソースを選択します。
非常に手前にありがとう!入力は非常に高く評価されます。