コード例 #1
0
    def add_transaction(self):
        symbol = self.cbbSymbol.get()
        if (not symbol):
            self.set_status("Symbol is empty.")
            return
        buy_or_sell = self.cbbBuyOrSell.get()
        if (not buy_or_sell):
            self.set_status("Buy/Sell is empty.")
            return
        quantity = self.entryQuantity.get()
        if (not quantity):
            self.set_status("Quantity is empty.")
            return
        price = self.entryPrice.get()
        if (not price):
            self.set_status("Price is empty.")
            return
#         date = self.entryDate.get()
#         if (not date):
#             self.set_status("Date is empty.")
#             return

        stock_transaction = StockTransaction()
        stock_transaction.set_symbol(symbol)
        stock_transaction.set_buy_or_sell(buy_or_sell)
        stock_transaction.set_quantity(quantity)
        stock_transaction.set_price(price)
#        stock_transaction.set_date(date)
        stock_transaction.set_date(datetime.datetime.now())
        
        stock_transaction_table = StockTransactionTable()
        stock_transaction_table.add_stock_transaction(stock_transaction)
        
        self.set_status("Added")
        return
コード例 #2
0
    def listbox_select(self, event):
        w = event.widget
        index = w.curselection()
        if len(index) == 0:
            return

        list_box_string = w.get(index[0])
        list_box_string_list = list_box_string.split(",")
        id_string = list_box_string_list[0]
        trans_id = int(id_string[3:])

        stock_transaction_table = StockTransactionTable()
        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(trans_id)

        self.entryTransId.delete(0, END)
        self.entryTransId.insert(END, stock_transaction.get_trans_id())

        self.entrySymbol.delete(0, END)
        self.entrySymbol.insert(END, stock_transaction.get_symbol())

        self.entryBuyOrSell.delete(0, END)
        self.entryBuyOrSell.insert(END, stock_transaction.get_buy_or_sell())

        self.entryQuantity.delete(0, END)
        self.entryQuantity.insert(END, stock_transaction.get_quantity())

        self.entryPrice.delete(0, END)
        self.entryPrice.insert(END, stock_transaction.get_price())

        self.entryDate.delete(0, END)
        self.entryDate.insert(END, stock_transaction.get_date())

        return
コード例 #3
0
 def add_transaction(self, symbol, buy_or_sell, quantity, price):
     stock_transaction = StockTransaction()
     stock_transaction.set_symbol(symbol)
     stock_transaction.set_buy_or_sell(buy_or_sell)
     stock_transaction.set_quantity(quantity)
     stock_transaction.set_price(price)
     stock_transaction.set_date(datetime.datetime.now())
     
     stock_transaction_table = StockTransactionTable()
     stock_transaction_table.add_stock_transaction(stock_transaction)
     return
コード例 #4
0
 def refresh_list_box(self):
     self.lstboxStockTransaction.delete(0, END)
     stock_transaction_table = StockTransactionTable()
     stock_transaction_list = \
         stock_transaction_table.get_all_stock_transaction()
     for stock_transaction in stock_transaction_list:
         list_box_string = "ID:{0},Symbol:{1},Buy_or_Sell:{2}".format(
             stock_transaction.get_trans_id(),
             stock_transaction.get_symbol(),
             stock_transaction.get_buy_or_sell())
         self.lstboxStockTransaction.insert(END, \
                                            list_box_string)
     return
コード例 #5
0
 def get_stock_quantity_from_db(self):
     stock_transaction_table = StockTransactionTable(self.conn)
     stock_transaction_list = \
         stock_transaction_table.get_stock_transaction_list_by_symbol(
             self.symbol)
     quantity = 0
     for stock_transaction in stock_transaction_list:
         buy_or_sell = stock_transaction.get_buy_or_sell()
         if (buy_or_sell == "Buy"):
             quantity = quantity + stock_transaction.get_quantity()
         elif (buy_or_sell == "Sell"):
             quantity = quantity - stock_transaction.get_quantity()
         else:
             # Need to raise an error
             return None
     return quantity
コード例 #6
0
    def delete_stock_cash(self):
        index = self.lstboxStockTransaction.curselection()
        if len(index) == 0:
            return

        list_box_string = self.lstboxStockTransaction.get(index[0])
        list_box_string_list = list_box_string.split(",")
        id_string = list_box_string_list[0]
        trans_id = int(id_string[3:])

        stock_transaction_table = StockTransactionTable()
        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(trans_id)

        stock_transaction_table.delete_stock_transaction(stock_transaction)

        self.refresh_list_box()

        return
コード例 #7
0
    def test_close_stock_transaction(self):
        '''
            test_close_stock_transaction
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        stock_transaction_table = StockTransactionTable(stock_db_connection)

        # init transaction 1
        stock_transaction_1 = StockTransaction()
        stock_transaction_1.symbol = "601398"
        stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG
        stock_transaction_1.date = datetime(2016, 5, 15, 0, 0, 0)
        stock_transaction_1.quantity = 200
        stock_transaction_1.price = 4.51
        stock_transaction_table.add_stock_transaction(stock_transaction_1)
        trans_id_1 = stock_transaction_1.trans_id

        # init transaction 2
        stock_transaction_2 = StockTransaction()
        stock_transaction_2.symbol = "601398"
        stock_transaction_2.buy_or_sell = StockTransaction.SELL_FLAG
        stock_transaction_2.date = datetime(2016, 5, 16, 0, 0, 0)
        stock_transaction_2.quantity = 200
        stock_transaction_2.price = 4.81
        stock_transaction_table.add_stock_transaction(stock_transaction_2)
        trans_id_2 = stock_transaction_2.trans_id

        stock_closed_transaction = \
            StockClosedTransactionTable.close_transaction(stock_transaction_1,
                                                          stock_transaction_2)

        self.assertEqual(stock_closed_transaction.symbol, "601398")
        self.assertEqual(stock_closed_transaction.buy_price, 4.51)
        self.assertEqual(stock_closed_transaction.sell_price, 4.81)
        self.assertEqual(stock_closed_transaction.buy_date,
                         datetime(2016, 5, 15, 0, 0, 0))
        self.assertEqual(stock_closed_transaction.sell_date,
                         datetime(2016, 5, 16, 0, 0, 0))
        self.assertEqual(stock_closed_transaction.quantity, 200)

        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(
                trans_id_1)
        self.assertIsNone(stock_transaction,
                          "stock_transaction_1 is not deleted")
        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(
                trans_id_2)
        self.assertIsNone(stock_transaction,
                          "stock_transaction_2 is not deleted")

        return
コード例 #8
0
    def test_lowest_buy_price_quantity2(self):
        '''
            test lowest buy price quantity
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        StockTransactionTable(stock_db_connection)

        quantity = StockTransaction.get_lowest_buy_price_quantity("601398")
        self.assertEqual(quantity, 0)

        return
コード例 #9
0
    def test_lowest_buy_price2(self):
        '''
            test lowest buy price
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        StockTransactionTable(stock_db_connection)

        lowest_price = StockTransaction.get_lowest_buy_price("601398")
        self.assertEqual(lowest_price, 9999.00)

        return
コード例 #10
0
    def test_lowest_buy_price_quantity3(self):
        '''
            test lowest buy price quantity with sell transaction
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        stock_transaction_table = StockTransactionTable(stock_db_connection)

        # init transaction 1
        stock_transaction_1 = StockTransaction()
        stock_transaction_1.symbol = "601398"
        stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG
        stock_transaction_1.date = date(2016, 5, 15)
        stock_transaction_1.quantity = 200
        stock_transaction_1.price = 4.51
        stock_transaction_table.add_stock_transaction(stock_transaction_1)
        stock_transaction_1.trans_id

        # init transaction 2
        stock_transaction_2 = StockTransaction()
        stock_transaction_2.symbol = "601398"
        stock_transaction_2.buy_or_sell = StockTransaction.SELL_FLAG
        stock_transaction_2.date = date(2016, 5, 16)
        stock_transaction_2.quantity = 100
        stock_transaction_2.price = 4.81
        stock_transaction_table.add_stock_transaction(stock_transaction_2)
        stock_transaction_2.trans_id

        with self.assertRaises(Exception):
            StockTransaction.get_lowest_buy_price_quantity("601398")

        return
コード例 #11
0
    def test_lowest_buy_price_quantity(self):
        '''
            test lowest buy price quantity
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        stock_transaction_table = StockTransactionTable(stock_db_connection)

        # init transaction 1
        stock_transaction_1 = StockTransaction()
        stock_transaction_1.symbol = "601398"
        stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG
        stock_transaction_1.date = date(2016, 5, 15)
        stock_transaction_1.quantity = 200
        stock_transaction_1.price = 4.9
        stock_transaction_table.add_stock_transaction(stock_transaction_1)
        stock_transaction_1.trans_id

        # init transaction 2
        stock_transaction_2 = StockTransaction()
        stock_transaction_2.symbol = "601398"
        stock_transaction_2.buy_or_sell = StockTransaction.BUY_FLAG
        stock_transaction_2.date = date(2016, 5, 16)
        stock_transaction_2.quantity = 100
        stock_transaction_2.price = 4.81
        stock_transaction_table.add_stock_transaction(stock_transaction_2)
        stock_transaction_2.trans_id

        quantity = StockTransaction.get_lowest_buy_price_quantity("601398")
        self.assertEqual(quantity, 100)

        return
コード例 #12
0
    def update_stock_transaction(self):
        trans_id = int(self.entryTransId.get())

        stock_transaction_table = StockTransactionTable()
        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(trans_id)

        symbol = self.entrySymbol.get()
        buy_or_sell = self.entryBuyOrSell.get()
        quantity = int(self.entryQuantity.get())
        price = float(self.entryPrice.get())
        date = self.entryDate.get()

        stock_transaction.set_symbol(symbol)
        stock_transaction.set_buy_or_sell(buy_or_sell)
        stock_transaction.set_quantity(quantity)
        stock_transaction.set_price(price)

        stock_transaction_table.update_stock_transaction(stock_transaction)

        self.refresh_list_box()

        return
コード例 #13
0
 def get_stock_current_value(self, symbol):
     stock_cash_table = StockCashTable()
     stock_cash = stock_cash_table.get_stock_cash_by_symbol(symbol)
     cash_amount = stock_cash.get_amount()
     
     stock_transaction_table = StockTransactionTable()
     stock_transaction_list = \
         stock_transaction_table.get_stock_transaction_list_by_symbol(symbol)
     quantity = 0
     for stock_transaction in stock_transaction_list:
         buy_or_sell = stock_transaction.get_buy_or_sell()
         if (buy_or_sell == "Buy"):
             quantity = quantity + stock_transaction.get_quantity()
         elif (buy_or_sell == "Sell"):
             quantity = quantity - stock_transaction.get_quantity()
         else:
             # Need to raise an error
             return None
     stock_price = 8.09
     
     total = cash_amount + quantity*stock_price
     
     return total
コード例 #14
0
    def test_stock_transaction_sanity(self):
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        stock_transaction_table = StockTransactionTable(stock_db_connection)
        stock_transaction = StockTransaction()
        stock_transaction.set_symbol("601398")
        stock_transaction.set_buy_or_sell("buy")
        stock_transaction.set_quantity(100)
        stock_transaction.set_price(4.51)
        stock_transaction.set_date(date(2015, 11, 10))
        stock_transaction_table.add_stock_transaction(stock_transaction)

        stock_transaction = StockTransaction()
        stock_transaction.set_symbol("601857")
        stock_transaction.set_buy_or_sell("buy")
        stock_transaction.set_quantity(100)
        stock_transaction.set_price(4.51)
        stock_transaction.set_date(date(2015, 11, 10))
        stock_transaction_table.add_stock_transaction(stock_transaction)

        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(1)
        stock_transaction.set_quantity("500")
        stock_transaction_table.update_stock_transaction(stock_transaction)

        stock_transaction = \
            stock_transaction_table.get_stock_transaction_by_trans_id(1)
        stock_transaction_table.delete_stock_transaction(stock_transaction)

        return