cikeys = [Option('BAC', expiry, 'C', 10), Option('BAC', expiry, 'C', 10.5), Option('BAC', expiry, 'P', 11.5), Option('BAC', expiry, 'P', 12)] pikeys = [Option('BAC', expiry, 'C', 12), Option('BAC', expiry, 'C', 11.5), Option('BAC', expiry, 'P', 10.5), Option('BAC', expiry, 'P', 10)] box = [Option('BAC', expiry, 'C', 12), Option('BAC', expiry, 'C', 11.5), Option('BAC', expiry, 'P', 10.5), Option('BAC', expiry, 'P', 10)] cbids = [c.request_contract_details(x)[0].m_summary.m_conId for x in cbkeys] pbids = [c.request_contract_details(x)[0].m_summary.m_conId for x in cbkeys] cbinds = [c.request_contract_details(x)[0].m_summary.m_conId for x in cbinkeys] pbinds = [c.request_contract_details(x)[0].m_summary.m_conId for x in cbinkeys] ciids = [c.request_contract_details(x)[0].m_summary.m_conId for x in cikeys] piids = [c.request_contract_details(x)[0].m_summary.m_conId for x in pikeys] cb = co.Butterfly(*cbids) pb = co.Butterfly(*pbids) cbin = co.Butterfly(*cbinds) pbin = co.Butterfly(*pbinds) ci = co.IronCondor(*ciids) pi = co.IronCondor(*piids) c.request_mkt_data(cb.contract, snapshot=False, fname=('%s.txt' % cb.conId)) c.request_mkt_data(pb.contract, snapshot=False, fname=('%s.txt' % pb.conId))
#!/usr/local/bin/jython import logging import signal import sys from ib.client import Client from ib.contractkeys import Currency, CurrencyLocal, Stock, Option, OptionLocal from com.ib.client import Contract, ExecutionFilter import ib.client import ib.combo_orders as co ib.client.LOGLEVEL = logging.DEBUG def cleanup(signal, frame): c.disconnect() sys.exit(0) c = Client() c.connect() symbol = 'EMC' expiry = '20130125' right = 'C' details = c.request_contract_details(Option(symbol, expiry, right, None)) a = [(x.m_summary.m_conId, x.m_summary.m_strike) for x in details] [c.request_historical_data(x.m_summary, end_time='20130123 15:50:00', duration='1 D', bar_size='1 min', show='ASK') for x in details] signal.signal(signal.SIGINT, cleanup)
def cleanup(signal, frame): c.disconnect() sys.exit(0) c = Client() c.connect() spot_prices = [x*.01 for x in range(800, 1301)] symbol = 'BAC' expirys = ('20130201', '20130215') strikes = range(9, 13) keys = [Stock(symbol)] keys += [Option(symbol, x, y, z) for x in expirys for y in ['C', 'P'] for z in strikes] contracts = [c.request_contract_details(x)[0].m_summary.m_conId for x in keys] id_to_key = dict(zip(contracts, keys)) pairs = [(x, y) for x in contracts for y in contracts if x != y] triples = [(x, y, z) for x in contracts for y in contracts for z in contracts if not (x == y == z)] quartets = [(w, x, y, z) for w in contracts for x in contracts for y in contracts for z in contracts if not (w == x == y == z)] #buttertest = [ x + ('P',) for x in triples] #buttertest += [ x + ('C',) for x in triples] #buttertest += [triples[0] + ('Nope',)] #irontest = [ x + ('PPCC',) for x in quartets] #irontest += [ x + ('CCPP',) for x in quartets] #irontest += [quartets[0] + ('Nope',)]
import signal import sys from ib.client import Client from ib.contractkeys import ContractId pattern = './Butterfly*.mkt' newdirname = '%(symbol)s_%(expiry)s_%(right)s' newfilename = '%(strike1)06.2f_%(strike2)06.2f_%(strike3)06.2f.mkt' if __name__ == "__main__": c = Client(client_id=8) c.connect() filenames = glob.glob(pattern) for filename in filenames: conIds = filename.split('.mkt')[0].split('_')[1:] conIds = [int(x) for x in conIds] strikes = [] for conId in conIds: contract = c.request_contract_details(ContractId(conId))[0].m_summary strikes.append(contract.m_strike) ndname = newdirname % {'symbol': contract.m_symbol, 'expiry': contract.m_expiry, 'right': contract.m_right} if not os.path.exists(ndname): os.makedirs(ndname) nfname = newfilename % {'strike1': strikes[0], 'strike2': strikes[1], 'strike3': strikes[2]} shutil.copyfile(filename, '/'.join([ndname, nfname])) c.disconnect()