在使用交互式代理 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()
虽然我使用该return
语句来获取 dict 对象,但我似乎无法弄清楚从函数返回后的对象路径是什么。如何将对象从外部函数返回到我的主程序?
- “def tickPrice”是从“self.reqMktData(1, contract, "", False, False, [])" 行的回调,如果我把它放在变量中,它会返回 NONE