def init_logger(self, args):
level = logging.INFO
if args.verbose:
level = logging.VERBOSE
if args.debug:
level = logging.DEBUG
logging.basicConfig(format='%(asctime)s [%(levelname)s] %(message)s',
level=level)
Rthandler = RotatingFileHandler('arbitrage.log', maxBytes=100*1024*1024,backupCount=10)
Rthandler.setLevel(level)
formatter = logging.Formatter('%(asctime)-12s [%(levelname)s] %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
python类verbose()的实例源码
def main(self):
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--debug", help="debug verbose mode",
action="store_true")
parser.add_argument("-v", "--verbose", help="info verbose mode",
action="store_true")
parser.add_argument("-o", "--observers", type=str,
help="observers, example: -oLogger,Emailer")
parser.add_argument("-m", "--markets", type=str,
help="markets, example: -mHaobtcCNY,Bitstamp")
parser.add_argument("-s", "--status", help="status", action="store_true")
parser.add_argument("command", nargs='*', default="watch",
help='verb: "watch|replay-history|get-balance|list-public-markets|get-broker-balance"')
args = parser.parse_args()
self.init_logger(args)
self.exec_command(args)
def init_logger(self, args):
level = logging.INFO
if args.verbose:
level = logging.VERBOSE
if args.debug:
level = logging.DEBUG
logging.basicConfig(format='%(asctime)s [%(levelname)s] %(message)s',
level=level)
Rthandler = RotatingFileHandler('arbitrage.log', maxBytes=100*1024*1024,backupCount=10)
Rthandler.setLevel(level)
formatter = logging.Formatter('%(asctime)-12s [%(levelname)s] %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
def main(self):
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--debug", help="debug verbose mode",
action="store_true")
parser.add_argument("-v", "--verbose", help="info verbose mode",
action="store_true")
parser.add_argument("-o", "--observers", type=str,
help="observers, example: -oLogger,Emailer")
parser.add_argument("-m", "--markets", type=str,
help="markets, example: -mHaobtcCNY,Bitstamp")
parser.add_argument("-s", "--status", help="status", action="store_true")
parser.add_argument("command", nargs='*', default="watch",
help='verb: "watch|replay-history|get-balance|list-public-markets|get-broker-balance"')
args = parser.parse_args()
self.init_logger(args)
self.exec_command(args)
def inject_verbose_info(self):
logging.VERBOSE = 15
logging.verbose = lambda x: logging.log(logging.VERBOSE, x)
logging.addLevelName(logging.VERBOSE, "VERBOSE")
def buy(self, amount, price, client_id=None):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
logging.verbose("Buy %f BTC at %f %s (%f CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
if client_id:
return self._buy(amount, local_currency_price, client_id)
else:
return self._buy(amount, local_currency_price)
def sell(self, amount, price, client_id=None):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
logging.verbose("Sell %f BTC at %f %s (%f CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
if client_id:
return self._sell(amount, local_currency_price, client_id)
else:
return self._sell(amount, local_currency_price)
def sell_maker(self, amount, price):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
local_currency_price = int(local_currency_price)
logging.verbose("Sell maker %f BTC at %d %s (%d CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
return self._sell_maker(amount, local_currency_price)
def tickers(self):
for market in self.markets:
logging.verbose("ticker: " + market.name + " - " + str(
market.get_ticker()))
arbitrage.py 文件源码
项目:Bitcoin-arbitrage---opportunity-detector
作者: yoshi717
项目源码
文件源码
阅读 34
收藏 0
点赞 0
评论 0
def inject_verbose_info(self):
logging.VERBOSE = 15
logging.verbose = lambda x: logging.log(logging.VERBOSE, x)
logging.addLevelName(logging.VERBOSE, "VERBOSE")
arbitrage.py 文件源码
项目:Bitcoin-arbitrage---opportunity-detector
作者: yoshi717
项目源码
文件源码
阅读 31
收藏 0
点赞 0
评论 0
def init_logger(self, args):
level = logging.INFO
if args.verbose:
level = logging.VERBOSE
if args.debug:
level = logging.DEBUG
logging.basicConfig(format='%(asctime)s [%(levelname)s] %(message)s',
level=level)
arbitrage.py 文件源码
项目:Bitcoin-arbitrage---opportunity-detector
作者: yoshi717
项目源码
文件源码
阅读 35
收藏 0
点赞 0
评论 0
def main(self):
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--debug", help="debug verbose mode",
action="store_true")
parser.add_argument("-v", "--verbose", help="info verbose mode",
action="store_true")
parser.add_argument("-o", "--observers", type=str,
help="observers, example: -oLogger,Emailer")
parser.add_argument("-m", "--markets", type=str,
help="markets, example: -mMtGox,Bitstamp")
parser.add_argument("command", nargs='*', default="watch",
help='verb: "watch|replay-history|get-balance|list-public-markets"')
args = parser.parse_args()
self.init_logger(args)
self.exec_command(args)
traderbot.py 文件源码
项目:Bitcoin-arbitrage---opportunity-detector
作者: yoshi717
项目源码
文件源码
阅读 20
收藏 0
点赞 0
评论 0
def opportunity(self, profit, volume, buyprice, kask, sellprice, kbid, perc,
weighted_buyprice, weighted_sellprice):
if profit < config.profit_thresh or perc < config.perc_thresh:
logging.verbose("[TraderBot] Profit or profit percentage lower than"+
" thresholds")
return
if kask not in self.clients:
logging.warn("[TraderBot] Can't automate this trade, client not "+
"available: %s" % kask)
return
if kbid not in self.clients:
logging.warn("[TraderBot] Can't automate this trade, " +
"client not available: %s" % kbid)
return
volume = min(config.max_tx_volume, volume)
# Update client balance
self.update_balance()
max_volume = self.get_min_tradeable_volume(buyprice,
self.clients[kask].usd_balance,
self.clients[kbid].btc_balance)
volume = min(volume, max_volume, config.max_tx_volume)
if volume < config.min_tx_volume:
logging.warn("Can't automate this trade, minimum volume transaction"+
" not reached %f/%f" % (volume, config.min_tx_volume))
logging.warn("Balance on %s: %f USD - Balance on %s: %f BTC"
% (kask, self.clients[kask].usd_balance, kbid,
self.clients[kbid].btc_balance))
return
current_time = time.time()
if current_time - self.last_trade < self.trade_wait:
logging.warn("[TraderBot] Can't automate this trade, last trade " +
"occured %.2f seconds ago" %
(current_time - self.last_trade))
return
self.potential_trades.append([profit, volume, kask, kbid,
weighted_buyprice, weighted_sellprice,
buyprice, sellprice])
arbitrer.py 文件源码
项目:Bitcoin-arbitrage---opportunity-detector
作者: yoshi717
项目源码
文件源码
阅读 38
收藏 0
点赞 0
评论 0
def tickers(self):
for market in self.markets:
logging.verbose("ticker: " + market.name + " - " + str(
market.get_ticker()))
def instantiate( cls, streamType = "SCREEN", logLevel = "INFO" ):
try:
logging.VERBOSE = 5
logging.addLevelName(logging.VERBOSE, "VERBOSE")
logging.Logger.verbose = lambda inst, msg, *args, **kwargs: inst.log(logging.VERBOSE, msg, *args, **kwargs)
logging.verbose = lambda msg, *args, **kwargs: logging.log(logging.VERBOSE, msg, *args, **kwargs)
cls.logger = logging.getLogger()
if logLevel not in logging._levelNames:
raise Exception( 'Invalid file level' )
cls.logger.setLevel( logging._levelNames[logLevel] )
streamType = app.config['STREAMTYPE']
if streamType == "SCREEN":
stream = logging.StreamHandler()
else:
stream = logging.FileHandler( app.config['LOGFILE'] )
formatter = logging.Formatter( '[%(levelname)-7s - %(asctime)s] %(message)s' )
stream.setFormatter( formatter )
cls.logger.addHandler( stream )
except Exception, e:
print( 'Unable to get/set log configurations. Error: %s'%( e ) )
cls.logger = None
##
# Records a message in a file and/or displays it in the screen.
# @param level - String containing the name of the log message.
# @param message - String containing the message to be recorded.
#
def verbose( cls, message ):
cls.log("VERBOSE", message, Log.getCallers( inspect.stack() ))
##
# Gets the data about the caller of the log method.
# @param stack Array containing the system calling stack.
# @return Array containing the caller class name and the caller method, respectively.
#
def inject_verbose_info(self):
logging.VERBOSE = 15
logging.verbose = lambda x: logging.log(logging.VERBOSE, x)
logging.addLevelName(logging.VERBOSE, "VERBOSE")
def buy(self, amount, price, client_id=None):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
logging.verbose("Buy %f BTC at %f %s (%f CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
if client_id:
return self._buy(amount, local_currency_price, client_id)
else:
return self._buy(amount, local_currency_price)
def sell(self, amount, price, client_id=None):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
logging.verbose("Sell %f BTC at %f %s (%f CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
if client_id:
return self._sell(amount, local_currency_price, client_id)
else:
return self._sell(amount, local_currency_price)
def sell_maker(self, amount, price):
"""Orders are always priced in CNY"""
local_currency_price = self.fc.convert(price, "CNY", self.currency)
local_currency_price = int(local_currency_price)
logging.verbose("Sell maker %f BTC at %d %s (%d CNY) @%s" % (amount,
local_currency_price, self.currency, price, self.name))
return self._sell_maker(amount, local_currency_price)
def tickers(self):
for market in self.markets:
logging.verbose("ticker: " + market.name + " - " + str(
market.get_ticker()))
def test_verbose_hack(self):
self.logger.verbose("foo")
logging.verbose("foo")
self.assertEqual(logging.VERBOSE, 15)
if six.PY2:
# There is no _levelNames attribute in Python 3
self.assertTrue("VERBOSE" in logging._levelNames)
self.assertEqual(logging.getLevelName(15), "VERBOSE")
def verbose(self, msg, *args, **kwargs):
"""
Log 'msg % args' with severity 'VERBOSE'.
To pass exception information, use the keyword argument exc_info with
a true value, e.g.
logger.info("Houston, we have a %s", "interesting problem", exc_info=1)
"""
if self.manager.disable >= logging.VERBOSE:
return
if logging.VERBOSE >= self.getEffectiveLevel():
self._log(*(logging.VERBOSE, msg, args), **kwargs)
def verbose(msg, *args, **kwargs):
"""
Log a message with severity 'VERBOSE' on the root logger.
"""
if len(logging.root.handlers) == 0:
logging.basicConfig()
logging.root.verbose(*((msg, ) + args), **kwargs)
def new_order(self, kexchange, type, maker_only=True, amount=None, price=None):
if type == 'buy' or type == 'sell':
if not price or not amount:
if type == 'buy':
price = self.get_buy_price()
amount = math.floor((self.cny_balance/price)*10)/10
else:
price = self.get_sell_price()
amount = math.floor(self.btc_balance * 10) / 10
if maker_only:
amount = min(self.max_maker_volume, amount)
if amount < self.min_maker_volume:
logging.debug('Maker amount is too low %s %s' % (type, amount))
return None
else:
amount = min(self.max_taker_volume, amount)
if amount < self.min_taker_volume:
logging.debug('Taker amount is too low %s %s' % (type, amount))
return None
if maker_only:
if type == 'buy':
order_id = self.clients[kexchange].buy_maker(amount, price)
else:
order_id = self.clients[kexchange].sell_maker(amount, price)
else:
if type == 'buy':
order_id = self.clients[kexchange].buy(amount, price)
else:
order_id = self.clients[kexchange].sell(amount, price)
if not order_id:
logging.warn("%s @%s %f/%f BTC failed" % (type, kexchange, amount, price))
return None
if order_id == -1:
logging.warn("%s @%s %f/%f BTC failed, %s" % (type, kexchange, amount, price, order_id))
return None
order = {
'market': kexchange,
'id': order_id,
'price': price,
'amount': amount,
'deal_amount':0,
'deal_index': 0,
'type': type,
'maker_only': maker_only,
'time': time.time()
}
self.orders.append(order)
logging.verbose("submit order %s" % (order))
return order
return None
def new_order(self, kexchange, type, maker_only=True, amount=None, price=None):
if type == 'buy' or type == 'sell':
if not price or not amount:
if type == 'buy':
price = self.get_buy_price()
amount = math.floor((self.cny_balance/price)*10)/10
else:
price = self.get_sell_price()
amount = math.floor(self.btc_balance * 10) / 10
if maker_only:
amount = min(self.max_maker_volume, amount)
if amount < self.min_maker_volume:
logging.warn('Maker amount is too low %s %s' % (type, amount))
return None
else:
amount = min(self.max_taker_volume, amount)
if amount < self.min_taker_volume:
logging.warn('Taker amount is too low %s %s' % (type, amount))
return None
if maker_only:
if type == 'buy':
order_id = self.clients[kexchange].buy_maker(amount, price)
else:
order_id = self.clients[kexchange].sell_maker(amount, price)
else:
if type == 'buy':
order_id = self.clients[kexchange].buy(amount, price)
else:
order_id = self.clients[kexchange].sell(amount, price)
if not order_id:
logging.warn("%s @%s %f/%f BTC failed, %s" % (type, kexchange, amount, price, order_id))
return None
if order_id == -1:
logging.warn("%s @%s %f/%f BTC failed, %s" % (type, kexchange, amount, price, order_id))
return None
order = {
'market': kexchange,
'id': order_id,
'price': price,
'amount': amount,
'deal_amount':0,
'deal_index': 0,
'type': type,
'maker_only': maker_only,
'time': time.time()
}
self.orders.append(order)
logging.verbose("submit order %s" % (order))
return order
return None