対話型ブローカー api python ライブラリを使用しているときに、ibapi モジュール自体でサポートされているプログラム内の特定の関数から dict オブジェクトを返そうとしました。
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.ticktype import TickTypeEnum
from threading import Timer
from threading import *
import csv
import storage_handler as sh
from contractstock import stock
import datetime
import os
import foldernavigator as fn
class TestApp(EWrapper, EClient):
def __init__(self):
EClient.__init__(self, self)
def nextValidId(self, orderId ):
self.nextOrderId = orderId
self.start()
def tickPrice(self, reqId, tickType, price, attrib):
group = [1, 2, 4, 6, 7, 35, 37, 57, 75]
i = 0
while i < len(group):
data = {}
data['reqId'] = reqId
data[TickTypeEnum.to_str(tickType)] = size
print(str(data)
return data
i += 1
def start(self):
fn.foldercreator(self)
contract = Contract()
contract.symbol = stock["symbol"]
contract.secType = stock["secType"]
contract.exchange = stock["exchange"]
contract.currency = stock["currency"]
contract.primaryExchange = stock["primaryExchange"]
self.reqMarketDataType(4)
self.reqMktData(1, contract, "", False, False, [])
self.reqMktData(2, contract, "", False, False, [])
self.reqMktData(3, contract, "", False, False, [])
self.reqMktData(4, contract, "", False, False, [])
ids1 = [0,1,2,3,4,6,7,8,9,49,85]
ids2 = [[21,165],[46,236],[48,233],[54,293],[55,294],[56,295],[63,595],[64,595],[65,595],[89,236]]
for i in ids1:
self.reqMktData(str(i), contract, "", False, False, [])
for j in ids2:
self.reqMktData(str(j[0]), contract, str(j[1]), False, False, [])
def stop(self):
self.done = True
self.disconnect()
def main():
app = TestApp()
app.nextOrderId = 0
app.connect("127.0.0.1", 7497, 0)
if __name__ == "__main__":
main()
dictオブジェクトを取得するためにステートメントを使用している間return
、関数から戻った後のオブジェクトパスが何であるかを理解できないようです。オブジェクトを外部関数からメイン プログラムに返すにはどうすればよいですか?
- 「def tickPrice」は、「self.reqMktData(1, contract, "", False, False, [])」という行からのコールバックであり、変数に入れると NONE が返されます