Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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) 
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
    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
        """            
Ejemplo n.º 9
0
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)
"""    
Ejemplo n.º 10
0
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])
Ejemplo n.º 11
0
def show_book(nom, denom):
    for e in [exc.KRAKEN]:
        market = model.market_from(nom, denom)
        show_book_exc(e, market)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
"""

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])
Ejemplo n.º 14
0
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")
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
"""
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)
Ejemplo n.º 17
0
    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)