예제 #1
0
	def __init__(self,interface,ssid,key_mgmt,pswd):
		self.log=Log()
		self._interface=interface
		self._ssid=ssid
		self._key_mgmt=key_mgmt
		self._pswd=pswd
		self._wpa_supplicant='/etc/wpa_supplicant/wpa_supplicant.conf'
예제 #2
0
	def __init__(self,interface,ssid,key_mgmt,pswd):
		self.log=Log()
		self._interface=interface
		self._ssid=ssid
		self._key_mgmt=key_mgmt
		self._pswd=pswd
		self._hostapd='/etc/hostapd/hostapd.conf'
		self._dnsmasq='/etc/dnsmasq.conf'
예제 #3
0
	def __init__(self,tid,name,lock,obj):
		threading.Thread.__init__(self)
		self._id=str(tid)
		self._name=name
		self._lock=lock
		self._obj=obj
		self.log=Log()
		self.log.print("Creating Thread Named: "+self._name+"; ID: "+self._id,"OK")
예제 #4
0
 def __init__(self, name, version, host, port, username, password):
     self._name = name
     self._version = version
     self._host = host
     self._port = port
     self._username = username
     self._password = password
     self.log = Log()
     self._CLEAN_SESSION = True
예제 #5
0
	def __init__(self):
		self.database = Database()
		self._name=CONFIG['app_name']
		self._version=CONFIG['app_version']
		self._broker_host=CONFIG['broker_host']
		self._broker_port=CONFIG['broker_port']
		self._broker_username=CONFIG['broker_username']
		self._broker_password=CONFIG['broker_password']
		self._lock=threading.Lock()
		self.log=Log()
예제 #6
0
class Publisher():
    def __init__(self, name, version, host, port, username, password):
        self._name = name
        self._version = version
        self._host = host
        self._port = port
        self._username = username
        self._password = password
        self.log = Log()
        self._CLEAN_SESSION = True

    def publish(self, topic, data, q, r, debug=True):
        try:
            client = mqtt.Client("global_publisher",
                                 clean_session=self._CLEAN_SESSION)
            client.on_connect = self.on_connect
            client.on_disconnect = self.on_disconnect
            client.on_publish = self.on_publish
            if (self._username != None):
                client.username_pw_set(username=self._username,
                                       password=self._password)
            client.connect(self._host,
                           port=self._port,
                           keepalive=60,
                           bind_address="")
            topic = self._version + "/" + self._name + "/" + topic + "/response"
            client.loop_start()
            rc = client.publish(topic,
                                payload=json.dumps(data),
                                qos=q,
                                retain=r)
            client.loop_stop()
            client.disconnect()
            if (debug):
                if rc[0] == 0:
                    self.log.print(
                        "Global publisher on topic: " + topic + " QoS:" +
                        str(q) + " Retain:" + str(r) + " RC:" + str(rc), "OK")
                else:
                    self.log.print(
                        "Global publish unable to publish on topic: " + topic,
                        str(r))
        except Exception as e:
            self.log.print("Global Publisher error: ", format(e))

    def on_connect(self, client, userdata, flags, rc):
        self.log.print(
            client.name + ":on_connect callback result, Flags: " + str(flags),
            str(rc))

    def on_disconnect(self):
        pass

    def on_publish(self, client, userdata, mid):
        self.log.print("publish response, MID: " + mid + "...", "OK")
예제 #7
0
 def __init__(self, config: IbConfig) -> None:
     self._log = Log.create(Log.path(self.log_file))
     self._config = config
     ClientBase.__init__(self,
                         self._log.get_logger('coolqclient'),
                         kWorkerTypeConsole,
                         cmd_redis_ip=self._config.cmd_redis_ip,
                         cmd_redis_port=self._config.cmd_redis_port)
     self._check_task: asyncio.Task = None
     self._error_report_times = 0
     self.add_dispatcher(ConsoleCommandResponse,
                         self.on_console_cmd_response)
예제 #8
0
 def __init__(self, config: IbConfig) -> None:
     self._log = Log.create(Log.path(self.log_file))
     self._config: IbConfig = config
     ClientBase.__init__(self,
                         self._log.get_logger('consoleclient'),
                         kWorkerTypeConsole,
                         cmd_redis_ip=self._config.cmd_redis_ip,
                         cmd_redis_port=self._config.cmd_redis_port)
     self._cmd_task: asyncio.Task = None
     self._prompt_session: PromptSession = PromptSession(
         completer=completer, style=style)
     self.add_dispatcher(ConsoleCommandResponse,
                         self.on_console_cmd_response)
예제 #9
0
 def __init__(self, config: IbConfig) -> None:
     self._config: IbConfig = config
     self._log = Log.create(Log.path(self.log_file))
     self._logger = self._log.get_logger('server')
     self._clients: Dict[str, WorkerItem] = {}
     self._redis: RedisHandler = None
     self._clients: Dict[str, WorkerItem] = {}
     self._available_channel_id: int = 0
     self._sweep_task: asyncio.Task = None
     self._console_handler: ConsoleHandler = None
     self._transporter = Transporter()
     self._client_id = config.client_id
     self._ib_manager: IbManager = IbManager(
         self._config.ib_ip, self._config.ib_port, self._client_id)
 def __init__(self, api, name, version, host, port, username, password,
              lock):
     self._api = api
     self._name = name
     self._version = version
     self._host = host
     self._port = port
     self._username = username
     self._password = password
     self._CLEAN_SESSION = True
     self._loop_flag = 0
     self._lock = lock
     self.log = Log()
     self.mapper = Mapper(name, version, api)
예제 #11
0
 def __init__(self, ip: str, port: int, client_id: int):
     self._ib = IB()
     self._ib_ip: str = ip
     self._ib_port: int = port
     self._client_id: int = client_id
     self._subscribed_mkt_contracts: List[str] = []
     self._subscribed_mkt_depth_contracts: List[str] = []
     self._log: Log = Log.create(Log.path(self.log_file))
     self._logger = self._log.get_logger('ibmanager')
     self._recorder: Recorder = Recorder(self._log)
     self._market_recorder: MarketRecorder = MarketRecorder(
         self._ib, self._recorder)
     self._account_recorder: AccountRecorder = AccountRecorder(
         self._ib, self._recorder)
     self._keep_connection_task: asyncio.Task = None
     self._ib.connectedEvent += self.on_ib_connected
     self._ib.disconnectedEvent += self.on_ib_disconnected
     self._reconnect_flag: bool = False
예제 #12
0
class Database():
    def __init__(self):
        self.log = Log()

    def test(self):
        db = pymysql.connect(CONFIG['mysql_host'], CONFIG['mysql_username'],
                             CONFIG['mysql_password'], CONFIG['mysql_db'])
        cursor = db.cursor()
        cursor.execute("SELECT VERSION()")
        # Fetch a single row using fetchone() method.
        data = cursor.fetchone()
        print("Database version : %s " % data)
        # disconnect from server
        db.close()

    def get_user(self, token):
        db = pymysql.connect(CONFIG['mysql_host'], CONFIG['mysql_username'],
                             CONFIG['mysql_password'], CONFIG['mysql_db'])
        cursor = db.cursor()
        cursor.execute(
            "SELECT users.id,users.phone FROM users LEFT JOIN tracker_tokens on tracker_tokens.user_id = users.id where tracker_tokens.token = '%s'"
            % token)
        data = cursor.fetchone()
        db.close()
        return data

    def post_track(self, id, lat, lng):
        try:
            db = pymysql.connect(CONFIG['mysql_host'],
                                 CONFIG['mysql_username'],
                                 CONFIG['mysql_password'], CONFIG['mysql_db'])
            cursor = db.cursor()
            datetime = strftime("%Y-%m-%d %H:%M:%S", localtime())
            cursor.execute(
                "INSERT INTO `location_histories` (`id`,`user_id`,`lat`,`lng`,`timestamp`,`created_at`, `updated_at`) VALUES (NULL, %s, %s, %s, current_timestamp(),NULL,NULL);",
                (str(id), lat, lng))
            db.commit()
        except Exception as e:
            self.log.print("Error occured in insert: ", format(e))
        return 0
예제 #13
0
 def __init__(self, server: BaseServer, redis: RedisHandler,
              log: Log) -> None:
     self._server: BaseServer = server
     self._ib_manager: IbManager = server.ib_manager()
     self._trade_manager: NormalTradeManager = NormalTradeManager(
         self._ib_manager)
     self._mock_manager: MockTradeManager = MockTradeManager(
         self._ib_manager._recorder)
     self._redis: RedisHandler = redis
     self._logger = log.get_logger('consolehandler')
     self._command_handler: CommandHandler = CommandHandler()
     self._contracts: Dict[int, Contract] = {}
     self._trader: RandomTrader = RandomTrader(self._ib_manager._ib,
                                               self._ib_manager)
     self._server.add_dispatcher(ConsoleCommandRequest, self.on_console_cmd)
     self.add_handler('find_symbols', self._ib_manager.find_symbols)
     self.add_handler(
         'subscribe_market',
         partial(self.contract_handler, self._ib_manager.sub_market))
     self.add_handler(
         'unsubscribe_market',
         partial(self.contract_handler, self._ib_manager.unsub_market))
     self.add_handler(
         'subscribe_market_depth',
         partial(self.contract_handler, self._ib_manager.sub_market_depth))
     self.add_handler(
         'unsubscribe_market_depth',
         partial(self.contract_handler,
                 self._ib_manager.unsub_market_depth))
     self.add_handler(
         'order',
         partial(self.contract_handler, self._ib_manager.place_order))
     self.add_handler('cancel_order', self._ib_manager.cancel_order)
     self.add_handler('contract', self.make_contract)
     self.add_handler('orders', self._ib_manager.orders)
     self.add_handler('portfolio', self._ib_manager.portfolio)
     self.add_handler('tstart',
                      partial(self.contract_handler, self.start_trader))
     self.add_handler('tstop', self.stop_trader)
     self.add_handler('cash', self._ib_manager._account_recorder.cash)
     self.add_handler('list_strategies', self.list_strategies)
     self.add_handler('list_running_strategies',
                      self._trade_manager.list_running_strategies)
     self.add_handler(
         'start_strategy',
         partial(self.contract_handler, self._trade_manager.start_strategy))
     self.add_handler('stop_strategy', self._trade_manager.stop_strategy)
     self.add_handler('run_mock_strategy', self._mock_manager.test_strategy)
     self.add_handler('tod', self._trade_manager.place_order)
     self.add_handler('tcod', self._trade_manager.cancel_order)
예제 #14
0
class App():
	def __init__(self):
		self.database = Database()
		self._name=CONFIG['app_name']
		self._version=CONFIG['app_version']
		self._broker_host=CONFIG['broker_host']
		self._broker_port=CONFIG['broker_port']
		self._broker_username=CONFIG['broker_username']
		self._broker_password=CONFIG['broker_password']
		self._lock=threading.Lock()
		self.log=Log()

	def start(self):
		try:
			api=Api(self._name,self._version,self._broker_host,self._broker_port,self._broker_username,self._broker_password)
			self.log.print("Listening to all APIs","OK")
			sub=Subscriber(api,self._name,self._version,self._broker_host,self._broker_port,self._broker_username,self._broker_password,self._lock)
			sub_thread = Threads(1, "Subscriber Thread",self._lock,sub)
			sub_thread.start()
			sub_thread.join()
		except Exception as e:
			self.log.print("Exception in the main thread: ",format(e))
		# self.database.get_user('71f7bb0c6db392201e3c')
예제 #15
0
class Api():
    def __init__(self, name, version, host, port, username, password):
        self._name = name
        self._version = version
        self.publish = Publisher(name, version, host, port, username, password)
        self.log = Log()
        self.db = Database()

    def track(self, topic, payload):
        dat = {}
        dat1 = {}
        topic1 = ''
        try:
            temp = json.loads(payload)
            if (temp['key'] == "" or temp['data']['lat'] == ""
                    or temp['data']['lng'] == ""):
                self.log.print("Bad request...", "OK")
                dat['status'] = 'error'
                dat['status_code'] = 400
                dat['message'] = 'Required Parameters empty'
                dat['data'] = {}
                dat['key'] = 'NULL'
            else:
                result = self.db.get_user(temp['key'])
                if not result:
                    self.log.print("Unauthorized request...", "OK")
                    dat['status'] = 'error'
                    dat['status_code'] = 401
                    dat['message'] = 'Unauthorized: invalid key given'
                    dat['data'] = {}
                    dat['key'] = 'NULL'
                else:
                    phone = result[1]
                    self.db.post_track(result[0], temp['data']['lat'],
                                       temp['data']['lng'])
                    dat1['data'] = {
                        'lat': temp['data']['lat'],
                        'lng': temp['data']['lng']
                    }
                    topic1 = phone
                    dat['status'] = 'success'
                    dat['status_code'] = 200
                    dat['message'] = 'Co-ordinates successfully recorded'
                    dat['data'] = {}
        except Exception as e:
            self.log.print("Error parsing request json", format(e))
            dat['status'] = 'error'
            dat['status_code'] = 400
            dat['message'] = 'Bad Request: error parsing json'
            dat['data'] = {}
            dat['key'] = 'NULL'
        self.publish.publish(topic1, dat1, 0, True, False)
        self.publish.publish(topic, dat, 0, False, False)
        return 0

    def qos(self):
        return 1
예제 #16
0
class Hotspot():
	def __init__(self,interface,ssid,key_mgmt,pswd):
		self.log=Log()
		self._interface=interface
		self._ssid=ssid
		self._key_mgmt=key_mgmt
		self._pswd=pswd
		self._hostapd='/etc/hostapd/hostapd.conf'
		self._dnsmasq='/etc/dnsmasq.conf'

	def create(self):
		try:
			self.log.print("Creating Hotspot: "+self._ssid+"...","OK")

			return True
		except Exception as e:
			return False

	def destroy(self):
		try:
			self.log.print("Destorying Hotspot: "+self._ssid+"...","OK")
			return True
		except Exception as e:
			return False
예제 #17
0
class Mapper():
    def __init__(self, name, version, api):
        self._api = api
        self._name = name
        self._version = version
        self.log = Log()

    def map(self, topic, payload):
        try:
            _a = self.topic_parser(topic)
            _f = self.route_parser(ROUTES[_a])
            return getattr(self._api, _f)(_a, payload)
        except Exception as e:
            self.log.print("Mapper:Unauthorised function call", format(e))
            return 0

    def topic_parser(self, topic):
        try:
            c = 0
            top = topic.split('/')
            subtopic = ''
            for t in top:
                if (t == self._version or t == self._name or t == 'request'):
                    c = c + 1
                else:
                    subtopic = subtopic + '/' + t
            if (c == 3):
                return subtopic[1:]
            return None
        except Exception as e:
            self.log.print("Mapper.topic_parser() error occured: ", format(e))
            return None

    def route_parser(self, route):
        try:
            subroute = route.split('@')
            return subroute[0]
        except Exception as e:
            self.log.print("Mapper.route_parser() error occured: ", format(e))
            return None
예제 #18
0
	def __init__(self):
		self.log=Log()
		self.log.create_log()
		self.log.print("Log file created...","OK")
class Subscriber():
    def __init__(self, api, name, version, host, port, username, password,
                 lock):
        self._api = api
        self._name = name
        self._version = version
        self._host = host
        self._port = port
        self._username = username
        self._password = password
        self._CLEAN_SESSION = True
        self._loop_flag = 0
        self._lock = lock
        self.log = Log()
        self.mapper = Mapper(name, version, api)

    def start(self):
        client = mqtt.Client("global_subscriber",
                             clean_session=self._CLEAN_SESSION)
        client.on_connect = self.on_connect
        client.on_disconnect = self.on_disconnect
        client.on_subscribe = self.on_subscribe
        client.on_unsubscribe = self.on_unsubscribe
        client.on_message = self.on_message
        if (self._username != None):
            client.username_pw_set(username=self._username,
                                   password=self._password)
        client.connect(self._host,
                       port=self._port,
                       keepalive=60,
                       bind_address="")
        client.loop_start()
        topic = self._version + "/" + self._name + "/#"
        r = client.subscribe(topic, self._api.qos())
        if r[0] == 0:
            self.log.print("Global Listener on topic: " + topic, "OK")
        else:
            self.log.print(
                "Global Listener unable to subscribe to topic: " + topic,
                str(r))
        while (self._loop_flag == 0):
            time.sleep(0.01)
        client.loop_stop()
        client.disconnect()
        self.log.print("Destroying Subscriber Thread", "OK")

    def on_connect(self, client, userdata, flags, rc):
        self.log.print(
            client.name + ":on_connect callback result, Flags: " + str(flags),
            str(rc))

    def on_disconnect(self):
        pass

    def on_subscribe(self, client, userdata, mid, granted_qos):
        self.log.print(
            client.name + ":on_subscribe callback result, MID: " + str(mid),
            str(rc))

    def on_unsubscribe(self, client, userdata, mid):
        pass

    def on_message(self, client, userdata, message):
        if ('response' in str(message.topic)):
            return 0
        self.log.print("on_message callback, acquiring lock", "OK")
        self._lock.acquire()
        try:
            self.log.print(
                "incoming request on topic:" + str(message.topic) + " QoS:" +
                str(message.qos) + " Retain Flag:" + str(message.retain), "OK")
            self._loop_flag = self.mapper.map(str(message.topic),
                                              message.payload.decode())
        except Exception as e:
            self.log.print("on_message callback error", format(e))
            self._loop_flag = 0
        self.log.print("exiting on_message callback, releasing lock", "OK")
        self._lock.release()
예제 #20
0
 def __init__(self, name, version, host, port, username, password):
     self._name = name
     self._version = version
     self.publish = Publisher(name, version, host, port, username, password)
     self.log = Log()
     self.db = Database()
예제 #21
0
class Wifi():
	def __init__(self,interface,ssid,key_mgmt,pswd):
		self.log=Log()
		self._interface=interface
		self._ssid=ssid
		self._key_mgmt=key_mgmt
		self._pswd=pswd
		self._wpa_supplicant='/etc/wpa_supplicant/wpa_supplicant.conf'

	def connect(self):
		try:
			data=''
			self.log.print("Connecting to "+self._ssid+"...","OK")
			if(self._key_mgmt=='TRUE'):
				dat = subprocess.Popen(['wpa_passphrase',self._ssid,self._pswd], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
				for line in dat.stdout:
					line=line.decode()
					data=data+line
				#data = 'network={\nssid="'+self._ssid+'"\npsk="'+self._pswd+'"\n}\n'
			else:
				data = 'network={\nssid="'+self._ssid+'"\nkey_mgmt=NONE\n}\n'
			if(self.write_config(data)==False):
				self.log.print("Unable to connect to wifi: "+self._ssid+"...","OK")
				return False
			ps = subprocess.Popen(['wpa_supplicant','-q','-B','-i',self._interface,'-D','nl80211,wext','-c',self._wpa_supplicant], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
			time.sleep(15)
			self.log.print("Connection to wifi: "+self._ssid+" successful...","OK")
			return True
		except subprocess.CalledProcessError as e:
			self.log.print("Error Initiating a new connection with: "+self._ssid+"...",format(e))
			return False
		except Exception as e:
			self.log.print("Unable to connect...",e)
			return False

	def disconnect(self):
		try:
			self.log.print("Disconnecting from the current wifi network...","OK")
			ps = subprocess.Popen(['killall','wpa_supplicant'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
			time.sleep(5)
			return True
		except Exception as e:
			self.log.print("Unable to disconnect...",e)
			return False

	def status(self):
		try:
			flag=False
			self.log.print("Checking for wifi status...","OK")
			ps = subprocess.Popen(['iw',self._interface,'link'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
			for line in ps.stdout:
				row = line.decode()
				row = row.replace('\t','')
				row = row.replace('\n','')
				row = row.split(' ')
				if(row[0]=='Not'):
					self.log.print(self._interface+" not connected to any wifi",row[0]+" "+row[1])
					return -1
				if(row[0]=='Connected'):
					flag=True
					continue
				if(flag):
					flag=False
					ssid=''
					for r in row:
						if(r=='SSID:'):
							continue
						ssid=ssid+' '+r
					if(ssid[1:]==self._ssid):
						self.log.print(self._interface+" connected to...",ssid[1:])
						return 1
					else:
						self.log.print(self._interface+" connected to...",ssid[1:])
						return 0
			#output = subprocess.check_output(('grep', self._ssid), stdin=ps.stdout)
			#self.log.print("Wifi SSID: "+self._ssid+" found...",(output.decode()).replace('\n',''))
			#return True
		except subprocess.CalledProcessError as e:
			self.log.print(self._interface+" not connected to: "+self._ssid+"...",format(e))
			return 0
		except Exception as e:
			self.log.print(self._interface+" not connected to: "+self._ssid+"...",e)
			return 0

	def scan(self):
		try:
			self.log.print("Checking the availabilitly of "+self._ssid+"...","OK")
			ps = subprocess.Popen(['iw',self._interface,'scan'],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
			for line in ps.stdout:
				#print(line.decode())
				if('command failed: Network is down (-100)' in line.decode()):
					self.log.print("Wireless Interface "+self._interface+" down...","OK")
					pps = subprocess.Popen(['ip','link','set',self._interface,'up'],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
					time.sleep(5)
					self.log.print("Enabling Wireless Interface "+self._interface+" up...","OK")
					return False
				else:
					break
			output = subprocess.check_output(('grep', 'SSID'), stdin=ps.stdout)
			for line in (output.decode()).split('\n'):
				row = line.replace('\t','')
				row = row.split(': ')
				if(row[1]==self._ssid):
					self.log.print("ESSID "+self._ssid+" found...","OK")
					return True
			return False

		except subprocess.CalledProcessError as e:
			self.log.print("Unable to find: "+self._ssid+"...",format(e))
			return False
		except Exception as e:
			self.log.print("Unable to find: "+self._ssid+"...",format(e))
			return False

	def write_config(self,data):
		try:
			buf=''
			if(isfile(self._wpa_supplicant)):
				with open(self._wpa_supplicant,'r') as cfile:
					for fline in cfile:
						if('network' in fline):
							break
						buf=buf+fline
				with open(self._wpa_supplicant,'w') as conf:
					conf.write(buf+data)
				return True
			else:
				self.log.print("Unable to find: "+self._wpa_supplicant+"...",e)
				return False
			return True
		except Exception as e:
			self.log.print("Unable to write: "+self._wpa_supplicant+"...",format(e))
			return False
예제 #22
0
 def __init__(self, log: Log) -> None:
     self._logger = log.get_logger('recorder')
     self._date = str(datetime.date.today())
     self._timer_task = asyncio.create_task(self._timer())
     self._file_items: Dict[str, FileItem] = {}
예제 #23
0
 def __init__(self, name, version, api):
     self._api = api
     self._name = name
     self._version = version
     self.log = Log()
예제 #24
0
 def __init__(self):
     self.log = Log()
예제 #25
0
class Boot():
	def __init__(self):
		self.log=Log()
		self.log.create_log()
		self.log.print("Log file created...","OK")

	def start(self):
		self.log.print("validating wifi credentials...","OK")
		while True:
			if(self.manage_wifi()):
				break
		self.log.print("Configuration complete...","OK")
		self.log.print("Starting new instance of the app...","OK")
		app=App(CONFIG['app_name'],CONFIG['app_key'],CONFIG['app_version'])
		app.start()

	def manage_wifi(self):
		wifi=Wifi(CONFIG['interface'],CONFIG['wifi_ssid'],CONFIG['wifi_key_mgmt'],CONFIG['wifi_password'])
		status=wifi.status()
		if(status>=0):
			if(status==1):
				return True
			if(status==0):
				if(wifi.scan()):
					wifi.disconnect()
					wifi.connect()
					return False
				else:
					self.log.print("Creating a hotstop to configure the device...","OK")
					hotspot=Hotspot(CONFIG['interface'],CONFIG['hotspot_ssid'],CONFIG['hotspot_key_mgmt'],CONFIG['hotspot_password'])
					if(hotspot.create()):
						return True
					else:
						self.log.print("Unable to create the hotspot...","OK")
						return False
		else:
			if(wifi.scan()):
				wifi.disconnect()
				wifi.connect()
				return False
			else:
				self.log.print("Creating a hotstop to configure the device...","OK")
				hotspot=Hotspot(CONFIG['interface'],CONFIG['hotspot_ssid'],CONFIG['hotspot_key_mgmt'],CONFIG['hotspot_password'])
				if(hotspot.create()):
					return True
				else:
					self.log.print("Unable to create the hotspot...","OK")
					return False
예제 #26
0
async def test():
    recorder = Recorder(Log.create(Log.path('test')))
    manager = MockTradeManager(recorder)
    strategy = MeanStrategy(0, manager)
    manager.test_strategy(strategy, 'app/data/XAGUSD_5_2019-10-02.csv',
                          'XAGUSD_1002_random')
예제 #27
0
async def test():
    logger = Log.create(Log.path('test')).get_logger('test')
    client = ClientBase(logger, 1)
    await client.initialize()