def get(self): s = Stock() _d = s.iterDump() for line in _d: self.write(str(line)) self.write("\n") s.Close()
def Confirmar(self, key, window_id): # Gera movimento de Stock (entra no armazem por contrapartida de fornecedores) self.kargs = get_model_record(model=self, key=key) self.kargs['estado'] = 'Confirmado' self.kargs['numero'] = base_models.Sequence().get_sequence('entrada') periodo = None from periodo import Periodo periodos = Periodo().get() for p in periodos: lista_datas = generate_dates(start_date=p['data_inicial'], end_date=p['data_final']) if str(format_date(self.kargs['data'])) in lista_datas: periodo = p['id'] from armazem import Armazem armazem_fornecedor = Armazem(where="tipo='fornecedor'").get()[0]['id'] from stock import Stock stock = Stock(data=self.kargs['data'], numero=base_models.Sequence().get_sequence('stock'), num_doc=self.kargs['numero'], descricao='Nossa Nota de Entrada', documento='entrada', periodo=periodo, estado='Confirmado', user=self.kargs['user']).put() from linha_entrada import LinhaEntrada record_lines = LinhaEntrada(where="entrada = '{entrada}'".format(entrada=self.kargs['id'])).get() if record_lines: from linha_stock import LinhaStock from produto import Produto for line in record_lines: quantidade = to_decimal(line['quantidade']) product = Produto().get(key=line['produto'])[0] descricao = product['nome'] LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=self.kargs['armazem'], quant_saida=to_decimal(0), quant_entrada=quantidade, user=self.kargs['user']).put() LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=armazem_fornecedor, quant_saida=quantidade, quant_entrada=to_decimal(0), user=self.kargs['user']).put() self.put() ctx_dict = get_context(window_id) ctx_dict['main_key'] = self.kargs['id'] set_context(window_id, ctx_dict) return form_edit(window_id=window_id).show() else: return error_message('Não pode confirmar entradas sem linhas de Entrada! \n')
def sellStock(self, stockTicker): stockOBJ = Stock(stockTicker) if (self.stocksBought[stockTicker] == 0): raise ValueError('You do not have stocks of this ticker to sell.') else: self.stocksBought[stockTicker] -= 1 self.liquidAssets += stockOBJ.getPrice()
def initialize_stock(seller_id): stock_list = [] db = connect_db() cursor = db.cursor() sql = "SELECT a.product_id, a.product_name, a.product_market_price, a.product_status, " \ "b.seller_id, b.product_quality, b.stock_quantity, b.stock_cost, b.stock_price FROM " \ "product AS a,stock AS b where a.product_id=b.product_id and b.seller_id= " + str(seller_id) try: cursor.execute(sql) results = cursor.fetchall() for row in results: product_id = row[0] product_name = row[1] product_market_price = row[2] product_status = row[3] seller_id = row[4] product_quality = row[5] stock_quantity = row[6] stock_cost = row[7] stock_price = row[8] stock = Stock(product_id=product_id, product_market_price=product_market_price, product_name=product_name, product_quality=product_quality, product_status=product_status, seller_id=seller_id, stock_quantity=stock_quantity, stock_cost=stock_cost, stock_price=stock_price) stock_list.append(stock) except Exception as e: print(e) db.close() return stock_list
def main(): handleArgs(sys.argv) data = Dump(__DUMP__) stockData = data.getStocks() myStocks = [] for sd in stockData: newStock = Stock(sd['name'], sd['holding']) myStocks.append(newStock) print(trade.connect()) if __CLOSE__ == myStocks[0].getTime(): print('Market is closed') return mylog.baseLog('Open for the day') while __CLOSE__ != myStocks[0].getTime(): for stock in myStocks: stock.update() indicator = checkStock(stock) if indicator > 0: stock.updateHolding(trade.buy(stock)) elif indicator < 0: stock.updateHolding(trade.sell(stock)) toJson = [] for stock in myStocks: mylog.baseLog('{n} closed at {v}'.format(n=stock.getName(), v=stock.getLast())) stockDump = stock.dump() stockDump['holding'] = -1 toJson.append(stockDump) print(toJson) data.outDump({'stocks': toJson})
def stocks_handler(message): if message.text == 'Kazakhstan Stock Exchange (KASE)': top_ten_stocks = most_liquid() stocks = [] for stock in top_ten_stocks: temp = Stock(stock) temp.find_price() stocks.append(str(temp)) temp = '\n'.join(stocks) msg = f"<b>Top 10 Most Liquid Shares on KASE for {today_modified}</b>\n\n" + temp bot.send_message(message.chat.id, msg, parse_mode='HTML') elif message.text == 'American Stock Markets (NYSE, NASDAQ, etc.)': tickers = [ '^GSPC', '^DJI', 'AAPL', 'AMZN', 'MSFT', 'TSLA', 'FB', 'GOOGL', 'BABA', 'DIS', 'JPM', 'BA' ] stocks = [] for ticker in tickers: temp = yf.Ticker(ticker) stocks.append(f'{ticker}: {temp.history()["Close"][-1]} USD') temp = '\n'.join(stocks) bot.send_message(message.chat.id, temp) else: bot.send_message(message.chat.id, 'Unexpected input. Try again!')
def initialize(): MsgHandlers.stock = Stock() MsgHandlers.recipes = Recipes(Config.recipes_file) #map recipe names to some generated ID for ability to make a /craft_ID link MsgHandlers.recipes_name_to_id_map = {} weapon_list, intermediate_list = MsgHandlers.recipes.list_all() all_list = [] all_list.extend([w[0] for w in weapon_list]) all_list.extend(intermediate_list) MsgHandlers.recipes_name_to_id_map.update( {all_list[i]: i for i in range(0, len(all_list))}) MsgHandlers.keyboard_markups = { "main_menu": { "keyboard": [["Гайды"], ["Крафт"], ["Стата"]], "resize_keyboard": True }, "craft_menu": { "keyboard": [["Расчет стоимости /stock"], ["Список рецептов"], ["Главное меню"]], "resize_keyboard": True } }
def loadListOfStocks(self): f = open('listaDeAcoes.txt', 'r') fileLines = f.readlines() for line in fileLines: price = random.uniform(10, 100) s = Stock(line.strip('\n'), round(price, 2), 0) self.listOfStocks.append(s)
def _purchaseStock(self, ticker, price=0): stock = Stock(ticker) stock.symbol = ticker stock.currentPrice = price stock.purchasePrice = price stock.exchange = "UNKNOWN" self.currentHoldings.append(stock)
def parseQuote(json): items = "" stockList = [] try: items = json.items() except Exception as ex: print("invalid JSON") return stockList for (k, v) in items: curStock = Stock(k) try: curStock.symbol = v['symbol'].upper() curStock.currentPrice = v["lastPrice"] curStock.exchange = str(v["exchangeName"]).upper() except: try: curStock.currentPrice = v["lastprice"] curStock.exchange = v["exchangename"].upper() except: print("Can't parse json quote for: " + curStock.symbol) if (curStock.isValid()): stockList.append(curStock) return stockList
def Confirmar(self, key, window_id): #ainda não esta 100% ver com calma outro dia # Gera movimento contabilistico (conta de materias primas contra conta de gastos e entrada de produto acabado em armazem) # Gera movimento de Stock (sai materia prima do armazem por contrapartida de produto acabado) if key in ['None', None]: key = get_actions(action='save', key=None, model_name=model.__model_name__, internal=True) record_id = key record = model.get(key=record_id)[0] record['user'] = session['user'] record['estado'] = 'Confirmado' record['numero'] = base_models.Sequence().get_sequence('prato') from diario import Diario diario = Diario(where="tipo='stock'").get()[0]['id'] periodo = None from periodo import Periodo periodos = Periodo().get() for p in periodos: lista_datas = generate_dates(start_date=p['data_inicial'], end_date=p['data_final']) if str(format_date(record['data'])) in lista_datas: periodo = p['id'] if not periodo: return error_message('não existe periodo definido para a data em questão! \n') from armazem import Armazem armazem_cliente = Armazem(where="tipo='cliente'").get()[0]['id'] from movimento import Movimento movimento = Movimento(data=record['data'], numero=base_models.Sequence().get_sequence('movimento'), num_doc=record['numero'], descricao='Nossa Guia de Produção', diario=diario, documento='prato', periodo=periodo, estado='Confirmado', user=session['user'], active=False).put() from stock import Stock stock = Stock(data=record['data'], numero=base_models.Sequence().get_sequence('stock'), num_doc=record['numero'], descricao='Nossa Guia de Produção', documento='prato', periodo=periodo, estado='Confirmado', user=session['user']).put() Prato(**record).put() from linha_prato import LinhaPrato record_lines = LinhaPrato(where="prato = '{prato}'".format(prato=record['id'])).get() if record_lines: from linha_movimento import LinhaMovimento from linha_stock import LinhaStock from produto import Produto from familia_produto import FamiliaProduto for line in record_lines: # tambem depois considerar a verificação se o total está bem calculado e logs se o preço unitário for modificado quantidade = to_decimal(line['quantidade']) product = Produto().get(key=line['produto'])[0] conta_mercadorias = product['conta_mercadorias'] conta_gastos = product['conta_gastos'] taxa_iva = product['iva'] armazem_vendas = None familia = FamiliaProduto().get(key=product['familia']) if familia: familia = familia[0] if familia['armazem_vendas']: armazem_vendas = familia['armazem_vendas'] descricao = product['nome'] #total_sem_iva = line['valor_total']/(1+taxa_iva) #Aqui ver a contabilização LinhaMovimento(movimento=movimento, descricao=descricao, conta=conta_gastos, quant_debito=quantidade, debito=line['valor_total'], quant_credito=to_decimal(0), credito=to_decimal(0), user=session['user']).put() LinhaMovimento(movimento=movimento, descricao=descricao, conta=conta_mercadorias, quant_debito=to_decimal(0), debito=to_decimal(0), quant_credito=quantidade, credito=line['valor_total'], user=session['user']).put() # o movimento é no armazem cozinha e sai materia-prima entra produto acabado LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=armazem_materia_prima, quant_saida=quantidade, quant_entrada=0.0, user=session['user']).put() LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=armazem_produto, quant_saida=0.0, quant_entrada=quantidade, user=session['user']).put() return form_edit(key = key, window_id = window_id) else: return error_message('Não pode confirmar talões sem linhas de Talão! \n')
def get(self): try: s = Stock() reply = "" #Check for price/quantity price = self.get_argument('price','') quantity = self.get_argument('quantity','') value = self.get_argument('value','') if(price=='true'): #Get the egg unit price price = s.getItemPrice('egg') reply += "egg unit price: " + str(price) if(quantity=='true'): quantity = s.getItemQuantity('egg') reply += "egg stock level: " + str(quantity) if(value=='true'): #Get item total value total = s.getItemTotal('egg') reply += "egg total stock value: " + str(total) if(reply==""): reply = "OK" self.write(reply) s.Close() except Exception as e: print(e)
def get_stocks_from_csv(): """Parses a compatible csv file containing stock information. The compatible csv files can be downloaded from: https://www.nasdaq.com/market-activity/stocks/screener Returns: A dictionary of stocks. """ dic = {} # Read in stock data from downloaded csv. with open('../data/nasdaq_screener_1612228769267.csv', 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') for row in reader: add_ticker = True ticker = row[0] for ign_ticker in it.ignored_tickers: if ign_ticker == ticker: add_ticker = False break if add_ticker: name = row[1] country = row[6] sector = row[9] industry = row[10] dic[ticker] = Stock(ticker, name, country, sector, industry) return dic
def analyse(index_df, buy_analyse_interval): stock = Stock() account = Account() stock_code = 'america' account.stock[stock_code] = stock # 买入日期、价格 buy_date = [] buy_index = [] # 卖出日期、价格 sell_date = [] sell_index = [] # 从最早时间点向后遍历股票,遇到关键点位就进行操作 for index in range(len(index_df) - 80, -1, -1): data = index_df.iloc[index] index_check_result = check_point(index, index_df, buy_analyse_interval) if index_check_result != 'hold': stock.sh_index_point = index_check_result if stock.sh_index_point == 'buy': # if vol != 0: buy_date.append(data['trade_date']) buy_index.append(data['close']) # 既然买入了就重置状态 stock.sh_index_point = 'hold' # simulation vol = account.buy(stock_code, data['close']) if vol > 0: print("%s %s buy %0.2f on price %0.2f, zichan %0.2f" % (data['trade_date'], stock_code, vol, data['close'], account.cash + account.stock[stock_code].vol * data['close'])) elif stock.sh_index_point == 'sell': # if vol != 0: sell_date.append(data['trade_date']) sell_index.append(data['close']) # 既然卖出了就重置状态 stock.sh_index_point = 'hold' # simulation vol = account.sell(stock_code, data['close']) if vol > 0: if account.stock[stock_code].vol > 0: print("%s %s sel %0.2f on price %0.2f, zichan %0.2f" % (data['trade_date'], stock_code, vol, data['close'], account.cash + account.stock[stock_code].vol * data['close'])) else: print("%s %s sel %0.2f on price %0.2f, zichan %0.2f" % (data['trade_date'], stock_code, vol, data['close'], account.cash)) # 给资产赋值 index_df.iloc[ index, -1] = account.cash + account.stock[stock_code].vol * data['close'] return [buy_date, buy_index, sell_date, sell_index]
def buyStock(self, stockTicker): stockOBJ = Stock(stockTicker) if (self.liquidAssets < stockOBJ.getPrice()): raise ValueError( 'You do not have enough liquid assets to purchase this stock.') else: self.stocksBought[stockTicker] += 1 self.liquidAssets -= stockOBJ.getPrice()
def sellStock(self, ticker, quanity): s = Stock(ticker) if self.stocks[ticker] - quanity >= 0: self.cash += quanity * float(s.getPrice()) self.stocks[ticker] -= quanity else: print("You do not have enough stock for this trade")
def test_successful_update_stock(): system_stock = System().get_stock() stock = Stock() for item in system_stock.get_stock(): system_stock.update_item(item, 20) assert ( system_stock.get_item_stock(item) == stock.get_item_stock(item) + 20)
def read_portfolio(filename): with open(filename) as lines: portfolio = [ Stock(r['name'], r['shares'], r['price']) for r in parse_csv(lines, types=[str, int, float]) ] return Portfolio(portfolio)
def on_btnstock_clicked(self, boton): """ Método que llama al apartado de clientes :param boton: Parametro que recibe el metodo :return: None """ Stock()
def check(): for rule in rules: stock = Stock(rule[0], rule[1]) rule = PriceRule(rule[2], rule[3]) ret = stock.fitPrice(rule) if (ret['code'] == CODE_SEND_EMAIL): sendEmail(ret['msg'], 'aaaaa') print(json.dumps(ret, ensure_ascii=False))
def request_stock(symbol): date = request.args.get("date") stock = Stock(symbol=symbol, date=date) stock.fetch_chart() bars = create_bars(stock) result = json.dumps(bars) return result
def refreshData(): for i in range(0, len(tickers) - 1): t = tickers[i] print(t) stock = Stock(t['ticker'], t['ccy'], t['exchange'], t['secType'], t['source']) stock.refreshData(ib_client_id=i, tws_ip=TWS_IP, tws_port=TWS_PORT) return '<h1>Attemted to refresh ' + str(len(tickers)) + ' tickers </h1>'
def data(self): if self._data is None: data_frame = {} for ticker in self.tickers: s = Stock(ticker) data_frame[ticker] = s.adjusted_pct_change('2013', '2018') self._stocks[ticker] = s self._data = pd.DataFrame(data_frame) return self._data
def get_metadata(ticker): t = list(filter(lambda t: t['ticker'] == ticker, tickers)) if t: stock = Stock(t[0]['ticker'], t[0]['ccy'], t[0]['exchange'], t[0]['secType'], t[0]['source']) data = stock.get_metadata() else: abort(404) return jsonify(data), 200
def refreshMetaData(): for i in range(0, len(tickers) - 1): t = tickers[i] print(t) stock = Stock(t['ticker'], t['ccy'], t['exchange'], t['secType'], t['source']) stock.refreshMetaData() return '<h1>Attemted to refresh metadata for ' + str( len(tickers)) + ' tickers </h1>'
def main(argv): if len(argv) == 2: filename = argv[1] else: filename = "Data/portfolio.csv" with open(filename) as f: records = [Stock(x['name'], x['shares'], x['price']) for x in parse_csv(f, types=[str,int,float])] portfolio = Portfolio(records) print(f'Total cost {portfolio.total_cost:0.2f}')
def __init__(self,stock=None): if stock is None: self._stock = Stock() else: self._stock = stock self._orders = [] self._completed = []
def test_success(self): """ Check for success scenario where highest stock price is returned correctly """ s = Stock(self.validfile) s.read_stock_data() company = s.csv_data[0][2:][0] csv_sorted = s.sort_stocks_by_company(company, True) self.assertTrue(s.print_highest_price(csv_sorted[1:2],company,2))
def index(): stock_number = request.args.get('stock_number') if stock_number == None: return render_template('index.html', stock=None) try: stock = Stock(stock_number) except: return render_template('not_found.html', name=stock_number) return render_template('index.html', stock=stock)
def generate_stock(id, name, min_price=0, max_price=250, min_shares=100, max_shares=10000): initial_shares = gutils.get_random_integer(min_shares, max_shares) share_price = gutils.get_random_float(float(min_price), float(max_price)) return Stock(id, name, initial_shares, share_price)