def start_tickers():
    symTickerIddict = {}
    contractdict = {}
    reqID = 1
    symid = 1
    for sym in symbol_list2:
        print sym, symid
        fname1 = DataDown + today + '.' + sym + '.RTticks.csv'
        ## backup the tick files before restarting
        backupTickfiles(fname1)
        ## flush the tickfile
        rpu_rp.WriteArrayToCsvfile(fname1, [])
        ### restart ticker

        ##build the cntract dict but probably not use
        contract = ibutiles.create_ticksym(symid, sym)
        contractdict.update({sym: contract})
        symTickerIddict.update({str(symid): sym})
        print symTickerIddict
        ticktype = ticktypedict[sym]
        ## restart the ticker
        tws_conn.reqRealTimeBars(reqID, contract, '', ticktype, 0)
        symid += 1
        reqID += 1
        sleep(1)
Exemple #2
0
def get_vola():
    reqID = 111
    contract = ibutiles.create_ticksym(99, 'SPY')
    genericTicks = ''
    snapshot = True
    ######    sym = 'SPY'
    ######    contract = contractdict[sym]
    tws_conn.reqMktData(reqID, contract, genericTicks, snapshot)
    #########################################
    symid = 0
    for sym in symbol_list_opts:
        print sym
        underlying = symdict[sym]
        if underlying == 'SPY':
            underPricenew = TicksUtile.recenttick(underlying, 'dload')
            optionpricenew = TicksUtile.recenttick(sym, 'dload')
            optionprice = 5.00
            underPrice = 200.0
            print underPricenew, optionpricenew
            print typedict[sym]
            ATMstrike = round(underPrice, -2)
            print 'atm', ATMstrike
            if typedict[sym] == 'OPT':
                symid += 1
                contract = contractdict[sym]
                tws_conn.calculateImpliedVolatility(reqID, contract,
                                                    optionprice, underPrice)
                reqID += 1
                sleep(1)
                tws_conn.cancelCalculateImpliedVolatility(reqID)
def get_vola():
    reqID =111
    contract = ibutiles.create_ticksym(99,'SPY')
    genericTicks =''
    snapshot = True
######    sym = 'SPY'
######    contract = contractdict[sym]
    tws_conn.reqMktData(reqID,contract,genericTicks,snapshot)
    #########################################
    symid = 0
    for sym in symbol_list_opts:
        print sym
        underlying = symdict[sym]
        if underlying == 'SPY':
            underPricenew = TicksUtile.recenttick(underlying,'dload')
            optionpricenew = TicksUtile.recenttick(sym,'dload')
            optionprice = 5.00
            underPrice = 200.0
            print underPricenew, optionpricenew
            print typedict[sym]
            ATMstrike = round(underPrice,-2)
            print 'atm', ATMstrike
            if typedict[sym] == 'OPT':
                symid+=1
                contract  = contractdict[sym]
                tws_conn.calculateImpliedVolatility(reqID,contract,optionprice,underPrice)
                reqID +=1        
                sleep(1)
                tws_conn.cancelCalculateImpliedVolatility(reqID)
def start_tickers():
    symTickerIddict ={}
    contractdict ={}
    reqID=1
    symid =1
    for sym in symbol_list2:
        print sym, symid
        fname1 = DataDown + today + '.' + sym  +'.RTticks.csv'
        ## backup the tick files before restarting
        backupTickfiles(fname1)
        ## flush the tickfile
        rpu_rp.WriteArrayToCsvfile(fname1,[])
        ### restart ticker

        ##build the cntract dict but probably not use
        contract = ibutiles.create_ticksym(symid,sym)
        contractdict.update({sym : contract})
        symTickerIddict.update({str(symid) : sym})
        print symTickerIddict
        ticktype = ticktypedict[sym]
        ## restart the ticker
        tws_conn.reqRealTimeBars(reqID,contract,'',ticktype,0)
        symid+=1
        reqID +=1 
        sleep(1)
def build_c_dbase(slist):
    symid = 1
    symTickerIddict ={}
    contractdict ={}
    for sym in slist:
        contract = ibutiles.create_ticksym(symid,sym)
        contractdict.update({sym : contract})
        symTickerIddict.update({str(symid) : sym})
        symid +=1
    print symTickerIddict
    return contractdict
def build_c_dbase(slist):
    symid = 1
    symTickerIddict = {}
    contractdict = {}
    for sym in slist:
        contract = ibutiles.create_ticksym(symid, sym)
        contractdict.update({sym: contract})
        symTickerIddict.update({str(symid): sym})
        symid += 1
    print symTickerIddict
    return contractdict
Exemple #7
0
def send_prof_orders():
    ## enter proforders if any
    profsneeded = rpu_rp.CsvToLines(filledNoProfFile)
    profsplaced = []
    profitticks = 3
    stopticks = 14
    profmult = 1
    ##    print profsneeded
    ##    print 'those were all the profs needed'
    for entryorder in profsneeded:
        ##        print entryorder, 'entryorder'
        flipsign = int(1)
        tside = 'BUY'
        if entryorder[1] == 'BUY':
            tside = 'SELL'
            flipsign = int(-1)
        tsize = int(entryorder[2])
        sym = entryorder[3]
        profitticks = int(profticksdict[sym])
        print 'original signal order = ', entryorder
        orderprice = float(entryorder[4])
        decimalboost = float(dboostdict[sym])
        onetick = float(tickdict[sym])
        addamt = onetick * int(entrywiderdict[sym])

        tranflag = False
        profprice = orderprice - (profmult * profitticks * onetick *
                                  flipsign) - (flipsign * addamt)
        stopprice = orderprice + (stopticks * onetick * flipsign) + (flipsign *
                                                                     addamt)
        ##        print profprice,stopprice
        profitorder = ibutiles.create_order('LMT', tsize, tside, profprice,
                                            tranflag, profprice, profprice,
                                            'profit')
        stoporder = ibutiles.create_order('STP', tsize, tside, stopprice,
                                          tranflag, stopprice, stopprice,
                                          'stop')
        order_id = get_orderid()

        symcontract = ibutiles.create_ticksym(
            23, sym)  ## might need to vary this number at some point
        tws_conn.placeOrder(order_id, symcontract, profitorder)
        tws_conn.placeOrder(order_id + 1, symcontract, stoporder)
        print 'placed a profit and stop order here '
        print sym, tside, str(tsize), str(profprice), 'PROFITORDER', order_id
        profsplaced.append(entryorder)
        sleep(2)
        rpu_rp.WriteArrayToCsvfileAppend(filledNProfSentFile, profsplaced)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile, [])
def send_prof_orders():    
    ## enter proforders if any
    profsneeded = rpu_rp.CsvToLines(filledNoProfFile)
    profsplaced = []
    profitticks = 3
    stopticks = 14
    profmult = 1
##    print profsneeded
##    print 'those were all the profs needed'
    for entryorder in profsneeded:
##        print entryorder, 'entryorder'
        flipsign = int(1)
        tside = 'BUY'
        if entryorder[1] == 'BUY':
            tside  = 'SELL'
            flipsign = int(-1)
        tsize = int(entryorder[2])
        sym = entryorder[3]
        profitticks = int(profticksdict[sym])
        print 'original signal order = ', entryorder
        orderprice = float(entryorder[4])        
        decimalboost = float(dboostdict[sym])
        onetick = float(tickdict[sym])
        addamt = onetick * int(entrywiderdict[sym])
        
        tranflag = False
        profprice = orderprice - (profmult * profitticks * onetick *flipsign) - (flipsign *addamt)
        stopprice = orderprice + (stopticks * onetick *flipsign) + (flipsign *addamt)
##        print profprice,stopprice
        profitorder = ibutiles.create_order('LMT', tsize, tside, profprice,tranflag,profprice,profprice,'profit')
        stoporder = ibutiles.create_order('STP', tsize, tside, stopprice,tranflag,stopprice,stopprice,'stop')
        order_id = get_orderid()
        
        symcontract = ibutiles.create_ticksym(23,sym)  ## might need to vary this number at some point
        tws_conn.placeOrder(order_id, symcontract, profitorder)
        tws_conn.placeOrder(order_id+1, symcontract, stoporder)
        print 'placed a profit and stop order here '
        print sym, tside, str(tsize), str(profprice),'PROFITORDER',order_id
        profsplaced.append(entryorder)
        sleep(2)
        rpu_rp.WriteArrayToCsvfileAppend(filledNProfSentFile,profsplaced)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile,[])
global symbol_list
today =  rpu_rp.todaysdateunix()
from datetime import datetime
libbars = EXE + 'library.bars.csv'
libsyms = EXE + 'library.syms.csv'
symdict = rpu_rp.create_dict(libsyms,0,1)
symbol_list = symdict.keys()
########################################
symTickerIddict ={}
contractdict ={}
symid=0
##flush files here is bad if building on hist....
for sym in symbol_list:
    symid+=1
##    sleep(1)
    contract = ibutiles.create_ticksym(symid,sym)
    contractdict.update({sym : contract})
    symTickerIddict.update({str(symid) : sym})
##    rpu_rp.WriteArrayToCsvfile(DataDown +today+'.'+sym+ '.rthbars.csv',[])
rpu_rp.WriteArrayToCsvfile(TMP +'replys.RTticks',[])
#################
rpu_rp.WriteArrayToCsvfile(DataDown +today+'.'+ '.RTticks.csv',[]) ### flush
onerow =[]
def RTBar_reply_handler(msg):
    if msg.typeName == 'realtimeBar':
        reqid=(((str(msg)).split()[1]).split('=')[1]).replace(',','')
        sym=symTickerIddict[reqid]
##        print str(msg)
##        print 'is a bar..', sym
        onerow = (str(msg)).split(',')
        rpu_rp.WriteArrayToCsvfileAppend(DataDown +today+'.'+sym+ '.RTticks.csv',[onerow])
     tfactor = float(0.5) 
 else:
     tfactor = float(1.0)
 tsize = int(int(tsizedict[sym]) * tfactor)
 decimalboost = float(dboostdict[sym])
 onetick = float(tickdict[sym])
 roundfactor = int(roundfactordict[sym])
 addamt = onetick * int(entrywiderdict[sym])
 
 ## create contract here   
 symib = symdict[sym] 
 ibsecType = typedict[sym] #'CASH'
 ibexchange = exchdict[sym] #'IDEALPRO'
 cashcurr = currdict[sym] #'USD'
 expiry = expiredict[sym] #'ignore'              
 symcontract = ibutiles.create_ticksym(14,symib, ibsecType, ibexchange, cashcurr,expiry)
 ########  poll for a recent price
 tws_conn.reqMktData(14,symcontract,'BID',True) ## use this to get a valid price
 sleep(1)
 for l in rpu_rp.CsvToLines('pricenow'):
     if roundfactor == 0:
         tickrounder = 0.25
         pricenow =  round(float(l[0]) / tickrounder) * tickrounder
         pass
     else:
         tickrounder = roundfactor
         pricenow =  round(float(l[0]),roundfactor)
     print pricenow
 price = round(float((sig[3]))/float(decimalboost),roundfactor)
 sigprice = price
 onetick = float(1/decimalboost)
def create_contract_dictionary(ordid,sym):
    contract = ibutiles.create_ticksym(ordid,sym)
    contractdict.update({sym : contract})
    symTickerIddict.update({ordid : sym})
def dload_list(symbol_list,durmode):
    barlistall = bardict.keys()
    barlist =[]
    for b in barlistall:
        if modedict[b] != 'special' : 
            barlist.append(b)
    ##########################
    def backupTickfiles(fname1):
        fname2  = fname1.replace('.csv','bu.csv')
        f1 = rpu_rp.CsvToLines(fname1)
        f2 = rpu_rp.CsvToLines(fname2)
        for line in f1:
            f2.append(line)
        rpu_rp.WriteArrayToCsvfile(fname2,f2)
        rpu_rp.WriteArrayToCsvfile(fname1,[])
        #############
    def error_handler(msg):
        if  'historicalData' in str(msg):
            print 'error probably pacing hist data'
            pass
        elif 'connection is OK' in str(msg):
            pass
        else:
            print "Server Error: %s" % msg
#############
    def historical_data_handler(msg):  
        global newDataList
        fname = DataDown+ today + '.' + sym + '.'  + bar.replace(' ','')+'.ddload.csv'
        if ('finished' in str(msg.date)) == False:  ### keep building the list
    ##        print (int(msg.date))
            fstring = "%Y-%m-%d %H:%M:%S"
            dateold = localtime(int(msg.date))
            tdate = strftime(fstring, dateold)       
            if bar == '1 day':
                tdate = (str((int(msg.date))))[0:4] + '-' + str((int(msg.date)))[4:6]+ '-' + str((int(msg.date)))[6:8] + ' 23:59:58'
    ##            print tdate
    ##            print msg.date
            dataStr = '%s, %s, %s, %s, %s, %s, %s' % (sym, tdate, msg.open, msg.high, msg.low, msg.close, msg.volume)  
            newDataList = newDataList + [dataStr]  
        else:
            print 'next list'
            rpu_rp.WriteStringsToFile(fname,'') #flush the file
            for a in newDataList:
                if len(a) > 2:
                    rpu_rp.WriteStringsToFileAppend(fname,a)
            newDataList = []
            ##########
    def reply_handler(msg):
        if msg.typeName == 'historicalData':
            pass
        else:
            print "Server Response: %s, %s" % (msg.typeName, msg)
####################
    tws_conn = Connection.create(port=7496, clientId=109)
    tws_conn.connect()
    tws_conn.register(error_handler, 'Error')
    tws_conn.registerAll(reply_handler)
    tws_conn.register(historical_data_handler, message.historicalData)
    #######################################
    trans_id = 0
    if durmode == 'd':
        barlist = ['1day']
    if durmode == '5secs':
        barlist =['5secs']
    for sym in symbol_list:
        for bar in barlist:
            fname = DataDown+ today + '.' + sym + '.'  + bar.replace(' ','')+'.ddload.csv'
            backupTickfiles(fname)
            ##########
            duration = bardict[bar]
            barspaced = bardictspaced[bar]
            contract = ibutiles.create_ticksym(trans_id,sym)
            ticktype = ticktypedict[sym]
            
            print bar, sym, duration,ticktype, barspaced
            tws_conn.reqHistoricalData(trans_id, contract, '', duration, barspaced, ticktype, 0, 2)
            trans_id = trans_id + 1  
            sleep(3)
    ###############
    print 'disconnecting from ib..'
    tws_conn.disconnect()
    for sym in symbol_list:
        for dura in barlist: 
            throw_out_lastbar(sym,dura,today)
################################
##rpu_rp.WriteStringsToFile(TMP +'Entry.orders.Sent.csv','')
sizemult = 2
print 'starting prof sender...'
##############################
libsyms = EXE + 'library.syms.csv'
symdict = rpu_rp.create_dict(libsyms,0,1)
symbol_list = symdict.keys()
######################

##print
symcontrdict = {}
counter = 0
for sym in symbol_list:
    counter +=1
    symcontract =  ibutiles.create_ticksym(counter,sym)
    sleep (1)
    dict2 = {sym : symcontract}
    symcontrdict.update(dict2)
    print 'adding to dict', sym
    #################
print 'done with dict'
##########################3
while loop < loopmax:
    scan_for_fills()
    
    siglistfile = sigarea + today +'.recentsigsexec.csv'
    if os.path.isfile(siglistfile):
        recentsigs =  rpu_rp.CsvToLines(siglistfile)
##        print recentsigs
        sigfileage = check_for_CP_change(siglistfile)
Exemple #14
0
# (The clientId is chosen by us and we will need 
# separate IDs for both the execution connection and
# market data connection)
tws_conn = Connection.create(port=7496, clientId=100)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
################
timelimit = 2
timer = 1
while timer < timelimit:   
    print 'running next loop'     
    # Create an order ID which is 'global' for this session. This
    # will need incrementing once new orders are submitted.
    order_id = timer
    symcontract = ibutiles.create_ticksym(14,'EUR', 'CASH', 'IDEALPRO', 'USD','ignoreexp')
    sym_order = ibutiles.create_order('LMT', 100000, 'SELL', 1.1498)
    tws_conn.reqMktData(14,symcontract,'BID',True)
    # Use the connection to the send the order to IB
    tws_conn.placeOrder(order_id, symcontract, sym_order)
    sleep(5)
    tws_conn.cancelOrder(order_id)
    timer += 1 
    sleep(5)

# Disconnect from TWS
print 'disconnecting..loop is done..'
tws_conn.disconnect()

##reqGlobalCancel()
 if dur == '30 secs':
     tfactor = float(0.5) 
 else:
     tfactor = float(1.0)     
 tsize = int(int(tsizedict[sym]) * tfactor)
 decimalboost = float(dboostdict[sym])
 onetick = float(tickdict[sym])
 roundfactor = int(roundfactordict[sym])
 addamt = onetick * int(entrywiderdict[sym])
 onetick = float(1/decimalboost)
 tickrounder = roundfactor
 if roundfactor == 0:
     tickrounder = 0.25     
 ## create contract here   
 symib = symdict[sym]            
 symcontract = ibutiles.create_ticksym(14,sym)
 ########  poll for a recent price
 tws_conn.reqMktData(14,symcontract,'BID',True) ## use this to get a valid price
 rpu_rp.WriteArrayToCsvfile('pricenow',[])
 for l in rpu_rp.CsvToLines('pricenow'):
     pricebid =  float(l[0])
 ##################
 if sigid == prevsigid:
     tranflag = False
     #########################
 order_id = get_orderid()
 prevsigid = sigid
 print sigprice, decimalboost, 'is sigprice'
 pricebid = float(sigprice)/float(decimalboost)
 if tickrounder == 0:
     pricenow = round(pricebid,roundfactor)
            tdate = (str((int(msg.date))))[0:4] + '-' + str((int(msg.date)))[4:6]+ '-' + str((int(msg.date)))[6:8] + ' 23:59:58'
##            print tdate
##            print msg.date
        dataStr = '%s, %s, %s, %s, %s, %s, %s' % (sym, tdate, msg.open, msg.high, msg.low, msg.close, msg.volume)  
        newDataList = newDataList + [dataStr]  
    else:
        print 'next list'
        rpu_rp.WriteStringsToFile(fname,'') #flush the file
        for a in newDataList:
            if len(a) > 2:
                rpu_rp.WriteStringsToFileAppend(fname,a)
        newDataList = []  
####################################       
tws_conn = Connection.create(port=7496, clientId=109)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
tws_conn.register(historical_data_handler, message.historicalData)
#######################################
for sym in symbol_list:
    for bar in barlist:
        duration = bardict[bar]
        print bar, sym
        contract = ibutiles.create_ticksym(trans_id,sym)
        tws_conn.reqHistoricalData(trans_id, contract, '', duration, bar, 'MIDPOINT', 0, 2)
        trans_id = trans_id + 1  
        sleep(4)
###############
print 'disconnecting from ib..'
tws_conn.disconnect()
Exemple #17
0
def dload_list(symbol_list, durmode):
    barlistall = bardict.keys()
    barlist = []
    for b in barlistall:
        if modedict[b] != 'special':
            barlist.append(b)
    ##########################
    def backupTickfiles(fname1):
        fname2 = fname1.replace('.csv', 'bu.csv')
        f1 = rpu_rp.CsvToLines(fname1)
        f2 = rpu_rp.CsvToLines(fname2)
        for line in f1:
            f2.append(line)
        rpu_rp.WriteArrayToCsvfile(fname2, f2)
        rpu_rp.WriteArrayToCsvfile(fname1, [])
        #############
    def error_handler(msg):
        if 'historicalData' in str(msg):
            print 'error probably pacing hist data'
            pass
        elif 'connection is OK' in str(msg):
            pass
        else:
            print "Server Error: %s" % msg
#############

    def historical_data_handler(msg):
        global newDataList
        fname = DataDown + today + '.' + sym + '.' + bar.replace(
            ' ', '') + '.ddload.csv'
        if ('finished' in str(msg.date)) == False:  ### keep building the list
            ##        print (int(msg.date))
            fstring = "%Y-%m-%d %H:%M:%S"
            dateold = localtime(int(msg.date))
            tdate = strftime(fstring, dateold)
            if bar == '1 day':
                tdate = (str((int(msg.date))))[0:4] + '-' + str(
                    (int(msg.date)))[4:6] + '-' + str(
                        (int(msg.date)))[6:8] + ' 23:59:58'

    ##            print tdate
    ##            print msg.date
            dataStr = '%s, %s, %s, %s, %s, %s, %s' % (
                sym, tdate, msg.open, msg.high, msg.low, msg.close, msg.volume)
            newDataList = newDataList + [dataStr]
        else:
            print 'next list'
            rpu_rp.WriteStringsToFile(fname, '')  #flush the file
            for a in newDataList:
                if len(a) > 2:
                    rpu_rp.WriteStringsToFileAppend(fname, a)
            newDataList = []
            ##########

    def reply_handler(msg):
        if msg.typeName == 'historicalData':
            pass
        else:
            print "Server Response: %s, %s" % (msg.typeName, msg)


####################

    tws_conn = Connection.create(port=7496, clientId=109)
    tws_conn.connect()
    tws_conn.register(error_handler, 'Error')
    tws_conn.registerAll(reply_handler)
    tws_conn.register(historical_data_handler, message.historicalData)
    #######################################
    trans_id = 0
    if durmode == 'd':
        barlist = ['1day']
    if durmode == '5secs':
        barlist = ['5secs']
    for sym in symbol_list:
        for bar in barlist:
            fname = DataDown + today + '.' + sym + '.' + bar.replace(
                ' ', '') + '.ddload.csv'
            backupTickfiles(fname)
            ##########
            duration = bardict[bar]
            barspaced = bardictspaced[bar]
            contract = ibutiles.create_ticksym(trans_id, sym)
            ticktype = ticktypedict[sym]

            print bar, sym, duration, ticktype, barspaced
            tws_conn.reqHistoricalData(trans_id, contract, '', duration,
                                       barspaced, ticktype, 0, 2)
            trans_id = trans_id + 1
            sleep(3)
    ###############
    print 'disconnecting from ib..'
    tws_conn.disconnect()
    for sym in symbol_list:
        for dura in barlist:
            throw_out_lastbar(sym, dura, today)
            rpu_rp.WriteStringsToFileAppend(fname, a)
        newDataList = []


####################################
tws_conn = Connection.create(port=7496, clientId=109)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
tws_conn.register(historical_data_handler, message.historicalData)
#######################################

for sym in symbol_list:
    symib = symdict[sym]  #'CASH'
    ibsecType = typedict[sym]  #'CASH'
    ibexchange = exchdict[sym]  #'IDEALPRO'
    cashcurr = currdict[sym]  #'USD'
    expiry = expiredict[sym]  #'ignore'
    for bar in barlist:
        duration = bardict[bar]
        print bar, sym, symib, ibsecType, ibexchange, cashcurr, expiry, duration
        contract = ibutiles.create_ticksym(trans_id, symib, ibsecType,
                                           ibexchange, cashcurr, expiry)
        tws_conn.reqHistoricalData(trans_id, contract, '', duration, bar,
                                   'BID_ASK', 0, 2)
        trans_id = trans_id + 1
        sleep(5)
###############
print 'disconnecting from ib..'
tws_conn.disconnect()
################################
##rpu_rp.WriteStringsToFile(TMP +'Entry.orders.Sent.csv','')
sizemult = 2
print 'starting prof sender...'
##############################
libsyms = EXE + 'library.syms.csv'
symdict = rpu_rp.create_dict(libsyms, 0, 1)
symbol_list = symdict.keys()
######################

##print
symcontrdict = {}
counter = 0
for sym in symbol_list:
    counter += 1
    symcontract = ibutiles.create_ticksym(counter, sym)
    sleep(1)
    dict2 = {sym: symcontract}
    symcontrdict.update(dict2)
    print 'adding to dict', sym
    #################
print 'done with dict'
##########################3
while loop < loopmax:
    scan_for_fills()

    siglistfile = sigarea + today + '.recentsigsexec.csv'
    if os.path.isfile(siglistfile):
        recentsigs = rpu_rp.CsvToLines(siglistfile)
        ##        print recentsigs
        sigfileage = check_for_CP_change(siglistfile)
def scan_for_fills():
    entrysSentFile = TMP +  'Entry.orders.Sent.csv'
    filledNoProfFile =  TMP + 'Entry.orders.FilledNoProf.csv'
    filledNProfSentFile = TMP +  'Entry.orders.FilledNProfSent.csv'
    ProfSentFile = TMP + 'Profit.orders.Sent.csv'
    openarray = []
    fillNoProf = []
    filledNProfSent = []
    replys = rpu_rp.CsvToLines( TMP + 'entryreplys') ## this reads the replies from the sigcreate login
    for l in  rpu_rp.CsvToLines(entrysSentFile):
        if len(l) > 0:
            print l
            status ='open'
            listordid = l[0]
            #poll for status
            tws_conn.orderStatus(listordid)
            sleep(3) ### give it time to read list
    ##        filledstring = 'orderStatus orderId='+listordid +', ' status=Filled'
            for rep in replys:
                ## CAPTURE FILL PRICE HERE AND USE INSTEAD OF ENTRYPRICE IN FILE
                if len(rep) > 1 and  rep[1] == ' status=Filled' and rep[0] == '<orderStatus orderId='+listordid:
                    print 'found a fill in entry orders', listordid
##                    status='filled'
                if len(rep) > 1 and  rep[1] == ' status=Cancelled' and rep[0] == '<orderStatus orderId='+listordid:
##                    print 'found a fill in entry orders', listordid
                    status='cxld'
            if status  == 'filled':
                fillNoProf.append(l)
                pass
            elif status == 'cxld':
##                print 'was cxld, deleting from list',l
                pass
            else:
                openarray.append(l)
##                print 'is open still',l
    rpu_rp.WriteArrayToCsvfile(entrysSentFile,openarray)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile,fillNoProf)
    ## enter proforders if any
    profsneeded = rpu_rp.CsvToLines(filledNoProfFile)
    profsplaced = []
    profitticks = 3
    stopticks = 14
    profmult = 1
    for entryorder in profsneeded:
        print profsneeded
        print 'those were all the profs needed'
        flipsign = int(1)
        tside = 'BUY'
        if entryorder[1] == 'BUY':
            tside  = 'SELL'
            flipsign = int(-1)
        tsize = int(entryorder[2])
        sym = entryorder[3]
        profitticks = int(profticksdict[sym])
        print 'original signal order = ', entryorder
        orderprice = float(entryorder[4])        
        decimalboost = float(dboostdict[sym])
        onetick = float(tickdict[sym])
        addamt = onetick * int(entrywiderdict[sym])
        
        tranflag = False
        profprice = orderprice - (profmult * profitticks * onetick *flipsign) - (flipsign *addamt)
        stopprice = orderprice + (stopticks * onetick *flipsign) + (flipsign *addamt)
##        print profprice,stopprice
        profitorder = ibutiles.create_order('LMT', tsize, tside, profprice,tranflag,profprice,profprice,'profit')
        stoporder = ibutiles.create_order('STP', tsize, tside, stopprice,tranflag,stopprice,stopprice,'stop')
        order_id = get_orderid()
        symcontract = ibutiles.create_ticksym(23,sym)  ## might need to vary this number at some point
        tws_conn.placeOrder(order_id, symcontract, profitorder)
        tws_conn.placeOrder(order_id+1, symcontract, stoporder)
        print 'placed a profit and stop order here '
        print sym, tside, str(tsize), str(profprice),'PROFITORDER'
        profsplaced.append(entryorder)
        sleep(4)
    rpu_rp.WriteArrayToCsvfileAppend(filledNProfSentFile,profsplaced)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile,[])
def scan_for_fills():
    entrysSentFile = TMP + 'Entry.orders.Sent.csv'
    filledNoProfFile = TMP + 'Entry.orders.FilledNoProf.csv'
    filledNProfSentFile = TMP + 'Entry.orders.FilledNProfSent.csv'
    ProfSentFile = TMP + 'Profit.orders.Sent.csv'
    openarray = []
    fillNoProf = []
    filledNProfSent = []
    replys = rpu_rp.CsvToLines(
        TMP +
        'entryreplys')  ## this reads the replies from the sigcreate login
    for l in rpu_rp.CsvToLines(entrysSentFile):
        if len(l) > 0:
            print l
            status = 'open'
            listordid = l[0]
            #poll for status
            tws_conn.orderStatus(listordid)
            sleep(3)  ### give it time to read list
            ##        filledstring = 'orderStatus orderId='+listordid +', ' status=Filled'
            for rep in replys:
                ## CAPTURE FILL PRICE HERE AND USE INSTEAD OF ENTRYPRICE IN FILE
                if len(rep) > 1 and rep[1] == ' status=Filled' and rep[
                        0] == '<orderStatus orderId=' + listordid:
                    print 'found a fill in entry orders', listordid
##                    status='filled'
                if len(rep) > 1 and rep[1] == ' status=Cancelled' and rep[
                        0] == '<orderStatus orderId=' + listordid:
                    ##                    print 'found a fill in entry orders', listordid
                    status = 'cxld'
            if status == 'filled':
                fillNoProf.append(l)
                pass
            elif status == 'cxld':
                ##                print 'was cxld, deleting from list',l
                pass
            else:
                openarray.append(l)


##                print 'is open still',l
    rpu_rp.WriteArrayToCsvfile(entrysSentFile, openarray)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile, fillNoProf)
    ## enter proforders if any
    profsneeded = rpu_rp.CsvToLines(filledNoProfFile)
    profsplaced = []
    profitticks = 3
    stopticks = 14
    profmult = 1
    for entryorder in profsneeded:
        print profsneeded
        print 'those were all the profs needed'
        flipsign = int(1)
        tside = 'BUY'
        if entryorder[1] == 'BUY':
            tside = 'SELL'
            flipsign = int(-1)
        tsize = int(entryorder[2])
        sym = entryorder[3]
        profitticks = int(profticksdict[sym])
        print 'original signal order = ', entryorder
        orderprice = float(entryorder[4])
        decimalboost = float(dboostdict[sym])
        onetick = float(tickdict[sym])
        addamt = onetick * int(entrywiderdict[sym])

        tranflag = False
        profprice = orderprice - (profmult * profitticks * onetick *
                                  flipsign) - (flipsign * addamt)
        stopprice = orderprice + (stopticks * onetick * flipsign) + (flipsign *
                                                                     addamt)
        ##        print profprice,stopprice
        profitorder = ibutiles.create_order('LMT', tsize, tside, profprice,
                                            tranflag, profprice, profprice,
                                            'profit')
        stoporder = ibutiles.create_order('STP', tsize, tside, stopprice,
                                          tranflag, stopprice, stopprice,
                                          'stop')
        order_id = get_orderid()
        symcontract = ibutiles.create_ticksym(
            23, sym)  ## might need to vary this number at some point
        tws_conn.placeOrder(order_id, symcontract, profitorder)
        tws_conn.placeOrder(order_id + 1, symcontract, stoporder)
        print 'placed a profit and stop order here '
        print sym, tside, str(tsize), str(profprice), 'PROFITORDER'
        profsplaced.append(entryorder)
        sleep(4)
    rpu_rp.WriteArrayToCsvfileAppend(filledNProfSentFile, profsplaced)
    rpu_rp.WriteArrayToCsvfile(filledNoProfFile, [])
            sym, tdate, msg.open, msg.high, msg.low, msg.close, msg.volume)
        newDataList = newDataList + [dataStr]
    else:
        print 'next list'
        rpu_rp.WriteStringsToFile(fname, '')  #flush the file
        for a in newDataList:
            if len(a) > 2:
                rpu_rp.WriteStringsToFileAppend(fname, a)
        newDataList = []


####################################
tws_conn = Connection.create(port=7496, clientId=109)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
tws_conn.register(historical_data_handler, message.historicalData)
#######################################
for sym in symbol_list:
    for bar in barlist:
        duration = bardict[bar]
        print bar, sym
        contract = ibutiles.create_ticksym(trans_id, sym)
        tws_conn.reqHistoricalData(trans_id, contract, '', duration, bar,
                                   'MIDPOINT', 0, 2)
        trans_id = trans_id + 1
        sleep(4)
###############
print 'disconnecting from ib..'
tws_conn.disconnect()
##########################
symTickerIddict = {}
contractdict = {}
reqID = 1
symid = 1
for sym in symbol_list:
    print sym, symid
    fname1 = DataDown + today + '.' + sym + '.RTticks.csv'
    ## backup the tick files before restarting
    backupTickfiles(fname1)
    ## flush the tickfile
    rpu_rp.WriteArrayToCsvfile(fname1, [])
    ### restart ticker

    ##build the cntract dict but probably not use
    contract = ibutiles.create_ticksym(symid, sym)
    contractdict.update({sym: contract})
    symTickerIddict.update({str(symid): sym})
    print symTickerIddict
    ticktype = ticktypedict[sym]
    ## restart the ticker
    tws_conn.reqRealTimeBars(reqID, contract, '', ticktype, 0)
    symid += 1
    reqID += 1
    sleep(1)


########################
def get_vola():
    reqID = 33
    ##contract = ibutiles.create_ticksym(99,sym)
Exemple #24
0
                 tfactor = float(0.5)
                 tsize = int(max(1,(int(tsizedict[sym]) * tfactor)))
 ##                print 'tsize',tsize
                 onetick = float(tickdict[sym])
                 roundfactor = int(roundfactordict[sym])
                 addamt = onetick * int(entrywiderdict[sym])
                 onetick = float(1/decimalboost)
                 tickrounder = roundfactor
                 if roundfactor == 0:
                     tickrounder = 0.25     
                 ## create contract here
                 techline = symlinedict[sym]
                 ## calculate roundie
                 roundieline = round(float(priceinsignal),roundfactor-2)
 ##                print 'WARNING ... line at: >> ',techline,'roundie = ',roundieline
                 symcontract = ibutiles.create_ticksym(14,sym)
                 ########  poll for a recent price
                 rpu_rp.WriteStringsToFile('pricenow','')
 ########                tws_conn.reqMktData(14,symcontract,'BID',True)
                 sleep(1)
                 for l in rpu_rp.CsvToLines('pricenow'):
                     pricebid =  float(l[0])
                 sleep(1) ## allows oderide to write to window remove later
                 order_id = get_orderid() 
                 if tickrounder != 0:
                     pricenow = round(float(ask),roundfactor)
                 ########################################################
                 sigprice = round(float(priceinsignal)/float(decimalboost),roundfactor)
                 ########################
                 flipsign = int(-1)
                 if tside == 'SELL':
# (The clientId is chosen by us and we will need 
# separate IDs for both the execution connection and
# market data connection)
tws_conn = Connection.create(port=7496, clientId=100)
tws_conn.connect()
tws_conn.register(error_handler, 'Error')
tws_conn.registerAll(reply_handler)
################
timelimit = 2
timer = 1
while timer < timelimit:   
    print 'running next loop'     
    # Create an order ID which is 'global' for this session. This
    # will need incrementing once new orders are submitted.
    order_id = timer
    symcontract = ibutiles.create_ticksym(14,'EUR', 'CASH', 'IDEALPRO', 'USD','ignoreexp')
    sym_order = ibutiles.create_order('LMT', 100000, 'SELL', 1.1498)
    tws_conn.reqMktData(14,symcontract,'BID',True)
    # Use the connection to the send the order to IB
    tws_conn.placeOrder(order_id, symcontract, sym_order)
    sleep(5)
    tws_conn.cancelOrder(order_id)
    timer += 1 
    sleep(5)

# Disconnect from TWS
print 'disconnecting..loop is done..'
tws_conn.disconnect()

##reqGlobalCancel()