Ejemplo n.º 1
0
	def get(self):
		s = Stock()
		_d = s.iterDump()
		for line in _d:
			self.write(str(line))
			self.write("\n")
		s.Close()
Ejemplo n.º 2
0
 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')
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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})
Ejemplo n.º 6
0
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!')
Ejemplo n.º 7
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
 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')
Ejemplo n.º 12
0
	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)
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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]
Ejemplo n.º 15
0
 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()
Ejemplo n.º 16
0
    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")
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
    def on_btnstock_clicked(self, boton):
        """
        Método que llama al apartado de clientes
        :param boton: Parametro que recibe el metodo
        :return: None
        """

        Stock()
Ejemplo n.º 20
0
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))
Ejemplo n.º 21
0
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
Ejemplo n.º 22
0
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>'
Ejemplo n.º 23
0
 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
Ejemplo n.º 24
0
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
Ejemplo n.º 25
0
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>'
Ejemplo n.º 26
0
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}')
Ejemplo n.º 27
0
    def __init__(self,stock=None):

        if stock is None:
            self._stock = Stock()
        else:
            self._stock = stock

        self._orders = []
        self._completed = []
Ejemplo n.º 28
0
    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))
Ejemplo n.º 29
0
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)
Ejemplo n.º 30
0
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)