def ordering(e): #market = m.get_market("LTC","BTC",e) market = m.market_from("LTC", "BTC") b = a.afacade.balance_all(exchange=e) btc_balance = list(filter(lambda x: x['symbol'] == 'BTC', b))[0]['amount'] print(btc_balance) #b = a.afacade.balance_currency("BTC",e) if btc_balance > 0.001: print("balance ", b) print("market " + market) s = a.afacade.get_market_summary(market, e) print("s ", s) bid = s["bid"] ask = s["ask"] trade_type = "BUY" rho = 0.03 rounding = 8 if e == exc.BINANCE: #binance rounds to 6 rounding = 6 price = round(bid * (1 - rho), rounding) qty = 0.5 o = [market, trade_type, price, qty] print("order " + str(o)) r = a.afacade.submit_order(o, e) print("order result " + str(r)) else: print("insufficient balance")
def get_ethusdt(): """ get daily candles and append last price as current day """ market = models.market_from("ETH", "USDT") x = a.afacade.get_candles_daily(market, exc.BINANCE) y = a.afacade.get_candles_minute(market, exc.BINANCE) x.append(y[-1]) return x
def ordering(): currency = input("what market against BTC? ") e = input( "what exchange (number)? CRYPTOPIA = 0 BITTREX = 1 KUCOIN = 2 BINANCE = 3 KRAKEN = 4 HITBTC = 5" ) e = int(e) market = m.get_market(currency, "BTC", e) buysell = input("buy or sell? ") qty = input("quantity? ") qty = float(qty) b = a.afacade.balance_all(exchange=e) btc_balance = list(filter(lambda x: x['symbol'] == 'BTC', b))[0]['amount'] print(btc_balance) s = a.afacade.get_market_summary(market, e) bid = s["bid"] ask = s["ask"] if buysell == "BUY": if btc_balance > 0.001: trade_type = "BUY" rho = 0.1 price = round(bid * (1 - rho), 8) print("target price ", price) #qty = 0.1 market = m.market_from( currency, "BTC", ) o = [market, trade_type, price, qty] print("order " + str(o)) r = a.afacade.submit_order(o, e) print("order result " + str(r)) else: print("insufficient balance") else: #TODO check LTC balance trade_type = "SELL" rho = 0.001 price = round(ask * (1 - rho), 8) print("target price ", price) #qty = 0.1 market = m.market_from(currency, "BTC") o = [market, trade_type, price, qty] print("order " + str(o)) r = a.afacade.submit_order(o, e) print("order result " + str(r))
def get_average(token): #r = redis.Redis(host='localhost', port=6379, db=0) market = models.market_from(token, "ETH") candles = a.afacade.get_candles_minute(market, exc.BINANCE) closes = [float(x[4]) for x in candles] avg = round(np.mean(closes), 6) #print (closes) k = market + "_avg" print(token, ":", avg) #r.set(token, json.dumps(avg)) return avg
def sync_all_candles(self, markets): for m in markets[:10]: try: s = m['nom'] market = models.market_from(s, "BTC") self.broker.sync_candle_minute(market, exc.BINANCE) x = self.broker.db.candles.find_one() self.logger.info(x["time_insert"]) time.sleep(0.05) except Exception as err: logger.error("pair error %s" % err)
def sync_all_candles(self, markets): logger.debug("sync candles for %i markets"%(len(markets))) for m in markets[:50]: try: s = m['nom'] market = models.market_from(s,"BTC") #candles = self.afacade.get_candles_minute(market,exc.BINANCE) self.broker.sync_candle_minute15(market,exc.BINANCE) x = self.broker.db.candles.find_one() logger.debug(x["time_insert"]) #self.candle_signal(candles, market) #self.checkpair(market) time.sleep(0.05) except Exception as err: logger.error("pair error %s"%err)
def submit_buy(): book = get_book() mid = mid_price(book) #display_book(book) #print (mid) print(book) ttype = orders.ORDER_SIDE_BUY p = 0.01 order_price = round(mid * (1 - p), 0) qty = 1 market = m.market_from("XBT", "USD") order = [market, ttype, order_price, qty] result = abroker.submit_order(order, exc.BITMEX) print("result ", result) oo = abroker.afacade.open_orders(exc.BITMEX) print(oo)
def sync_job(self): """ run worker """ db = self.broker.get_db() col = db.orderbooks #['bitmex_orderbook'] #i = 0 self.logger.debug('sync in the background') #while True: market = m.market_from("XBT", "USD") smarket = models.conv_markets_to(market, exc.BITMEX) self.broker.sync_orderbook(smarket, exc.BITMEX) self.broker.sync_trades(smarket, exc.BITMEX) #col.insert_one(book) #logger.debug("sync.. %s"%str(book)) #print (book) #time.sleep(5) #i+=1 """
import archon.exchange.binance as b import archon.model.models as models from archon.util import * import time import datetime import math from datetime import datetime a = broker.Broker() a.set_keys_exchange_file() client = a.afacade.get_client(exc.BINANCE) market = models.market_from("ADA","BTC") #x = a.afacade.get_candles_hourly(market,exc.BINANCE) data = a.afacade.get_candles_daily(market,exc.BINANCE) closes = list() COL_CLOSE = 4 COL_VOLUME = 5 """ for z in x[-100:]: ts = z[0] o,h,l,c = z[1:5] print (ts,c,z[5]) closes.append(c) """
import archon.facade as facade import archon.broker as broker import archon.exchange.exchanges as exc import archon.exchange.binance as b import archon.model.models as models from archon.util import * import time import datetime import math from datetime import datetime a = broker.Broker() a.set_keys_exchange_file() client = a.afacade.get_client(exc.BINANCE) market = models.get_market("RVN", "BTC", exc.BINANCE) x = client.get_orderbook_symbol(market) time.sleep(0.5) m = models.market_from("RVN", "BTC") [bids, asks] = a.afacade.get_orderbook(m, exc.BINANCE) print(bids[0], asks[0])
def show_book(nom, denom): for e in [exc.KRAKEN]: market = model.market_from(nom, denom) show_book_exc(e, market)
import archon.exchange.exchanges as exc import archon.model.models as models import archon.facade as facade import archon.broker as broker import archon.markets as m afacade = facade.Facade() broker.setClientsFromFile(afacade) a = broker.Broker() ae = [exc.KUCOIN,exc.BITTREX] a.set_active_exchanges(ae) market = models.market_from("LTC","BTC") print ("sync ",market) a.sync_orderbook_all(market) db = a.get_db() x = db.orderbooks.find({'market':market}) for z in x: print (z)
""" import archon.facade as facade import archon.broker as broker import archon.exchange.exchanges as exc import archon.model.models as models from archon.util import * from pymongo import MongoClient import time import datetime import math afacade = facade.Facade() broker.setClientsFromFile(afacade) a = broker.Broker() ae = [exc.KUCOIN, exc.BITTREX, exc.CRYPTOPIA] a.set_active_exchanges(ae) if __name__ == '__main__': nom = "LTC" denom = "BTC" market = models.market_from(nom, denom) a.sync_tx_all(market) db = a.get_db() for e in ae: n = exc.NAMES[e] txs = db.txs.find_one({'market': market, 'exchange': n}) print("> ", txs['tx'][-1])
def get_book(): symbol = "XBTUSD" inst = client.get_instrument(symbol) print (inst['bidPrice']) print (inst['askPrice']) book = client.market_depth(symbol,depth=3) sells = list(filter(lambda x: x['side']=='Sell',book)) buys = list(filter(lambda x: x['side']=='Buy',book)) print (buys[0],sells[0]) def display_book(book,name): [bids,asks] = book print ("** bid ** %s ** ask **"%(name)) i = 0 for b in bids[:10]: ask = asks[i] bp = b['price'] ap = ask['price'] av = ask['quantity'] bv = b['quantity'] print ("%.8f %.2f %.8f %.2f" % (bp,bv,ap,av)) i+=1 #get_book() #market = "XBT-USD" market = m.market_from("XBT","USD") book = abroker.afacade.get_orderbook(market, exc.BITMEX) #print (book) display_book(book,"BITMEX")
def get_book(): market = m.market_from("XBT", "USD") smarket = m.conv_markets_to(market, exc.BITMEX) book = abroker.afacade.get_orderbook(smarket, exc.BITMEX) return book
""" show orderbooks for all exchanges """ import archon.facade as facade import archon.broker as broker import archon.exchange.exchanges as exc import archon.model.models as model from archon.util import * import time import datetime import math abroker = broker.Broker(setAuto=False) abroker.set_keys_exchange_file(exchanges=[exc.KRAKEN]) client = abroker.afacade.get_client(exc.KRAKEN) market = model.market_from("BTC", "USD") smarket = model.conv_markets_to(market, exc.KRAKEN) t = client.get_trades(smarket) for x in t: print(x)
bars = pd.DataFrame(candle_data, index=dates, columns=['close', 'volume']) #print (bars.describe()) bars['Pct Change'] = bars['close'].astype('float').pct_change() bars['RSI'] = talib.RSI(bars['close']) bars['volumeROC'] = talib.ROC(bars['volume']) symbol = market rfs = RSIStrategy('close', bars, buy_barrier, short_barrier) signals = rfs.generate_signals() #print ("signal summary \n",signals.describe()) backtest = MarketOnOpenPortfolio(symbol, bars, signals) pf = backtest.backtest_portfolio() lastindex = pf['Strategy'][-1] total_return = lastindex / 100 - 1 print("total return ", total_return) plot_portfolio(pf) if __name__ == "__main__": currency_to_test = "ADA" market = models.market_from(currency_to_test, "BTC") daily_data = a.afacade.get_candles_daily(market, exc.BINANCE) #daily_data = a.afacade.get_candles_hourly(market,exc.BINANCE) buy_barrier = 40 short_barrier = 60 backtest_market(daily_data, buy_barrier, short_barrier)