From 0cb27c58aa9a1c4593495bf01993d60d4bb73f9d Mon Sep 17 00:00:00 2001 From: Maxime Biais Date: Tue, 19 Mar 2013 17:41:22 +0100 Subject: [PATCH] fix #3 - pep8 cleaning using 'autopep8 --max-line-length=119' --- src/arbitrage.py | 12 +++++----- src/config.py-example | 3 +-- src/observers/historydumper.py | 2 +- src/observers/logger.py | 4 ++-- src/observers/observer.py | 2 +- src/observers/traderbot.py | 22 ++++++++---------- src/observers/traderbotsim.py | 13 ++++++----- src/private_markets/bitcoincentral.py | 8 +++---- src/private_markets/mtgox.py | 30 ++++++++++++------------- src/public_markets/bitcoin24eur.py | 2 +- src/public_markets/bitcoincentraleur.py | 2 +- src/public_markets/bitstampeur.py | 2 +- src/public_markets/btceusd.py | 1 + src/public_markets/intersangoeur.py | 2 +- src/public_markets/market.py | 2 +- src/public_markets/mtgox-streaming.py | 4 ++++ src/public_markets/mtgoxeur.py | 1 + tests/arbitrage_test.py | 3 --- tools/autopep8-project.sh | 3 +++ 19 files changed, 61 insertions(+), 57 deletions(-) create mode 100755 tools/autopep8-project.sh diff --git a/src/arbitrage.py b/src/arbitrage.py index cb6b1f76d..d217b89e3 100644 --- a/src/arbitrage.py +++ b/src/arbitrage.py @@ -5,6 +5,7 @@ import logging import json + class Arbitrer(object): def __init__(self): self.markets = [] @@ -17,14 +18,14 @@ def init_markets(self, markets): self.market_names = markets for market_name in markets: exec('import public_markets.' + market_name.lower()) - market = eval('public_markets.' + market_name.lower() + '.' + market_name + '()') + market = eval('public_markets.' + market_name.lower() + '.' + market_name + '()') self.markets.append(market) def init_observers(self, observers): self.observer_names = observers for observer_name in observers: exec('import observers.' + observer_name.lower()) - observer = eval('observers.' + observer_name.lower() + '.' + observer_name + '()') + observer = eval('observers.' + observer_name.lower() + '.' + observer_name + '()') self.observers.append(observer) def get_profit_for(self, mi, mj, kask, kbid): @@ -98,12 +99,12 @@ def arbitrage_depth_opportunity(self, kask, kbid): best_i, best_j = (i, j) best_w_buyprice, best_w_sellprice = (w_buyprice, w_sellprice) return best_profit, best_volume, self.depths[kask]["asks"][best_i]["price"],\ - self.depths[kbid]["bids"][best_j]["price"], best_w_buyprice, best_w_sellprice + self.depths[kbid]["bids"][best_j]["price"], best_w_buyprice, best_w_sellprice def arbitrage_opportunity(self, kask, ask, kbid, bid): perc = (bid["price"] - ask["price"]) / bid["price"] * 100 profit, volume, buyprice, sellprice, weighted_buyprice,\ - weighted_sellprice = self.arbitrage_depth_opportunity(kask, kbid) + weighted_sellprice = self.arbitrage_depth_opportunity(kask, kbid) if volume == 0 or buyprice == 0: return perc2 = (1 - (volume - (profit / buyprice)) / volume) * 100 @@ -141,7 +142,7 @@ def tick(self): for kmarket1 in self.depths: for kmarket2 in self.depths: - if kmarket1 == kmarket2: # same market + if kmarket1 == kmarket2: # same market continue market1 = self.depths[kmarket1] market2 = self.depths[kmarket2] @@ -158,6 +159,7 @@ def loop(self): self.tick() time.sleep(30) + def main(): import argparse parser = argparse.ArgumentParser() diff --git a/src/config.py-example b/src/config.py-example index a73e4530a..e6af50a09 100644 --- a/src/config.py-example +++ b/src/config.py-example @@ -6,7 +6,7 @@ markets = ["MtGoxEUR", "BitcoinCentralEUR", "IntersangoEUR"] # ["Logger", "TraderBot", "TraderBotSim", "HistoryDumper", "Emailer"] observers = ["Logger"] -market_expiration_time = 120 # in seconds: 2 minutes +market_expiration_time = 120 # in seconds: 2 minutes #### Trader Bot Config # Access to Private APIs @@ -28,4 +28,3 @@ smtp_login = 'FIXME' smtp_passwd = 'FIXME' smtp_from = 'FIXME' smtp_to = 'FIXME' - diff --git a/src/observers/historydumper.py b/src/observers/historydumper.py index 1356cf1d6..2b0e5ffdf 100644 --- a/src/observers/historydumper.py +++ b/src/observers/historydumper.py @@ -3,6 +3,7 @@ import time import os + class HistoryDumper(Observer): out_dir = 'history/' @@ -22,4 +23,3 @@ def end_opportunity_finder(self): def opportunity(self, profit, volume, buyprice, kask, sellprice, kbid, perc, weighted_buyprice, weighted_sellprice): pass - diff --git a/src/observers/logger.py b/src/observers/logger.py index d1d01d31e..458035136 100644 --- a/src/observers/logger.py +++ b/src/observers/logger.py @@ -1,8 +1,8 @@ import logging from observer import Observer + class Logger(Observer): def opportunity(self, profit, volume, buyprice, kask, sellprice, kbid, perc, weighted_buyprice, weighted_sellprice): - logging.info("profit: %f EUR with volume: %f BTC - buy at %.4f (%s) sell at %.4f (%s) ~%.2f%%" % \ + logging.info("profit: %f EUR with volume: %f BTC - buy at %.4f (%s) sell at %.4f (%s) ~%.2f%%" % (profit, volume, buyprice, kask, sellprice, kbid, perc)) - diff --git a/src/observers/observer.py b/src/observers/observer.py index 8703baf65..f492c18b6 100644 --- a/src/observers/observer.py +++ b/src/observers/observer.py @@ -1,5 +1,6 @@ import abc + class Observer(object): __metaclass__ = abc.ABCMeta @@ -13,4 +14,3 @@ def end_opportunity_finder(self): @abc.abstractmethod def opportunity(self, profit, volume, buyprice, kask, sellprice, kbid, perc, weighted_buyprice, weighted_sellprice): pass - diff --git a/src/observers/traderbot.py b/src/observers/traderbot.py index d5e50daad..7fd931595 100644 --- a/src/observers/traderbot.py +++ b/src/observers/traderbot.py @@ -5,6 +5,7 @@ from private_markets import mtgox from private_markets import bitcoincentral + class TraderBot(Observer): def __init__(self): self.mtgox = mtgox.PrivateMtGox() @@ -14,10 +15,10 @@ def __init__(self): "MtGoxUSD": self.mtgox, "BitcoinCentralEUR": self.btcentral, "BitcoinCentralUSD": self.btcentral - } - self.profit_thresh = 5 # in EUR - self.perc_thresh = 2 # in % - self.trade_wait = 120 # in seconds + } + self.profit_thresh = 5 # in EUR + self.perc_thresh = 2 # in % + self.trade_wait = 120 # in seconds self.last_trade = 0 self.potential_trades = [] @@ -44,24 +45,24 @@ def opportunity(self, profit, volume, buyprice, kask, sellprice, kbid, perc, wei # Check balances if (volume * buyprice) * (1 + config.balance_margin) > self.clients[kask].eur_balance: - logging.warn("Can't automate this trade, not enough money on: %s - need %f got %f" \ + logging.warn("Can't automate this trade, not enough money on: %s - need %f got %f" % (kask, (volume * buyprice) * (1 + config.balance_margin), self.clients[kask].eur_balance)) return if volume * (1 + config.balance_margin) > self.clients[kbid].btc_balance: - logging.warn("Can't automate this trade, not enough money on: %s - need %f got %f" \ + logging.warn("Can't automate this trade, not enough money on: %s - need %f got %f" % (kbid, volume * (1 + config.balance_margin), self.clients[kbid].btc_balance)) return current_time = time.time() if current_time - self.last_trade < self.trade_wait: - logging.warn("Can't automate this trade, last trade occured %s seconds ago" % (current_time - self.last_trade)) + logging.warn("Can't automate this trade, last trade occured %s seconds ago" % ( + current_time - self.last_trade)) return self.potential_trades.append([profit, volume, kask, kbid, weighted_buyprice, weighted_sellprice]) - def watch_balances(self): pass @@ -69,8 +70,3 @@ def execute_trade(self, volume, kask, kbid, weighted_buyprice, weighted_sellpric self.last_trade = time.time() self.clients[kask].buy(volume) self.clients[kbid].sell(volume) - - - - - diff --git a/src/observers/traderbotsim.py b/src/observers/traderbotsim.py index 94441d688..608b396c3 100644 --- a/src/observers/traderbotsim.py +++ b/src/observers/traderbotsim.py @@ -9,6 +9,7 @@ from traderbot import TraderBot import json + class MockMarket(object): def __init__(self, name, fee=0, eur_balance=500., btc_balance=15., persistent=True): self.name = name @@ -49,13 +50,14 @@ def save(self): def balance_total(self, price): return self.eur_balance + self.btc_balance * price + class TraderBotSim(TraderBot): def __init__(self): - self.mtgox = MockMarket("mtgox", 0.006) # 0.6% fee + self.mtgox = MockMarket("mtgox", 0.006) # 0.6% fee self.btcentral = MockMarket("bitcoin-central") self.intersango = MockMarket("intersango") self.bitcoin24 = MockMarket("bitcoin24") - self.bitstamp = MockMarket("bitstamp", 0.005) # 0.5% fee + self.bitstamp = MockMarket("bitstamp", 0.005) # 0.5% fee self.clients = { "MtGoxEUR": self.mtgox, "MtGoxUSD": self.mtgox, @@ -63,9 +65,9 @@ def __init__(self): "Bitcoin24EUR": self.bitcoin24, "IntersangoEUR": self.intersango, "BitstampEUR": self.bitstamp, - } - self.profit_thresh = 1 # in EUR - self.perc_thresh = 0.1 # in % + } + self.profit_thresh = 1 # in EUR + self.perc_thresh = 0.1 # in % self.trade_wait = 120 self.last_trade = 0 @@ -80,4 +82,3 @@ def execute_trade(self, volume, kask, kbid, weighted_buyprice, weighted_sellpric if __name__ == "__main__": t = TraderBotSim() print t.total_balance(33) - diff --git a/src/private_markets/bitcoincentral.py b/src/private_markets/bitcoincentral.py index e0a24560f..6e908baa6 100644 --- a/src/private_markets/bitcoincentral.py +++ b/src/private_markets/bitcoincentral.py @@ -12,6 +12,7 @@ import config from decimal import Decimal + class PrivateBitcoinCentral(Market): balance_url = "https://bitcoin-central.net/api/v1/balances/" trade_url = "https://bitcoin-central.net/api/v1/trade_orders/" @@ -31,7 +32,7 @@ def _send_request(self, url, params=[], extra_headers=None): 'Content-type': 'application/json', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' - } + } if extra_headers is not None: for k, v in extra_headers.iteritems(): headers[k] = v @@ -54,9 +55,8 @@ def _send_request(self, url, params=[], extra_headers=None): return json.loads(jsonstr) return None - def trade(self, amount, ttype, price=None): - #params = [("amount", amount), ("currency", self.currency), ("type", ttype)] + # params = [("amount", amount), ("currency", self.currency), ("type", ttype)] params = {"amount": amount, "currency": self.currency, "type": ttype} if price: params["price"] = price @@ -78,7 +78,7 @@ def get_info(self): self.eur_balance = Decimal(response["EUR"]) def __str__(self): - return str({ "btc_balance": self.btc_balance, "eur_balance": self.eur_balance }) + return str({"btc_balance": self.btc_balance, "eur_balance": self.eur_balance}) if __name__ == "__main__": diff --git a/src/private_markets/mtgox.py b/src/private_markets/mtgox.py index 6ac9db3c6..a5f2e49b0 100644 --- a/src/private_markets/mtgox.py +++ b/src/private_markets/mtgox.py @@ -13,13 +13,14 @@ import re from decimal import Decimal + class PrivateMtGox(Market): - ticker_url = { "method": "GET", "url": "https://mtgox.com/api/1/BTCUSD/public/ticker" } - buy_url = { "method": "POST", "url": "https://mtgox.com/api/1/BTCUSD/private/order/add" } - sell_url = { "method": "POST", "url": "https://mtgox.com/api/1/BTCUSD/private/order/add" } - order_url = { "method": "POST", "url": "https://mtgox.com/api/1/generic/private/order/result" } - open_orders_url = { "method": "POST", "url": "https://mtgox.com/api/1/generic/private/orders" } - info_url = { "method": "POST", "url": "https://mtgox.com/api/1/generic/private/info" } + ticker_url = {"method": "GET", "url": "https://mtgox.com/api/1/BTCUSD/public/ticker"} + buy_url = {"method": "POST", "url": "https://mtgox.com/api/1/BTCUSD/private/order/add"} + sell_url = {"method": "POST", "url": "https://mtgox.com/api/1/BTCUSD/private/order/add"} + order_url = {"method": "POST", "url": "https://mtgox.com/api/1/generic/private/order/result"} + open_orders_url = {"method": "POST", "url": "https://mtgox.com/api/1/generic/private/orders"} + info_url = {"method": "POST", "url": "https://mtgox.com/api/1/generic/private/info"} def __init__(self): super(Market, self).__init__() @@ -64,7 +65,7 @@ def _send_request(self, url, params, extra_headers=None): 'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' - } + } if extra_headers is not None: for k, v in extra_headers.iteritems(): headers[k] = v @@ -83,9 +84,9 @@ def trade(self, amount, ttype, price=None): self.buy_url["url"] = self._change_currency_url(self.buy_url["url"], self.currency) - params = [ ("nonce", self._create_nonce()), - ("amount_int", str(amount)), - ("type", ttype) ] + params = [("nonce", self._create_nonce()), + ("amount_int", str(amount)), + ("type", ttype)] if price: params.append(("price_int", str(price))) @@ -101,7 +102,7 @@ def sell(self, amount, price=None): return self.trade(amount, "ask", price) def get_info(self): - params = [ ("nonce", self._create_nonce()) ] + params = [("nonce", self._create_nonce())] response = self._send_request(self.info_url, params) if response and "result" in response and response["result"] == "success": self.btc_balance = self._from_int_amount(int(response["return"]["Wallets"]["BTC"]["Balance"]["value_int"])) @@ -109,14 +110,13 @@ def get_info(self): return 1 return None - def __str__(self): - return str({ "btc_balance": self.btc_balance, "eur_balance": self.eur_balance }) + return str({"btc_balance": self.btc_balance, "eur_balance": self.eur_balance}) if __name__ == "__main__": mtgox = PrivateMtGox() mtgox.get_info() - #mtgox.buy(0.01, "EUR") - #mtgox.sell(0.01, "EUR") + # mtgox.buy(0.01, "EUR") + # mtgox.sell(0.01, "EUR") print mtgox diff --git a/src/public_markets/bitcoin24eur.py b/src/public_markets/bitcoin24eur.py index 4acd227fe..3462be199 100644 --- a/src/public_markets/bitcoin24eur.py +++ b/src/public_markets/bitcoin24eur.py @@ -2,6 +2,7 @@ import json from market import Market + class Bitcoin24EUR(Market): def __init__(self): super(Bitcoin24EUR, self).__init__("EUR") @@ -27,4 +28,3 @@ def format_depth(self, depth): if __name__ == "__main__": market = Bitcoin24EUR() print json.dumps(market.get_ticker()) - diff --git a/src/public_markets/bitcoincentraleur.py b/src/public_markets/bitcoincentraleur.py index 3b66928fd..eb65ee35e 100644 --- a/src/public_markets/bitcoincentraleur.py +++ b/src/public_markets/bitcoincentraleur.py @@ -2,6 +2,7 @@ import json from market import Market + class BitcoinCentralEUR(Market): def __init__(self): super(BitcoinCentralEUR, self).__init__("EUR") @@ -29,4 +30,3 @@ def format_depth(self, depth): if __name__ == "__main__": market = BitcoinCentralEUR() print market.get_ticker() - diff --git a/src/public_markets/bitstampeur.py b/src/public_markets/bitstampeur.py index 2f5b39fcc..398e00109 100644 --- a/src/public_markets/bitstampeur.py +++ b/src/public_markets/bitstampeur.py @@ -3,6 +3,7 @@ import sys from market import Market + class BitstampEUR(Market): def __init__(self): super(BitstampEUR, self).__init__("EUR") @@ -32,4 +33,3 @@ def format_depth(self, depth): if __name__ == "__main__": market = BitstampEUR() print market.get_ticker() - diff --git a/src/public_markets/btceusd.py b/src/public_markets/btceusd.py index cd50d46ed..a31f569e3 100644 --- a/src/public_markets/btceusd.py +++ b/src/public_markets/btceusd.py @@ -4,6 +4,7 @@ import json from market import Market + class BtceUSD(Market): def __init__(self): super(BtceUSD, self).__init__("USD") diff --git a/src/public_markets/intersangoeur.py b/src/public_markets/intersangoeur.py index 639df1375..be06289c7 100644 --- a/src/public_markets/intersangoeur.py +++ b/src/public_markets/intersangoeur.py @@ -2,6 +2,7 @@ import json from market import Market + class IntersangoEUR(Market): def __init__(self): super(IntersangoEUR, self).__init__("EUR") @@ -27,4 +28,3 @@ def format_depth(self, depth): if __name__ == "__main__": market = IntersangoEUR() print json.dumps(market.get_ticker()) - diff --git a/src/public_markets/market.py b/src/public_markets/market.py index de88ca629..870a23105 100644 --- a/src/public_markets/market.py +++ b/src/public_markets/market.py @@ -6,6 +6,7 @@ import config import logging + class Market(object): def __init__(self, currency): self.name = self.__class__.__name__ @@ -45,4 +46,3 @@ def buy(self, price, amount): def sell(self, price, amount): pass - diff --git a/src/public_markets/mtgox-streaming.py b/src/public_markets/mtgox-streaming.py index c3391ecae..cf1a13307 100644 --- a/src/public_markets/mtgox-streaming.py +++ b/src/public_markets/mtgox-streaming.py @@ -4,15 +4,19 @@ import websocket websocket._debug = True + def on_message(ws, message): print message + def on_error(ws, error): print error + def on_close(ws): print "### closed ###" + def on_open(ws): def run(*args): for i in range(30000): diff --git a/src/public_markets/mtgoxeur.py b/src/public_markets/mtgoxeur.py index 6324e2ccf..9a5d945d3 100644 --- a/src/public_markets/mtgoxeur.py +++ b/src/public_markets/mtgoxeur.py @@ -3,6 +3,7 @@ import logging from market import Market + class MtGoxEUR(Market): def __init__(self): super(MtGoxEUR, self).__init__("EUR") diff --git a/tests/arbitrage_test.py b/tests/arbitrage_test.py index 6f4fb6754..8dfb3eba6 100644 --- a/tests/arbitrage_test.py +++ b/tests/arbitrage_test.py @@ -50,7 +50,6 @@ {'amount': 10, 'price': 32.3}]}} - class TestArbitrage(unittest.TestCase): def setUp(self): self.arbitrer = arbitrage.Arbitrer() @@ -67,7 +66,6 @@ def test_getprofit2(self): assert(159 == int(profit * 100)) assert(vol == 5) - def test_getprofit3(self): self.arbitrer.depths = depths3 profit, vol, wb, ws = self.arbitrer.get_profit_for(2, 1, 'BitcoinCentralEUR', 'MtGoxEUR') @@ -76,4 +74,3 @@ def test_getprofit3(self): if __name__ == '__main__': unittest.main() - diff --git a/tools/autopep8-project.sh b/tools/autopep8-project.sh new file mode 100755 index 000000000..3e8ecfc5d --- /dev/null +++ b/tools/autopep8-project.sh @@ -0,0 +1,3 @@ +#!/bin/sh +find . -name "*.py" | xargs autopep8 -i --max-line-length=119 +