Esempio n. 1
0
def dbcontract_to_ibcontract(dbcontract):
    symbol = str(dbcontract.sym)
    localSym = str(dbcontract.local_sym)
    if str(dbcontract.secType) == 'CASH':
        symbol = str(dbcontract.sym) + str(dbcontract.cur)

    if str(dbcontract.secType) == 'FUT':
        year = str(dbcontract.contractMonth)[0:4]
        mon = str(dbcontract.contractMonth)[4:6]
        addSym = ''
        print symbol, year, int(mon)

        if int(mon) == 1:
            addSym = 'F'
            print addSym
        if int(mon) == 2:
            addSym = 'G'
        if int(mon) == 3:
            addSym = 'H'
        if int(mon) == 4:
            addSym = 'J'
        if int(mon) == 5:
            addSym = 'K'
        if int(mon) == 6:
            addSym = 'M'
        if int(mon) == 7:
            addSym = 'N'
        if int(mon) == 8:
            addSym = 'Q'
        if int(mon) == 9:
            addSym = 'U'
        if int(mon) == 10:
            addSym = 'V'
        if int(mon) == 11:
            addSym = 'X'
        if int(mon) == 12:
            addSym = 'Z'
        addSym += year[3:4]
        print addSym
        localSym += addSym
    print 'Found', localSym
    contract = Contract()
    contract.symbol = str(symbol)
    contract.secType = str(dbcontract.secType)
    contract.exchange = str(dbcontract.exch)
    contract.primaryExchange = str(dbcontract.exch)
    contract.currency = str(dbcontract.cur)
    contract.expiry = str(dbcontract.expiry)
    #contract.strike= # Strike Price
    contract.localSymbol = localSym
    return contract
Esempio n. 2
0
def create_contract(security):
    if security.split('.')[0]=='FUT':
        contract = Contract()
        contract.symbol = security.split('.')[1]
        contract.secType = 'FUT'
        contract.exchange = 'GLOBEX'
        contract.currency = security.split('.')[2]
        contract.expiry= security.split('.')[3]
        contract.primaryExchange='GLOBEX'
    elif security.split('.')[0]=='CASH':
        contract = Contract()
        contract.symbol = security.split('.')[1]
        contract.secType = 'CASH'
        contract.exchange = 'IDEALPRO'
        contract.currency = security.split('.')[2]
        contract.primaryExchange='IDEALPRO'
    elif security.split('.')[0]=='STK':
        contract = Contract()
        contract.symbol = security.split('.')[1]
        contract.secType = 'STK'
        contract.exchange = 'SMART'
        contract.currency = 'USD'
        contract.primaryExchange='SMART'
    return contract
Esempio n. 3
0
def get_last_hist_data(client, symbols, startDate, endDate = datetime.datetime.now()):
    ibcontract = IBcontract()

    #ibcontract.secType = "FUT"
    #ibcontract.expiry="201809"
    #ibcontract.symbol="GE"
    #ibcontract.exchange="GLOBEX"
 
    ibcontract.secType = 'STK'
    ibcontract.exchange = 'SMART'
    ibcontract.currency = 'USD'
    ibcontract.primaryExchange = 'SMART'

    for index in range(len(symbols)):
        symbol = symbols[index]
        ibcontract.symbol = symbol
        lastDate = endDate
        while (cmp(startDate, lastDate) < 0):
            curDay = lastDate + datetime.timedelta(days = -28)
            print symbol, curDay, lastDate
            sdatetime=lastDate.strftime("%Y%m%d %H:%M:%S %Z")
            ans=client.get_IB_historical_data(ibcontract, sdatetime, '4 W', '1 hour', index)
            lastDate = curDay
            time.sleep(1)
        print "orglen: ", len(ans)
        ans = ans.drop_duplicates(subset=['symbol', 'sdate'])
        print "endlen: ", len(ans)
        ans.to_csv(symbol+".csv")
        #print ans

        conn=MySQLdb.connect(host='127.0.0.1',user='******',passwd='border', db='finance', port=3306)
        cur=conn.cursor()

        values=[]
        header = 'insert into stock_data_1hour(`symbol`, `sdate`, `open`, `high`, `low`, `close`, `volume`, `barcount`, `wap`, `hasgaps`, `ctime`) values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
        for row in ans.iterrows():
            index, data = row
            values.append((data['symbol'], data['sdate'], data['open'], data['high'], data['low'],
                        data['close'], data['volume'], data['barcount'], data['wap'], data['hasgaps'], time.time()))
            #print 'Index: %s, symbol: %s, date: %s, close: %s' % (index, data['symbol'], data['sdate'], data['close'])

        cur.executemany(header, values)
        conn.commit()
        cur.close()
        conn.close()
        time.sleep(5)
Esempio n. 4
0
    callback = IBWrapper()
    #client=IBclient(callback, "DU220055")
    client=IBclient(callback, "All")

    #client.req_account_summary(10000)

    ibcontract = IBcontract()
    #ibcontract.secType = "FUT"
    #ibcontract.expiry="201509"
    #ibcontract.symbol="GBL"
    #ibcontract.exchange="DTB"

    ibcontract.secType = 'STK'
    ibcontract.exchange = 'SMART'
    ibcontract.currency = 'USD'
    ibcontract.primaryExchange = 'SMART'
    ibcontract.symbol = "TRUE"

    ## Get contract details
    cdetails=client.get_contract_details(ibcontract)

    ## In particular we want the expiry. You cannot just use cdetails['expiry'][:6] to map back to the yyyymm
    ##    expiry since certain contracts expire the month before they should!

    print "Expiry is %s" % cdetails['expiry']

    ## Once you have the portfolio positions then you can use these expiries to map back

    (account_value, portfolio_data)=client.get_IB_account_data()

    #time.sleep(30)
Esempio n. 5
0
                            datefmt='%j-%H:%M:%S')
    else:
        logging.basicConfig(handlers=[logging.StreamHandler()],
                            level=logging.INFO,
                            format='%(asctime)s [%(levelname)s] %(message)s',
                            datefmt='%j-%H:%M:%S')

    logging.debug(args)

    if args.sym: contract.symbol = args.sym
    if args.exc: contract.exchange = args.exc
    if args.st: contract.secType = args.st
    if args.cur: contract.currency = args.cur
    if args.id: contract.conId = args.id
    if args.exp: contract.expiry = args.exp
    if args.pex: contract.primaryExchange = args.pex
    if args.str: contract.strike = args.str
    if args.rt: contract.right = args.rt
    if args.mult: contract.multiplier = args.mult

    barsize = args.p
    datatype = args.t
    rth_only = args.rth
    pacing = args.pacing
    num_requests = args.n
    zerobased = args.z

    if barsize == "1 day" or barsize == "1W" or barsize == "1M":
        dt_format = "%Y%m%d"
    else:
        dt_format = "%Y%m%d %H:%M:%S"
Esempio n. 6
0
    args = parser.parse_args()

    if args.v:
        logging.basicConfig(handlers=[logging.StreamHandler()], level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S')
    else:
        logging.basicConfig(handlers=[logging.StreamHandler()], level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S')

    logging.debug(args)

    if args.sym: contract.symbol = args.sym
    if args.exc: contract.exchange = args.exc
    if args.st: contract.secType = args.st
    if args.cur: contract.currency = args.cur
    if args.id: contract.conId = args.id
    if args.exp: contract.expiry = args.exp
    if args.pex: contract.primaryExchange = args.pex
    if args.str: contract.strike = args.str
    if args.rt: contract.right = args.rt
    if args.mult: contract.multiplier = args.mult

    barsize = args.p
    datatype = args.t
    rth_only = args.rth
    pacing = args.pacing
    num_requests = args.n
    zerobased = args.z

    if barsize == "1 day" or barsize == "1W" or barsize == "1M":
        dt_format = "%Y%m%d"
    else:
        dt_format = "%Y%m%d %H:%M:%S"