# import shinybroker as sb
# import pandas as pd
#
#
# con_id = 265598 # AAPL Stock
#
#
# ib_conn = sb.create_ibkr_socket_conn()
# ib_socket = ib_conn['ib_socket']
#
# sb.send_ib_message(
# s=ib_socket,
# msg=sb.req_sec_def_opt_params(
# reqId=1,
# underlyingSymbol="AAPL",
# futFopExchange="",
# underlyingSecType="STK",
# underlyingConId=265598
# )
# )
#
# # start_time = datetime.datetime.now()
# # while (datetime.datetime.now() - start_time).seconds < timeout:
# incoming_msg = sb.read_ib_msg(sock=ib_socket)
# sdops = []
# while incoming_msg[0] != sb.functionary['incoming_msg_codes'][
# 'SECURITY_DEFINITION_OPTION_PARAMETER_END'
# ]:
# incoming_msg = sb.read_ib_msg(sock=ib_socket)
# if incoming_msg[0] == sb.functionary['incoming_msg_codes'][
# 'SECURITY_DEFINITION_OPTION_PARAMETER'
# ]:
# sdops.append(sb.format_sec_def_opt_params_input(sdop=incoming_msg[2:]))
#
# ib_socket.close()
#
#
# print(
# pd.concat(sdops, ignore_index=True)
# .sort_values('exchange')
# )
"Headless Mode" for In-App Scripting and Development
“Somewhat Interactive” Development Mode
As you’re developing apps, it’s sometimes useful to just create a scratch file containing a bit of code that grabs some input. You can watch the information get printed by the async reader loop as it becomes available off the socket, and maybe copy-paste it from the terminal printout do perform some of your exploratory development work.