def test_investpy_currencies(): retrieve_currency_crosses() investpy.get_currency_crosses() investpy.get_currency_crosses_list() investpy.get_currency_crosses_dict() params = [{ 'currency_cross': 'EUR/USD', 'from_date': '08/07/2019', 'to_date': '08/08/2019', 'as_json': True, }, { 'currency_cross': 'EUR/USD', 'from_date': '08/07/2019', 'to_date': '08/08/2019', 'as_json': False, }] for param in params: investpy.get_currency_cross_recent_data( currency_cross=param['currency_cross'], as_json=param['as_json']) investpy.get_currency_cross_historical_data( currency_cross=param['currency_cross'], from_date=param['from_date'], to_date=param['to_date'], as_json=param['as_json'])
def get_current_value_by_type(self, stype): total = 0 # Get all different tickers in this type sql_msg = self.db.transactions.select_names_by_type(stype) names = self.db.query(sql_msg) for name in names: name = name[0] quantity = get_quantity_remaining(self.db, stype, name) sql_msg = self.db.stocks.get_method(name) method = self.db.query(sql_msg) method = method[0][0] sql_msg = self.db.stocks.get_currency(name) currency = self.db.query(sql_msg) currency = currency[0][0] exchange_rate = 1 if currency != 'EUR': exchange_rate = investpy.get_currency_cross_recent_data( currency_cross='{}/EUR'.format(currency)).iloc[-1]['Close'] if method == "investpy": sql_msg = self.db.stocks.get_full_name(name) full_name = self.db.query(sql_msg) full_name = full_name[0][0] sql_msg = self.db.stocks.get_country(name) country = self.db.query(sql_msg) country = country[0][0] current_price = exchange_rate * get_price_investpy( full_name, name, stype, country) elif method == "yfinance": current_price = exchange_rate * get_price_yfinance(name) else: raise ValueError("Incorrect method!") total += float(quantity) * float(current_price) return total
def get_currency_price(ticker): if ticker in ["EUR", "USD"]: return investpy.get_currency_cross_recent_data( currency_cross='{}/ISK'.format(ticker))['Close'][-1] elif ticker in ["BTC"]: from_date = datetime.datetime.now().strftime("%d/%m/%Y") to_date = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%d/%m/%Y") btc_usd_rate = investpy.get_crypto_historical_data( crypto='bitcoin', from_date=from_date, to_date=to_date)['Close'][-1] return get_currency_price("USD") * btc_usd_rate
def test_currency_crosses_errors(): """ This function raises errors on currency cross retrieval functions """ try: retrieve_currency_crosses(test_mode=None) except: pass params = [{ 'base': ['error'], 'second': None }, { 'base': None, 'second': ['error'] }, { 'base': 'error', 'second': None }, { 'base': 'EUR', 'second': 'error' }, { 'base': None, 'second': 'error' }, { 'base': 'EUR', 'second': 'EUR', }] for param in params: try: investpy.get_currency_crosses(base=param['base'], second=param['second']) except: pass try: investpy.get_currency_crosses_list(base=param['base'], second=param['second']) except: pass params = [ { 'base': ['error'], 'second': None, 'columns': None, 'as_json': False }, { 'base': None, 'second': ['error'], 'columns': None, 'as_json': False }, { 'base': None, 'second': None, 'columns': None, 'as_json': 'error' }, { 'base': None, 'second': None, 'columns': 'error', 'as_json': False }, { 'base': None, 'second': None, 'columns': ['error'], 'as_json': False }, { 'base': 'error', 'second': None, 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'error', 'columns': None, 'as_json': False }, { 'base': None, 'second': 'error', 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'Eur', 'columns': None, 'as_json': False }, ] for param in params: try: investpy.get_currency_crosses_dict(base=param['base'], second=param['second'], columns=param['columns'], as_json=param['as_json']) except: pass params = [ { 'currency_cross': None, 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': ['error'], 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'as_json': 'error', 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'as_json': False, 'order': 'error', 'debug': False }, { 'currency_cross': 'EUR/USD', 'as_json': False, 'order': 'ascending', 'debug': 'error' }, { 'currency_cross': 'error/error', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'as_json': False, 'order': 'ascending', 'debug': False }, ] for param in params: try: investpy.get_currency_cross_recent_data( currency_cross=param['currency_cross'], as_json=param['as_json'], order=param['order'], debug=param['debug']) except: pass params = [ { 'currency_cross': None, 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': ['error'], 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': 'error', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': 'error', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2017', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': 'error', 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'error', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': 'error' }, { 'currency_cross': 'error/error', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': False }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'ascending', 'debug': False }, ] for param in params: try: investpy.get_currency_cross_historical_data( currency_cross=param['currency_cross'], from_date=param['from_date'], to_date=param['to_date'], as_json=param['as_json'], order=param['order'], debug=param['debug']) except: pass params = [ { 'by': None, 'value': 'EUR', }, { 'by': ['error'], 'value': 'EUR', }, { 'by': 'error', 'value': 'EUR', }, { 'by': 'base', 'value': None, }, { 'by': 'base', 'value': ['error'], }, { 'by': 'base', 'value': 'error', }, ] for param in params: try: investpy.search_currency_crosses(by=param['by'], value=param['value']) except: pass
def InvestingCurrency(_id): df = investpy.get_currency_cross_recent_data( currency_cross=f'{_id}/CNY') if not df.empty: return df.iloc[-1].Close
def test_investpy_currency_crosses(): """ This function checks that currency cross data retrieval functions listed in investpy work properly. """ params = [ { 'base': None, 'second': None, }, { 'base': 'EUR', 'second': None, }, { 'base': None, 'second': 'EUR', }, { 'base': 'EUR', 'second': 'USD', }, ] for param in params: investpy.get_currency_crosses(base=param['base'], second=param['second']) investpy.get_currency_crosses_list(base=param['base'], second=param['second']) params = [ { 'base': None, 'second': None, 'columns': None, 'as_json': True }, { 'base': None, 'second': None, 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': None, 'columns': None, 'as_json': True }, { 'base': 'EUR', 'second': None, 'columns': None, 'as_json': False }, { 'base': None, 'second': 'USD', 'columns': None, 'as_json': True }, { 'base': None, 'second': 'USD', 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'USD', 'columns': None, 'as_json': True }, { 'base': 'EUR', 'second': 'USD', 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'USD', 'columns': ['name', 'full_name'], 'as_json': False }, ] for param in params: investpy.get_currency_crosses_dict(base=param['base'], second=param['second'], columns=param['columns'], as_json=param['as_json']) investpy.get_available_currencies() params = [ { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': True, 'order': 'ascending', }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/1990', 'to_date': '01/01/2019', 'as_json': False, 'order': 'descending', }, { 'currency_cross': 'XAG/USD', 'from_date': '01/01/2010', 'to_date': '01/01/2015', 'as_json': False, 'order': 'descending', }, { 'currency_cross': 'XAU/USD', 'from_date': '01/01/2010', 'to_date': '01/01/2015', 'as_json': False, 'order': 'descending', } ] for param in params: investpy.get_currency_cross_recent_data(currency_cross=param['currency_cross'], as_json=param['as_json'], order=param['order'], interval='Daily') investpy.get_currency_cross_historical_data(currency_cross=param['currency_cross'], from_date=param['from_date'], to_date=param['to_date'], as_json=param['as_json'], order=param['order'], interval='Daily') params = [ { 'currency_cross': 'EUR/USD', 'as_json': False }, { 'currency_cross': 'EUR/USD', 'as_json': True }, { 'currency_cross': 'XAU/USD', 'as_json': True }, { 'currency_cross': 'XAG/USD', 'as_json': True } ] for param in params: investpy.get_currency_cross_information(currency_cross=param['currency_cross'], as_json=param['as_json']) params = [ { 'currency': 'try', 'as_json': False, 'n_results': 100 }, { 'currency': 'amd', 'as_json': True, 'n_results': 100 } ] for param in params: investpy.get_currency_crosses_overview(currency=param['currency'], as_json=param['as_json'], n_results=param['n_results']) investpy.search_currency_crosses(by='base', value='EUR')
def test_investpy_currency_crosses(): """ This function checks that currency cross data retrieval functions listed in investpy work properly. """ params = [ { 'base': None, 'second': None, }, { 'base': 'EUR', 'second': None, }, { 'base': None, 'second': 'EUR', }, { 'base': 'EUR', 'second': 'USD', }, ] for param in params: investpy.get_currency_crosses(base=param['base'], second=param['second']) investpy.get_currency_crosses_list(base=param['base'], second=param['second']) params = [ { 'base': None, 'second': None, 'columns': None, 'as_json': True }, { 'base': None, 'second': None, 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': None, 'columns': None, 'as_json': True }, { 'base': 'EUR', 'second': None, 'columns': None, 'as_json': False }, { 'base': None, 'second': 'USD', 'columns': None, 'as_json': True }, { 'base': None, 'second': 'USD', 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'USD', 'columns': None, 'as_json': True }, { 'base': 'EUR', 'second': 'USD', 'columns': None, 'as_json': False }, { 'base': 'EUR', 'second': 'USD', 'columns': ['name', 'full_name'], 'as_json': False }, ] for param in params: investpy.get_currency_crosses_dict(base=param['base'], second=param['second'], columns=param['columns'], as_json=param['as_json']) investpy.get_available_currencies() params = [ { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': True, 'order': 'ascending', 'debug': True }, { 'currency_cross': 'EUR/USD', 'from_date': '01/01/2018', 'to_date': '01/01/2019', 'as_json': False, 'order': 'descending', 'debug': False }, ] for param in params: investpy.get_currency_cross_recent_data( currency_cross=param['currency_cross'], as_json=param['as_json'], order=param['order'], debug=param['debug']) investpy.get_currency_cross_historical_data( currency_cross=param['currency_cross'], from_date=param['from_date'], to_date=param['to_date'], as_json=param['as_json'], order=param['order'], debug=param['debug']) investpy.search_currency_crosses(by='base', value='EUR')
writer.save() processed_data = output.getvalue() return processed_data def get_table_download_link(df): val = to_excel(df) b64 = base64.b64encode(val) return f'<a href="data:application/octet-stream;base64,{b64.decode()}" download="dati_mercato.xlsx">Download csv file</a>' st.title("Come sono andati i mercati questa settimana e nell' ultimo mese?") st.write('Una volta lanciato questo programma viene in automatico generato un excel con i dati aggiornati dei mercati.') ## Dati valutarii eur_usd = investpy.get_currency_cross_recent_data(currency_cross='EUR/USD') eur_gbp = investpy.get_currency_cross_recent_data(currency_cross='EUR/GBP') eur_yen = investpy.get_currency_cross_recent_data(currency_cross='EUR/JPY') ## Dati dello Spread da Borsa Italiana url = 'https://borsaitaliana.teleborsa.it/pages/spread/item.aspx' def spread(url): try: page = urlopen(url) except: print("Error opening the URL") soup = BeautifulSoup(page, 'html.parser') content = soup.find('span',{'class':'t-text -size-lg -black-warm-60 text-bold'}) spread = content.contents s = pd.DataFrame(spread)