0

対話型ブローカー 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 が返されます
4

0 に答える 0