Ib_async получает опцию открытого интересаPython

Программы на Python
Ответить
Anonymous
 Ib_async получает опцию открытого интереса

Сообщение Anonymous »

Я пытаюсь получить открытый интерес к опциону с помощью ib_async, но он вообще не показывает открытый интерес.
Код, который я использую ib_async:

Код: Выделить всё

from ib_async import *

ib = IB()
ib.connect('127.0.0.1', 4001, clientId=138)

ib.reqMarketDataType(1)

option1 = [Option('GOOGL', '20250117', 195, 'C', 'SMART')]

ib.qualifyContracts(option1[0])

a=ib.reqMktData(option1[0],genericTickList='100',snapshot=False, regulatorySnapshot=False)
print(a)
print("-")

b=ib.reqTickers(Option('GOOGL', '20250117', 195, 'C', 'SMART'))
print("Volume ", b[0].volume)
print("callOpenInterest ", b[0].callOpenInterest)
print("putOpenInterest", b[0].putOpenInterest)
print("impliedVolatility ", b[0].impliedVolatility)

ib.disconnect()
вывод этого кода

Код: Выделить всё

Ticker(contract=Option(conId=584786601, symbol='GOOGL', lastTradeDateOrContractMonth='20250117', strike=195.0, right='C', multiplier='100', exchange='SMART', currency='USD', localSymbol='GOOGL 250117C00195000', tradingClass='GOOGL'))
-
Volume  1385.0
callOpenInterest  nan
putOpenInterest nan
impliedVolatility  nan
что означает отсутствие открытого интереса. Используя IBKR TWS API, я могу получить открытый интерес, но путь к нему немного менее удобен для пользователя

Код: Выделить всё

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.ticktype import TickTypeEnum
import threading
import time

class IBApp(EWrapper, EClient):
def __init__(self):
EClient.__init__(self, self)
self.call_open_interest = None
self.reqId = 1
self.oi_received = False # Flag to track if tick 27 was received

def error(self, reqId, errorCode, errorString, advancedOrderRejectJson=''):
print(f"Error. Id: {reqId}, Code: {errorCode}, Msg: {errorString}")

def tickSize(self, reqId: int, tickType: int, size: float):
if tickType == TickTypeEnum.OPTION_CALL_OPEN_INTEREST:
self.call_open_interest = size
self.oi_received = True #set flag to true
print(f"TickSize. TickerId:", reqId, "TickType:", tickType, "Size: ", size)
else:
print("Not the expected tick type")

def tickSnapshotEnd(self, reqId):
print(f"TickSnapshotEnd. Ticker Id: {reqId}")

def run_loop(app):
app.run()

if __name__ == "__main__":
app = IBApp()
app.connect("127.0.0.1", 4001, clientId=20)
api_thread = threading.Thread(target=run_loop, args=(app,), daemon=True)
api_thread.start()
time.sleep(1)

contract = Contract()
contract.symbol = "GOOGL"
contract.secType = "OPT"
contract.exchange = "SMART"
contract.currency = "USD"
contract.lastTradeDateOrContractMonth = "20250117"
contract.strike = 195
contract.right = "C"
contract.multiplier = "100"

app.reqMktData(app.reqId, contract, genericTickList='101', snapshot=False, regulatorySnapshot=False, mktDataOptions=[]) #request tick 27

time.sleep(5) # Wait for a reasonable time for data

if app.oi_received: #check flag
print(f"Option Call Open Interest Size: {app.call_open_interest}")
else:
print("Did not receive Option Call Open Interest data within the timeout.")

app.disconnect()
Вывод этого кода:

Код: Выделить всё

Error. Id: -1, Code: 2104, Msg: Market data farm connection is OK:usfarm.nj
Error. Id: -1, Code: 2104, Msg: Market data farm connection is OK:usopt
Error. Id: -1, Code: 2104, Msg: Market data farm connection is OK:usfarm
Error. Id: -1, Code: 2107, Msg: HMDS data farm connection is inactive but should be available upon demand.ushmds
Error. Id: -1, Code: 2158, Msg: Sec-def data farm connection is OK:secdefnj
Not the expected tick type
Not the expected tick type
Not the expected tick type
Not the expected tick type
Not the expected tick type
Not the expected tick type
Not the expected tick type
TickSize. TickerId: 1 TickType: 27 Size:  21890
Not the expected tick type
Option Call Open Interest Size: 21890
Использует ли кто-нибудь ib_async для получения опции открытого интереса, и если да, не могли бы вы поделиться способом запроса этих данных?

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-interest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»