Ejemplo n.º 1
0
class TestBroker(unittest.TestCase):

    #Database startup
    broker1 = Broker.Broker(topic="topic/channel",
                            logs=False,
                            logName='Broker1')
    broker2 = Broker.Broker(topic="topic/channel",
                            logs=False,
                            logName='Broker2')
    broker3 = Broker.Broker(topic="topic/channel",
                            logs=False,
                            logName='Broker3')
    broker1.subscribe(topic="topic/channel")
    broker2.subscribe(topic="topic/channel")
    payload = randint(0, 9)
    payload2 = randint(0, 9)
    payload3 = randint(0, 9)
    received_payload = ' '

    def iAmACallbackFunction(self, topic, payload):
        self.received_topic = topic
        self.received_payload = payload
        self.broker1.stop()

    def iAmACallbackFunction2(self, topic, payload):
        self.received_topic = topic
        self.received_payload2 = payload
        self.broker1.stop()

    def iAmACallbackFunction3(self, topic, payload):
        self.received_topic = topic
        self.received_payload3 = payload
        self.broker1.stop()

    def test_it_should_receive_message(self):
        self.broker1.setCallback(self.iAmACallbackFunction)
        self.broker1.start()
        self.broker2.start()
        self.broker2.publishMessage("topic/channel", self.payload)
        self.broker2.stop()
        time.sleep(1)
        self.broker1.stop()
        self.assertEqual(str(self.payload), self.received_payload)

    def test_it_should_subscribe_to_multiple_topics(self):
        self.broker3.subscribeTopicWithCallback("topic/channel2",
                                                self.iAmACallbackFunction2)
        self.broker3.subscribeTopicWithCallback("topic/channel3",
                                                self.iAmACallbackFunction3)
        self.broker3.setCallbacks()
        self.broker3.start()
        self.broker3.publishMessage("topic/channel2", self.payload2)
        time.sleep(1)
        self.broker3.publishMessage("topic/channel3", self.payload3)
        time.sleep(1)
        self.broker3.stop()
        self.assertEqual(str(self.payload2), self.received_payload2)
        self.assertEqual(str(self.payload3), self.received_payload3)
        pass
Ejemplo n.º 2
0
    def run(self):
        date = dateHelper.getDateAsDatetime(self.startDate)
        endDate = dateHelper.getDateAsDatetime(self.endDate)
        provider = DataProvider()
        balance = BalancePortfolio(provider)
        broker = Broker(provider)
        broker.addCash(self.initialCash)
        portfolioValue = []

        while (date < endDate):
            date_str = dateHelper.getDateAsString(date)

            if (date.weekday() < 5 and not self.isHoliday(date)):
                value = broker.getValue(dateHelper.getDateAsString(date))

                if (self.lastRebalance > self.rebalanceDays):
                    self.lastRebalance = 0
                    broker.setPortfolio(balance.getPortfolio(date_str, value),
                                        date_str)
                else:
                    self.lastRebalance += 1

                portfolioValue += [[date, value]]
            date += timedelta(days=1)

        # print(portfolioValue)
        with open('data/portfolioValue.csv', 'w') as file:
            for item in portfolioValue:
                date = dateHelper.getDateAsString(item[0])
                file.writelines(date + "," + str(item[1]) + "\n")

        print('Performance ' + self.startDate + ' - ' + self.endDate)
        print('Starting value: ' + str(self.initialCash))
        print('Final value: ' + str(portfolioValue[-1][1]))
Ejemplo n.º 3
0
    def create_mmbot(self, symbol):
        print("CREATE MMBOT %s FOR %s WITH %d$ QUOTA TO RUN LIVE:%d" %
              (self.botname, symbol, self.quota, self.live))
        mylogger = MyLogger(symbol, self.live)

        if self.brokertype == "ibkr":
            print("CREATE IBKR BROKER")
            broker = IBBroker(self.budget, self.quota, mylogger)
        else:
            print("CREATE SIM MARKET")
            broker = Broker(self.budget, self.quota, mylogger)

        if self.marketdata == "ibkr":
            print("CREATE IBKR MARKET DATA")
            market = IBMarket(self.rth)
        else:
            print("CREATE ALPHA VANTAGE MARKER DATA")
            market = Market()

        # create and add bot to list of bots
        self.bots.append(
            MMBot(budget=self.quota,
                  symbol=symbol,
                  period=self.period,
                  live=self.live,
                  debug=self.debug,
                  email=self.email,
                  daily=self.daily,
                  broker=broker,
                  market=market,
                  mylogger=mylogger,
                  since=self.since,
                  liquidate=self.liquidate))
def create_brokers(mode, pairs, exchangeNames):
    # returns an array of Broker objects
    brokers = []
    for name in exchangeNames:
        if (name == 'VIRCUREX'):
            xchg = Vircurex(config.VIRCUREX_USER, config.VIRCUREX_SECURITY_WORD)
        elif (name == 'BTCE'):
            xchg = BTCE(config.BTCE_KEYFILE)
        elif (name == 'BTER'):
            xchg = BTER(config.BTER_KEYFILE)
        elif (name == 'COINS-E'):
            xchg = CoinsE(config.COINS_E_API_KEY, config.COINS_E_SECRET)
        elif (name == 'CRYPTSY'):
            xchg = Cryptsy(config.CRYPTSY_API_KEY, config.CRYPTSY_SECRET)
        elif (name == 'CRYPTO-TRADE'):
            xchg = CryptoTrade(config.CRYPTOTRADE_API_KEY, config.CRYPTOTRADE_SECRET)
        elif (name == 'COINEX'):
            xchg = CoinEx(config.COINEX_API_KEY, config.COINEX_SECRET)
        else:
            print('Exchange ' + name + ' not supported!')
            continue
        print('%s initialized' % (xchg.name))

        broker = Broker(mode, xchg)
        if mode == 'BACKTEST':
#            broker.balances = config.PAPER_BALANCE
            broker.balances = broker.xchg.get_all_balances() # use real starting balances.
        brokers.append(broker)
    return brokers
Ejemplo n.º 5
0
def main():
    xsub_port = '5556'
    xpub_port = '5557'
    broker = Broker(xsub_port, xpub_port)
    broker.handler()
    while True:
        pass
Ejemplo n.º 6
0
	def main():
		abcStock = Stock()
		buyStockOrder = BuyStock(abcStock)
		sellStockOrder = SellStock(abcStock)

		broker = Broker()
		broker.takeOrder(buyStockOrder)
		broker.takeOrder(sellStockOrder)

		broker.placeOrders()
 def test_contar(self):
     broker = Broker([42670460, "Lucas", "Soria", False], [
         "Voy a comprar algo con 500 pesos",
         3,
     ], self.caj)
     broker.registrar_actividad()
     actDAO = ActividadDao(broker.db)
     actividades = actDAO.buscarTodos()
     actividad = actividades[0]
     actDAO.borrar(actividades[0])
     self.assertEqual(actividad.mensaje, "Total: $0")
 def test_errores_de_actividades_porcentaje(self, monto, porcentaje, error):
     broker = Broker(
         [42670460, "Lucas", "Soria", False],
         ["Voy a comprar algo con 500 pesos", 2, monto, porcentaje],
         self.caj)
     broker.registrar_actividad()
     actDAO = ActividadDao(broker.db)
     actividades = actDAO.buscarTodos()
     actividad = actividades[0]
     actDAO.borrar(actividades[0])
     self.assertEqual(actividad.mensaje, error)
 def test_insertar(self):
     self.lista = []
     for x in range(17):
         self.lista.append(self.mil_pesos)
     broker = Broker([42670460, "Lucas", "Soria", False],
                     ["Voy a comprar algo con 500 pesos", 4, self.lista],
                     self.caj)
     broker.registrar_actividad()
     actDAO = ActividadDao(broker.db)
     actividades = actDAO.buscarTodos()
     actividad = actividades[0]
     actDAO.borrar(actividades[0])
     self.assertEqual(actividad.mensaje, "Se ingreso dinero correctamente")
    def create_brokers(self, children_num):
        path = "C:/Users/lomiag/PycharmProjects/Energy_Broker/"
        parents = os.listdir(path + "Genetic_Library")
        brks = [Broker(1)]
        brk_id = 1
        for parent in range(len(parents)):
            for child in range(children_num):

                br = Broker(brk_id, parents[parent][:-4])
                brks.append(br)
                mutation_table = br.create_mutation_table()
                random_gene = random.choice(brks).genetic_table
                # print(random.choice(brks).genetic_table)
                mutaion_options = [
                    br.apply_mutation_multiplication(mutation_table),
                    br.apply_mutation_combine(random_gene),
                    br.apply_mutation_reverse()
                ]
                br.genetic_table = random.choice(mutaion_options)
                brks.append(br)
                brk_id += 1

        return brks
 def test_errores_de_actividades(self, monto, error):
     broker = Broker([42670460, "Lucas", "Soria", False],
                     ["Voy a comprar algo con 500 pesos", 1, monto],
                     self.caj)
     self.lista = []
     for x in range(6):
         self.lista.append(self.mil_pesos)
     self.lista.append(self.quinientos_pesos)
     self.caj.agregar_dinero(self.lista)
     broker.registrar_actividad()
     actDAO = ActividadDao(broker.db)
     actividades = actDAO.buscarTodos()
     actividad = actividades[0]
     actDAO.borrar(actividades[0])
     self.assertEqual(actividad.mensaje, error)
Ejemplo n.º 12
0
    def processMessage(self, msg):

        if msg.messageType() == ERROR_INFO:
            errorCode = msg.getElementAsInteger("ERROR_CODE")
            errorMessage = msg.getElementAsString("ERROR_MESSAGE")
            print("GetBrokers >> ERROR CODE: %d\tERROR MESSAGE: %s" %
                  (errorCode, errorMessage))

        elif msg.messageType() == GET_BROKERS:

            bkrs = msg.getElement("EMSX_BROKERS")

            for b in bkrs.values():
                self.brokers.brokers.append(
                    Broker(self.brokers, b, self.assetClass))
Ejemplo n.º 13
0
def create_brokers(mode, pairs, exchangeNames):
    # returns an array of Broker objects
    brokers = []
    for name in exchangeNames:
        if (name == 'binance'):
            xchg = CryptoExchange('binance', config.BINANCE_KEY, config.BINANCE_SECRET)
        else:
            print('Exchange ' + name + ' not supported!')
            continue
        print('%s initialized' % (xchg.name))

        broker = Broker(mode, xchg)
        if mode == 'BACKTEST':
#            broker.balances = config.PAPER_BALANCE
            broker.balances = broker.xchg.get_all_balances() # use real starting balances.
        brokers.append(broker)
    return brokers
 def test_error_billetes(self):
     broker = Broker([42670460, "Lucas", "Soria", False],
                     ["Voy a comprar algo con 500 pesos", 1, 12100],
                     self.caj)
     self.lista = []
     for x in range(17):
         self.lista.append(self.mil_pesos)
     self.caj.agregar_dinero(self.lista)
     broker.registrar_actividad()
     actDAO = ActividadDao(broker.db)
     actividades = actDAO.buscarTodos()
     actividad = actividades[0]
     actDAO.borrar(actividades[0])
     self.assertEqual(
         actividad.mensaje, "Error. No hay una combinación"
         " de billetes que nos permita"
         " extraer ese monto")
    def __init__( self ):

        ## Default tariff
        self.DT = self.get_default_tariff()

        ## List of Brokers participating
        ## List of Customers
        ## List of published Tariffs

        ## You need to initialize a Broker here (change the name in the
        ## imports at the top to reflect your broker's name), and then
        ## put it in the list self.brokers.
        self.brokers   = [Broker(1)]
        self.customers = [ Customer() for i in range(100) ]
        self.tariffs   = [ self.DT ]

        self.run()
Ejemplo n.º 16
0
def build_brokers(mode, pairs, exchanges):
    brokers = []
    # Returns array of broker objects
    for e in exchanges:
        if e == 'BTCE':
            exchange = BTCE('./btce_keys.txt')
        elif e == 'GDAX':
            exchange = GDAX()
        elif e == 'POLONIEX':
            exchange = POLONIEX()
        else:
            logging.error("This exchange is not yet supported : " + e)

        broker = Broker(mode, exchange)
        brokers.append(broker)

    return brokers
Ejemplo n.º 17
0
 def __init__(self,
              database,
              storage,
              topic="regDevice",
              logs=True,
              logName="DeviceManager",
              pingPath='ping'):
     self.devices = {}
     #Initializing loger
     self.console = Logger.Logger(logName=logName,
                                  enabled=logs,
                                  printConsole=True)
     #Initializing broker
     self.broker = Broker.Broker(topic=topic, logs=True, logName=logName)
     self.regTopic = topic
     self.broker.setCallbacks()
     self.broker.start()
     self.broker.subscribeTopicWithCallback(topic, self.brokerCallback)
     self.db = database
     self.storage = storage
     self.pingPath = pingPath
     self.response = False
Ejemplo n.º 18
0
def create_brokers(mode, currencies, exchangeNames):
    # returns an array of Broker objects
    brokers = []
    for name in exchangeNames:
        if (str.upper(name) == 'COINONE'):
            xchg = CoinONE(config.COINONE_API, config.COINONE_KEY)
        elif (str.upper(name) == 'KORBIT'):
            xchg = KORBIT(config.KORBIT_API, config.KORBIT_KEY)
        elif (str.upper(name) == 'BITHUMB'):
            xchg = BITHUMB(config.BITHUMB_API, config.BITHUMB_KEY)
        elif (str.upper(name) == 'COINNEST'):
            xchg = COINNEST(config.COINNEST_API, config.COINNEST_KEY)
        elif (str.upper(name) == 'GOPAX'):
            xchg = GOPAX(config.GOPAX_API, config.GOPAX_KEY)
        else:
            print('Exchange ' + name + ' not supported!')
            broker = None
            continue
        print('%s initialized' % (xchg.name))

        broker = Broker(mode, xchg)

        if mode == 'BACKTEST':
            # 임의로 잔고를 지정해서 처리하도록 수정?
            # broker.balances = config.PAPER_BALANCE
            pass
        elif mode == 'PAPER':
            # 임의로 잔고를 지정해서 처리하도록 수정?
            pass
        elif mode == 'TRADE':
            # use real starting balances.
            broker.balances = broker.xchg.get_all_balances()
            pass

        brokers.append(broker)
    return brokers
Ejemplo n.º 19
0
 def __init__(self, show_data:bool=False):
     # Init zookeeper utils
     self.zk_utils = ZookeeperLeaderElector()
     
     # Init broker instance
     self.broker = Broker(show_data)
Ejemplo n.º 20
0
import time
import argparse  # for command line parsing


def parseCmdLineArgs():
    # parse the command line
    parser = argparse.ArgumentParser()
    # add optional arguments
    parser.add_argument("-b",
                        "--brokers",
                        type=str,
                        help='all brokers ip address')
    parser.add_argument("-i", "--ip", type=str, help='self ip address')
    # parse the args
    args = parser.parse_args()
    return args


if __name__ == '__main__':
    args = parseCmdLineArgs()
    brokerIPs = args.brokers
    ip = args.ip
    brokerIPs = brokerIPs.split('-')
    broker = Broker(brokerIPs, ip, '5556', '5557', '5558', '5559', '6000',
                    '6001', '6002', '6003')

    broker.handler()
    while True:
        pass
Ejemplo n.º 21
0
import unittest
from random import randint
import time

#initial setup
config = {
  "apiKey": "AIzaSyCeLjnaoNZ6c9BKkccXt5E0H74DGKJWXek",
  "authDomain": " testproject-cd274.firebaseapp.com",
  "databaseURL": "https://testproject-cd274.firebaseio.com",
  "storageBucket": " testproject-cd274.appspot.com"
}
#Database startup
db = Database.Database(config,logs=False)

broker = Broker.Broker(topic="topic/channel", logs = False, logName='baseBroker')
broker.setCallbacks()
broker.start()


class TestBaseClass(unittest.TestCase):

    localData = 1
    databaseData = 2
    sent_payload = 100
    received_payload = 200
    changedEnabledState = False


    #Database startup
    base = Base.Base(database = db, broker= broker, id=100, type="TST", enabled=True, devicePath="/devices/id", categoryPath="/category/", dataTopic = "/data", logs=False )
Ejemplo n.º 22
0
 def __init__(self, deviceId):
     self.deviceId = deviceId
     self.broker = Broker()
     print("Init-ed")
Ejemplo n.º 23
0
        self.assertEqual(str(self.payload2), self.received_payload2)
        self.assertEqual(str(self.payload3), self.received_payload3)
        pass


if __name__ == '__main__':
    #suite = unittest.TestLoader().loadTestsFromTestCase(TestDatabase)
    #unittest.TextTestRunner(verbosity=2).run(suite)

    def iAmACallbackFunction(topic, value):
        print('Inside callback')
        text = "I am a callback function and the passed value is " + str(
            topic) + " " + str(value)
        print(text)

    #Database startup
    broker1 = Broker.Broker(topic="topic/channel",
                            logs=True,
                            logName='Broker1')
    broker2 = Broker.Broker(topic="topic/channel",
                            logs=True,
                            logName='Broker2')
    broker1.setCallback(iAmACallbackFunction)
    broker1.start()
    broker2.start()
    broker2.publishMessage("topic/channel", "Hello from broker2")
    broker2.stop()

    while True:
        pass
Ejemplo n.º 24
0
parser = argparse.ArgumentParser()
parser.add_argument(
    "--interface",
    "-i",
    help="For configurations with controllable points, launch the 'interface'",
    action="store_true")
parser.add_argument(
    "--config",
    "-c",
    help="Path to the JSON config. If blank, revert to UDMIduino format")
parser.add_argument(
    "--broker_host",
    "-bh",
    help="MQTT broker hostname string. If blank, set to 'localhost'")
parser.add_argument("--broker_port",
                    "-bp",
                    help="MQTT broker TCP port. If blank, set to 3389")
args = parser.parse_args()

# Assemble components
broker = Broker(args.broker_host, args.broker_port)
device = UDumMI(broker, args.config)

# Execute
if args.interface:
    LOGGER.info("Launching interface...")
    Interface(device)
else:
    LOGGER.info("Interface disabled, sending random stuff...")
    device.broker.messageLoop(device.pub_topic, device.generateMessage)
Ejemplo n.º 25
0
# Make sure you run this file at the first step for every unit tests.

from Broker import Broker

if __name__ == '__main__':
	xsub_port = '5556'
	xpub_port = '5557'

	broker = Broker(xsub_port, xpub_port)
	broker.handler()
Ejemplo n.º 26
0
def parse(argv):
    opt = argv[0]
    global pub
    global broker
    global sub
    if opt == 'pub':
        if argv[1] == '-r' and argv[3] == '-P' and argv[5] == '-t':
            if pub is None:
                address = argv[2]
                port = argv[4]
                topic = argv[6]
                pub = Publisher(address, port, topic)
                if pub.register_handler():
                    return True
                else:
                    return False
            else:
                print('You already registered a publisher.')
                return False
        elif argv[1] == 'send' and argv[2] == '-t' and argv[4] == '-p':
            if pub is None:
                print('Please register a publisher firstly.')
                return False
            else:
                topic = argv[3]
                publication = ' '.join(argv[5:])
                pub.send_pub(topic, publication)
        elif argv[1] == '-d':
            if pub is None:
                print('Please register a publisher firstly.')
                return False
            else:
                topic = argv[2]
                pub.drop_topic(topic)
        elif argv[1] == 'shutoff':
            if pub is None:
                print('Please register a publisher firstly.')
                return False
            else:
                pub.shutoff()
                return True
        else:
            print('Illegal command.')
            return False

    elif opt == 'broker':
        if argv[1] == '-l':
            xsubport = argv[2]
            xpubport = argv[3]
            broker = Broker(xsubport, xpubport)
            broker.handler()
        else:
            print('Illegal command.')
            return False

    elif opt == 'sub':
        if argv[1] == '-r' and argv[3] == '-P' and argv[5] == '-t' and argv[
                7] == '-h':
            address = argv[2]
            port = argv[4]
            topic = argv[6]
            count = argv[8]
            sub = Subscriber(address, port, topic, count)
            sub.prepare()
            sub.handler()
        else:
            print('Illegal command.')
            return False
    else:
        print('Illegal command.')
        return False
Ejemplo n.º 27
0
# The main execution of the program

from Broker import Broker
from Agent import Agent
import time


# Init and set up Broker and Agent
B = Broker()
A = Agent(B)
A.status()

# Simple arbitrage opportunity tracker
while True:
    A.find_arbitrage()
    time.sleep(1)
Ejemplo n.º 28
0
 def __init__(self, ip):
     self.nodesTxt = "./nodes.txt"
     self.broker = Broker(ip)
     self.createFile()
     self.loadFromFile()
Ejemplo n.º 29
0
import time

#initial setup
config = {
  "apiKey": "AIzaSyCeLjnaoNZ6c9BKkccXt5E0H74DGKJWXek",
  "authDomain": "testproject-cd274.firebaseapp.com",
  "databaseURL": "https://testproject-cd274.firebaseio.com",
  "storageBucket": "testproject-cd274.appspot.com"
}
#Database startup
db = Database.Database(config,logs=False)

#storage startup
store = Storage.Storage(config, logs=False)

broker = Broker.Broker(topic="topic/channel", logs = False, logName='SensorBroker')
broker.setCallbacks()
broker.start()


class TestSensorClass(unittest.TestCase):

    localData = 1
    databaseData = 2
    sent_payload = 100
    received_payload = 200
    changedEnabledState = False


    #Database startup
    sensor = Sensor.Sensor(database = db, storage = store, broker= broker, id=200, type="TST", enabled=True, devicePath="/devices/id", logs=False, filterSamples=3, datasetLength = 3, skipSamples=2)
Ejemplo n.º 30
0
def parseCmdLineArgs():
    # parse the command line
    parser = argparse.ArgumentParser()
    # add optional arguments
    parser.add_argument("-b",
                        "--brokers",
                        type=str,
                        help='all brokers ip address')
    parser.add_argument("-i", "--ip", type=str, help='self ip address')
    parser.add_argument('-z', '--zk', type=str, help='ZK address')
    # parse the args
    args = parser.parse_args()
    return args


if __name__ == '__main__':
    args = parseCmdLineArgs()
    brokerIPs = args.brokers
    ip = args.ip
    brokerIPs = brokerIPs.split('-')
    zk_address = args.zk
    print('ZooKeeper Address: ' + zk_address)
    #broker = Broker(zk_server, my_address, '5556', '5557')
    for b_ip in brokerIPs:
        broker = Broker(zk_address, b_ip, '5556', '5557')

#broker.handler()
    while True:
        pass