def parseGSMstring(cmd, vals, text): Log.d("ParseGSM", "cmd=", cmd, "vals=", vals, "text=", text) if 'CMT' in cmd: global lastUsedPhNumb # Received SMS number = vals[0] curNumb = number lastUsedPhNumb = curNumb Log.i( "GSMParse", '---------- SMS got from %s with txt: \n %s \n --------------' % (number, text)) if (number in ph_numb): HUB_send("sms," + number + "," + text) else: print('Unknown phone') elif 'CSQ' in cmd: csq = int(vals[0]) * 100 / 32 print('Signal strength: %i ' % csq) elif 'CREG' in cmd: fParam = [ 'нет кода регистрации сети', 'есть код регистрации сети', 'есть код регистрации сети + доп параметры' ] sParam = [ 'не зарегистрирован, поиска сети нет', 'зарегистрирован, домашняя сеть', 'не зарегистрирован, идёт поиск новой сети', 'регистрация отклонена', 'неизвестно', 'роуминг' ] #Log.i("GSMParse",'Register info: %s, %s' %(fParam[int(vals[0])],sParam[int(vals[1])])) Log.i("GSMParse", 'Register info: %s' % (fParam[int(vals[0])]))
def doOrder(self, market, side, price, volume, time=None, ext=None): cny = price * volume; if cny < 1: Log.d('\t\t market %s side %s price %f volume %f less 1' % (market, side, price, volume)); return ; tradeType = 0; if side == 'buy': tradeType = 1; return self.client.get('order', params = {'price':price, 'amount':volume, 'tradeType':tradeType, 'currency':u2c(market)})
def OrderResult(self, ret, orderresult): Log.d( '\t\torder result, self status {0}, result type {1}, order result {2}' .format(self.status, ret['type'], orderresult)) if ret['type'] == 'sell': if orderresult: self.status = 'sell' self.statuscost = 0 self.statusdelay = 0 self.statusbuycurrent = 0
def RunTrutleAverage(): Log.d('\nB2C rebot %s' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(Time.Time()))) r = TrutleStatAverage(RebotConfig.rebot_period, None) #[{'id':'002838'}]); #refresh data. while True: global STATUS if STATUS == 'stop': break stop = r.Run() if stop: break r.Export('%scc.csv' % RebotConfig.path)
def doOrder(self, market, side, price, volume, time=None, ext=None): cny = price * volume if cny < 1: Log.d('\t\t market %s side %s price %f volume %f less 1' % (market, side, price, volume)) return return self.client.post(get_api_path('orders'), params={ 'market': market, 'side': side, 'price': price, 'volume': volume })
def RunA2C(): Log.d('\nB2C rebot %s' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(Time.Time()))) r = TrutleStatA2C(RebotConfig.rebot_period) #refresh data. while True: global STATUS if STATUS == 'stop': break stop = r.Run() if stop: break r.Export('%sac.csv' % RebotConfig.path)
def get(key): if (key in Config.data): Log.d( 'ConfigParser', "Got property '%s' with value '%s'." % (key, Config.data[key])) return Config.data[key] elif (key in Config.defaultConfig): Config.set(key, Config.defaultConfig[key]) return Config.defaultConfig[key] else: Log.e('ConfigParser', "No property '%s' found in config." % key) return ""
def doOrder(self, market, side, price, volume, time=None, ext=None): volume = self.getVolume(market, volume) price = self.getPrice(market, price) if volume <= 0: Log.d("\t\tvolume in precision is nil") return True, price, volume nside = 'buy-limit' if side == 'sell': nside = 'sell-limit' result = send_order(volume, 'api', market, nside, price) if result['status'] != 'ok': Log.d('\t\tdo order result {0}'.format(result)) return False, price, volume # self.createOrder(result['data'], market, side, price, volume, time, ext); return True, price, volume
def RunA2B(): Log.d('\nA2B rebot %s' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(Time.Time()))) r = TrutleStatA2B(RebotConfig.rebot_period) t = 0 while True: global STATUS if STATUS == 'stop': break t += 1 # print "rebot status %s, do %d, time : %s" % (STATUS, t, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(Time.Time()))); stop = r.Run() #print '------------------------------------------------------------------------' if RebotConfig.rebot_is_test: if t > RebotConfig.rebot_test_k_count or stop == True: break else: print 'sleep time', RebotConfig.rebot_period * 60 / RebotConfig.rebot_do_per_period time.sleep(RebotConfig.rebot_period * 60 / RebotConfig.rebot_do_per_period) r.Export('%saa.csv' % RebotConfig.path)
def Run(self): # print '-----------------------------------------------------------------' stop = False rest = True Pool = [] self.currenttimestamp = self.exchange.getNextKTime( self.period, self.currenttimestamp) for k, v in enumerate(self.markets): market = v['id'] r = self.rules[market] dk = self.exchange.getK(market, 1, self.period, self.currenttimestamp) if len(dk) == 0: continue ret = r.Run(dk, self.period, self.currenttimestamp) if ret != None: ret['market'] = market if ret['result'] == 2: Pool.append(ret) if len(dk) > 0: rest = False Log.d(time.strftime('%Y-%m-%d', time.localtime(self.currenttimestamp))) Pool.sort(key=lambda v: v['vol_rate'], reverse=False) if rest == False: poolsLen = len(self.RecordPools) for k in range(-5, 0): if abs(k) >= poolsLen: break rp = self.RecordPools[k] pl = rp['Pool'] Profits = rp['Profits'] ll = 0 hh = 0 avergp = 0 sratio = 0 if len(pl) > 0: cc = 0 for k1, v in enumerate(pl): r = self.rules[v['market']] kk = r.KLines[-1 + k] inc = round((r.KLines[-1].c - kk.c) / kk.c * 100, 2) hh = max(hh, inc) ll = min(ll, inc) avergp += inc if inc > 0: cc += 1 sratio = round(cc / (float)(len(pl)) * 100, 2) avergp = round(avergp / len(pl), 2) Profits.append({ ('avergp%d' % k): avergp, 'sratio%d' % k: sratio, 'hh%d' % k: hh, 'll%d' % k: ll }) self.RecordPools.append({ 'time': time.strftime('%Y-%m-%d', time.localtime(self.currenttimestamp)), 'Pool': Pool, 'Profits': [] }) self.Pool = Pool if len(Pool) > 0: #print "message", time.strftime('%Y-%m-%d', time.localtime(self.currenttimestamp)); mks = [] for k, v in enumerate(self.Pool): mks.append(v['market']) Log.d(mks) #print '\t', Pool; if self.currenttimestamp > time.time(): stop = True return stop
def __init__(self, period): self.period = period self.exchange = Exchange(RebotConfig.access_key, RebotConfig.secret_key) delegate = None if RebotConfig.exchange == 'chbtc': if RebotConfig.rebot_release: delegate = chbtcEX() else: delegate = chbtcEXLocal() if RebotConfig.exchange == 'yunbi': if RebotConfig.rebot_release: delegate = yunbiEX() else: delegate = yunbiEXLocal() if RebotConfig.exchange == "tushare": delegate = tushareEXLocal() if RebotConfig.exchange == "huobi": if RebotConfig.rebot_release: delegate = huobiEX() else: delegate = huobiEXLocal() self.exchange.delegate(delegate) # time Time.SetServerTime(self.exchange.getServerTimestamp()) # data. self.exchange.loadData(period, RebotConfig.rebot_test_begin) self.exchange.prepare(period, RebotConfig.rebot_test_begin) # user. self.user = User() info = self.exchange.getUser() print info # print '-----------------------------------' self.user.updatePositions(info['accounts']) # markets self.markets = self.exchange.getMarkets() # rule. self.rules = {} # init. # for k, v in enumerate(self.markets): market = v['id'] # order. # done in right env. self.user.updateOrder(self.exchange.getOrder(market)) # k line. if RebotConfig.rebot_is_test: dk = self.exchange.getK(market, 42, self.period, RebotConfig.rebot_test_begin) # 1498838400:2017/7/1 0:0:0; 1496246400:2017/6/1 0:0:0; 1493568000:2017/5/1 0:0:0 else: dk = self.exchange.getK(market, 500, self.period) r = WVStats() # r = MutliMovingAverage(); r.Run(dk) lastk = r.KLines.Get(-1) if lastk: currency = market #market[0:len(market)-3]; self.user.updateHigh(currency, lastk.c) # c or high self.user.updateCost(currency, lastk.c) self.rules[market] = r Log.d( 'index:%d, start market:%s, begin time %s, current time:%s' % (k, market, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(r.KLines.Get(0).t)), time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t)))) #scale. self.scales = []
def run(self): #print '-----------------------------------------------------------------' # markets nmarkets = self.exchange.getMarkets() if nmarkets: self.markets = nmarkets # user info = self.exchange.getUser() self.user.updatePositions(info['accounts']) if RebotConfig.rebot_release: print 'positions:' for k, v in (self.user.positions.items()): if v['volume'] * v['high'] > 10: print '\t{0} {1}'.format(k, v) # print '\n' sv = self.user.positions[RebotConfig.base_currency]['volume'] flag = False stop = True buylist = [] selllist = [] for k, v in enumerate(self.markets): market = v['id'] # order. # done in right env. orders = self.user.updateOrder(self.exchange.getOrder(market)) # rule r = self.rules[market] lastk = r.KLines.Get(-1) prelastk = lastk # k line. # dk = self.exchange.getK(market, 500, self.period, lastk.t); # print 'do market : %s' % market; dk = None type = None if lastk: kcount = 2 if RebotConfig.rebot_is_test == False: kcount = int( math.floor((time.time() - lastk.t) / (self.period * 60)) + 2) if kcount < 2: kcount = 2 dk = self.exchange.getK(market, kcount, self.period, lastk.t) #print dk if dk and len(dk) > 0: ret = r.Run(dk) lastk = r.KLines.Get(-1) type = ret.get('type') if RebotConfig.rebot_release: print market, time.strftime( '%Y-%m-%d %H:%M:%S', time.localtime(lastk.t)), time.strftime( '%Y-%m-%d %H:%M:%S', time.localtime(time.time())), lastk for orderkey, o in enumerate(orders): if o.checkMustCancel(): Log.d('\tcancel olded order {0}'.format(o)) if (self.exchange.doOrderCancel(o.id, market) and o.type == 'sell'): time.sleep(1) try: self.exchange.doOrder(market, 'sell', lastk.c, o.leftvolume) except Exception as e: Log.d('\trepeat order failed! e:%s' % e) # print '\tmarket status : {1}, last k time : {2}, type : {3}'.format(market, r.status, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t)), type); if lastk and prelastk and lastk.t != prelastk.t: stop = False currency = market[0:len(market) - len(RebotConfig.base_currency)] pc = self.user.positions.get(currency) if pc and lastk: current = pc['volume'] * lastk.c sv += current self.user.updateHigh(currency, lastk.c) # c or high cost = self.user.getCost(currency) if cost and cost > 0 and False: scale = (current - cost) / cost * 100 rate = RebotConfig.rebot_loss_ratio if scale < rate: if RebotConfig.rebot_is_test: prate = (1 + rate * 1.1 / 100) nprateprice = pc['price'] * prate vol = self.user.doOrder(market, 'sell', nprateprice) print '\tmarket:%s, do sell, price:%f scale less %f, volume:%f, price:%f, time:%s' % ( market, pc['price'], rate, vol, nprateprice, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t))) scaleless = True self.exchange.doOrder(market, 'sell', nprateprice, vol, lastk.t) cost = self.user.getHighCost(currency) if False and cost and cost > 0 and scaleless == False: scale = (current - cost) / cost * 100 rate = RebotConfig.rebot_profit_ratio if scale < rate: if RebotConfig.rebot_is_test: prate = (1 + rate * 1.1 / 100) nprateprice = pc['high'] * prate vol = self.user.doOrder(market, 'sell', nprateprice) print '\tmarket:%s, do sell, high:%f scale less %f, volume:%f, high:%f, time:%s' % ( market, pc['high'], rate, vol, nprateprice, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t))) scaleless = True self.exchange.doOrder(market, 'sell', nprateprice, vol, lastk.t) if type == 'buy': buylist.append({'market': market, 'result': ret}) if type == 'sell': selllist.append({'market': market, 'result': ret}) # print 'do orders:' # sell nselllist = [] for key, v in enumerate(selllist): market = v['market'] nselllist.append(v) for key, v in enumerate(nselllist): market = v['market'] k = v['result']['k'] vol = self.user.doOrder(market, 'sell', k.c) if vol and vol > 0: flag = True orderresult, price, vol = self.exchange.doOrder( market, 'sell', k.c, vol, k.t, v['result']['ext']) r = self.rules[market] r.OrderResult(v['result'], orderresult) Log.d( '\tmarket:{0}, do:{1}, result:{2}, price:{3}, volume:{4}, time:{5}, ext:{6}' .format( market, 'SELL', orderresult, price, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t)), v['result']['ext'])) #else: # print '\tmarket:%s, not enough to sell' % market; # buy nbuylist = [] for key, v in enumerate(buylist): market = v['market'] sort = v['result']['sort'] v['sort'] = sort angle = v['result'].get('angle') k = v['result']['k'] # print '\tmarket %s sort %f, angle %f, time %s' % (market, sort, angle, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))); if sort > 100 or sort < 0: print '\tmarket %s sort illegal, sort %f, time %s' % ( market, sort, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))) continue if angle and angle < RebotConfig.rebot_buy_least_angle: print '\tmarket %s angle illegal, angle %f, time %s' % ( market, angle, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))) continue nbuylist.append(v) # nbuylist.append(v); nbuylist.sort(key=lambda v: v['sort'], reverse=False) for key, v in enumerate(nbuylist): market = v['market'] k = v['result']['k'] vol = self.user.doOrder(market, 'buy', k.c) if vol and vol > 0: flag = True orderresult, price, vol = self.exchange.doOrder( market, 'buy', k.c, vol, k.t, v['result']['ext']) Log.d( '\tmarket:{0}, do:{1}, result:{2}, price:{3}, volume:{4}, time:{5}, ext:{6}' .format( market, 'BUY', orderresult, price, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t)), v['result']['ext'])) else: print '\tnot enough cny !!! market:{0}, do:{1}, price:{2}, volume:{3}, time:{4}'.format( market, 'buy', k.c, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))) #else: # print '\t!!! market:{0}, time:{1}, buy fail less volume : {2}'.format(market, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(cwave.ck.t)), v['rmbvolumeN3']); if flag: ascale = (sv - self.user.initamount) / self.user.initamount * 100 self.scales.append(ascale) Log.d('all scale:{0}, current cny:{1}\n'.format(ascale, sv)) return stop
def thread(self, intfId): try: start = time.clock() Log.i('DriverTCP/Thread', 'Connected') while True: #try: if ((time.clock() - start) > 5.0): #Log.d('PortalConnect/Thread','Keep Alvie sent') self.sock.sendall("\n".encode()) start = time.clock() try: ready_to_read, ready_to_write, in_error = select.select([ self.sock, ], [ self.sock, ], [], 5) except select.error: #conn.shutdown(2) # 0 = done receiving, 1 = done sending, 2 = both # connection error event here, maybe reconnect break #if len(ready_to_read) > 0: data = self.sock.recv(2048).decode('utf-8') if not data: break if len(data) > 5: for line in data.split("\n"): if len(line) > 5: Log.i('DriverTCP/Thread', 'received "%s"' % line) from DriverTCP import Msg msg = Msg.fromJSONstr(self, line) if (msg.cmd == "ACK" or msg.cmd == "0" or msg.cmd == "device.reg.res"): #msg.cmd = "ACK" Log.i( 'DriverTCP/Thread', "ACK recived. Looking for awating msgs " + msg.toJSON()) isAckThere = False toRemove = [] for i in range(len(self.outgoingMSG)): msgS = self.outgoingMSG[i] if (msgS.setid == msg.setid and msgS.unid == msg.unid): Log.i( 'DriverTCP/ACK', "Msg for ACK found:" + msgS.toJSON(), msg) if (msgS.callback != None): Log.d('DriverTCP/ACK', "Calling callback") msgS.callback(msg) if (msgS.socket != None): msgS.socket.sendAck( setid=msgS.setid, unid=msgS.unid) toRemove.append(i) isAckThere = True #break for i in range(len(toRemove)): try: del self.outgoingMSG[i] except: pass Log.i('DriverTCP/Thread', "ACK proceed complete") if ((isAckThere == False or msg.cmd == "device.reg.res") and self.onRecieveCallback != None): Log.i('DriverTCP/Thread', "Calling callback", msg.cmd) self.onRecieveCallback(msg) elif (msg != None and self != None and self.onRecieveCallback != None): self.onRecieveCallback(msg) #else: #break #time.sleep(0.3) '''except ValueError as e: Log.e('DriverTCP/Thread',"While E: %s"%e) except ConnectionError as e: Log.e('DriverTCP/Thread',"While E: %s"%e)''' #except socket.error: # Log.e('DriverTCP/Thread',"Closing driver: ", socket.error) except socket.error: Log.e('DriverTCP/Thread/1', "Closing socket: %s " % socket.error, traceback.format_exc()) except Exception as e: exc = str(e) Log.e('DriverTCP/Thread/2', exc, traceback.format_exc()) #except ValueError: Log.d('DriverTCP/Thread', 'closing socket', ValueError) self.sock.close() self.connect()
def run(self): # print '-----------------------------------------------------------------' # markets nmarkets = self.exchange.getMarkets() if nmarkets: self.markets = nmarkets; # user info = self.exchange.getUser(); self.user.updatePositions(info['accounts']); if RebotConfig.rebot_release: print 'positions:'; for k,v in (self.user.positions.items()): if v['volume'] > 0: print '\t{0} {1}'.format(k, v); # print '\n' sv = self.user.positions[RebotConfig.base_currency]['volume']; flag=False; stop=True; buylist = []; selllist = []; for k,v in enumerate(self.markets): market = v['id']; # order. # done in right env. orders = self.user.updateOrder(self.exchange.getOrder(market)); # rule r = self.rules[market]; lastk=r.KLines.Get(-1); prelastk=lastk; # k line. # dk = self.exchange.getK(market, 500, self.period, lastk.t); # print 'do market : %s' % market; dk=None; if lastk: kcount = int(math.floor((time.time()-lastk.t)/(self.period*60)) + 2); if kcount < 2: kcount = 2; dk = self.exchange.getK(market, kcount, self.period, lastk.t); # print dk type = None; if dk and len(dk) > 0: ret = r.Run(dk); lastk = r.KLines.Get(-1); if RebotConfig.rebot_release: print market, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t)), time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), lastk type = ret.get('type'); for orderkey, o in enumerate(orders): if o.checkMustCancel(): Log.d('\tcancel olded order {0}'.format(o)); self.exchange.doOrderCancel(o.id, market); #print '\tmarket status : {1}, last k time : {2}, type : {3}'.format(market, r.status, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t)), type); if lastk and prelastk and lastk.t != prelastk.t: stop = False; currency = market[0:len(market) - len(RebotConfig.base_currency)]; pc = self.user.positions.get(currency); scaleless = False; if pc and lastk: current = pc['volume'] * lastk.c; sv += current; self.user.updateHigh(currency, lastk.c); # c or high cost = self.user.getCost(currency); if cost and cost > 0 and False: scale = (current - cost)/cost*100; rate = RebotConfig.rebot_loss_ratio; if scale < rate: if RebotConfig.rebot_is_test: prate = (1 + rate * 1.1 / 100); nprateprice = pc['price'] * prate; vol = self.user.doOrder(market, 'sell', nprateprice); print '\tmarket:%s, do sell, price:%f scale less %f, volume:%f, price:%f, time:%s' % (market, pc['price'], rate, vol, nprateprice, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t))); scaleless = True; self.exchange.doOrder(market, 'sell', nprateprice, vol, lastk.t); # else: # print '\tmarket:{0}, scale:{1}, position high price:{2}, current price{3}'.format(market, scale, pc['high'], lastk.c); cost = self.user.getHighCost(currency); if cost and cost > 0 and scaleless == False and False: scale = (current - cost)/cost*100; rate = RebotConfig.rebot_profit_ratio; if scale < rate: if RebotConfig.rebot_is_test: prate = (1 + rate * 1.1 / 100); nprateprice = pc['high'] * prate; vol = self.user.doOrder(market, 'sell', nprateprice); print '\tmarket:%s, do sell, high:%f scale less %f, volume:%f, high:%f, time:%s' % (market, pc['high'], rate, vol, nprateprice, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lastk.t))); scaleless = True; self.exchange.doOrder(market, 'sell', nprateprice, vol, lastk.t); # else: # print '\tmarket:{0}, scale:{1}, position high price:{2}, current price{3}'.format(market, scale, pc['high'], lastk.c); #if scaleless == False: # selllist.append({'market':market, 'result':{'k':lastk, 'ext':'rebot profit ratio' }}) if scaleless == False: if type == 'buy': buylist.append({'market':market, 'result':ret}) if type == 'sell': selllist.append({'market':market, 'result':ret}) # print 'do orders:' # sell nselllist = []; for key,v in enumerate(selllist): market = v['market']; nselllist.append(v); for key,v in enumerate(nselllist): market = v['market']; k = v['result']['k']; vol = self.user.doOrder(market, 'sell', k.c); if vol and vol > 0: flag = True; orderresult, price, vol = self.exchange.doOrder(market, 'sell', k.c, vol, k.t); r = self.rules[market]; r.OrderResult(v['result'], orderresult); Log.d('\tmarket:{0}, do:{1}, result:{2}, price:{3}, volume:{4}, time:{5}, ext:{6}'.format(market, 'SELL', orderresult, price, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t)), v['result']['ext'])); #else: # print '\tmarket:%s, not enough to sell' % market; # buy nbuylist = []; for key,v in enumerate(buylist): market = v['market']; sort = v['result']['sort']; v['sort'] = sort angle = v['result'].get('angle'); k = v['result']['k']; # print '\tmarket %s sort %f, angle %f, time %s' % (market, sort, angle, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))); if sort > 100 or sort < 0: print '\tmarket %s sort illegal, sort %f, time %s' % (market, sort, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))); continue; if angle and angle < RebotConfig.rebot_buy_least_angle: print '\tmarket %s angle illegal, angle %f, time %s' % (market, angle, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))); continue; nbuylist.append(v); # nbuylist.append(v); nbuylist.sort(key=lambda v: v['sort'], reverse=False) for key,v in enumerate(nbuylist): market = v['market']; k = v['result']['k']; vol = self.user.doOrder(market, 'buy', k.c); if vol and vol > 0: flag=True; orderresult, price, vol = self.exchange.doOrder(market, 'buy', k.c, vol, k.t, {'sort':v['sort']}); Log.d('\tmarket:{0}, do:{1}, result:{2}, price:{3}, volume:{4}, time:{5}, ext:{6}'.format(market, 'BUY', orderresult, price, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t)), v['result']['ext'])); else: print '\tnot enough cny !!! market:{0}, do:{1}, price:{2}, volume:{3}, time:{4}'.format(market, 'buy', k.c, vol, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(k.t))); #else: # print '\t!!! market:{0}, time:{1}, buy fail less volume : {2}'.format(market, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(cwave.ck.t)), v['rmbvolumeN3']); if flag: ascale = (sv - self.user.initamount)/self.user.initamount*100; self.scales.append(ascale); Log.d('all scale:{0}, current cny:{1}\n'.format(ascale, sv)); return stop;
def CAN_onRecieve(msg): global pi bytes = msg.data data = [] for byte in bytes: data.append(int(byte)) remote = msg.is_remote_frame id = msg.arbitration_id fd = msg.is_fd err = msg.is_error_frame strId = ('%.8x' % (id)).lower() print("1") if err == False and len(data) > 0 and len(strId) == 8: unid = strId[:4] setid = strId[4:] powerSupply = pi.read(PS_PIN) == 0 if (len(unid) == 4 and unid != "0000" and unid != "" and powerSupply == True): Log.i('Recv', ("Received: From %s with data: %s" % (strId, ';'.join(map(str, data))))) cmd = int(data[0] / 16) Log.i('Recv', "CMD: %i" % cmd) frameCount = data[0] % 16 if (frameCount > 1): curFrame = data[1] if (curFrame > 0 and id in messagesWaitingComplete): messagesWaitingComplete[id].value += ';'.join( map(str, data[2:])) elif (curFrame == 0): if (setid == "0000"): setid = "" messagesWaitingComplete[id] = Msg(unid=unid, setid=setid, cmd=cmdIntToStr(cmd), value=','.join( map(str, data[2:])), callback=ACK_clb) elif (curFrame == (frameCount - 1) and id in messagesWaitingComplete): DriverTCP.sendMsg(messagesWaitingComplete[id]) del messagesWaitingComplete[id] else: Log.e('Recv', "ERROR: Lost first frames or message incomplete") else: if (setid == "0000"): setid = "" msg = Msg(unid=unid, setid=setid, cmd=cmdIntToStr(cmd), value=';'.join(map(str, data[1:])), callback=ACK_clb) Log.d("Recv/TCPSend", "MSG:", msg.toJSON()) DriverTCP.sendMsg(msg) elif (powerSupply == False): Log.w('Recv', "Skipping garbage") else: Log.w('Recv', "id:", id, "data:", data) else: Log.w('Recv', "Er:", err, "id:", id, "data:", data)
def set(key, value): Config.data[key] = value Log.d('ConfigParser', "Setting property '%s' with value '%s'." % (key, value)) Config._write_properties()