コード例 #1
0
def setBuyAmount(user, stockSymbol, amount):
    user.updateSelfFunds()
    user.updateSelfBuyTriggers()
    user.updateSelfStocks()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "")

    if float(user.funds) - float(amount) <= 0:
        print(str(user.instruction.transactionNumber) + " ERROR: Not enough funds")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: Not enough funds", "")
        return 0

    if stockSymbol in user.buyTriggers:
        amountStock = user.buyTriggers[stockSymbol]
    else:
        amountStock = StockClass.AmountStock(user.username, stockSymbol, user.instruction.transactionNumber, 0, False, False)
    
    if not stockSymbol in user.stocks:
        userStock = StockClass.UserStock(user.username, stockSymbol, 0)
        user.stocks[stockSymbol] = userStock

    amountStock["value"] = float(amountStock["value"]) + float(amount)
    amountStock["timestamp"] = calendar.timegm(time.gmtime())
    amountStock["transactionNumber"] = user.instruction.transactionNumber
    user.buyTriggers[stockSymbol] = amountStock
    user.funds = float(user.funds) - float(amount)

    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_AMOUNT", user.instruction.transactionNumber, "SET_BUY_AMOUNT", user.username, user.funds, "", "", "", "", "", "")

    user.updateDbUserStocks()
    user.updateDbUserBuyTriggers()
    user.updateDbFunds()

    return 0
コード例 #2
0
def quote(user, quoteCache, stockSymbol):
    quoteManager = QuoteClass.Quotes()
    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "QUOTE", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "")
    q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber)
    
    return 0
コード例 #3
0
def commitSell(user):
    user.updateSelfFunds()
    user.updateSelfSellStack()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_SELL", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "")

    if (len(user.sellStack) <= 0):
        print(str(user.instruction.transactionNumber) + " ERROR: No stocks to be commited to sell")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "COMMIT_SELL", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "ERROR: No stocks to be commited to sell", "")
        return 0

    s = user.sellStack.pop()
    if calendar.timegm(time.gmtime()) - s["timestamp"] >= 59:
        print(str(user.instruction.transactionNumber) + " ERROR: Expired stock quote")
        return 0
    
    user.funds = user.funds + s["value"]
    
    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_SELL", user.instruction.transactionNumber, "COMMIT_SELL", user.username, user.funds, "", "", "", "", "", "")


    user.updateDbUserSellStack()
    user.updateDbFunds()
    return 0
コード例 #4
0
def setSellAmount(user, stockSymbol, amount):
    user.updateSelfSellTriggers()
    user.updateSelfStocks()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_SELL_AMOUNT", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "")
    
    if not stockSymbol in user.stocks:
        print(str(user.instruction.transactionNumber) + " ERROR: Not enough specified stock")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_AMOUNT", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Not enough specified stock", "")
        return 0
    
    if stockSymbol in user.sellTriggers:
        amountStock = user.sellTriggers[stockSymbol]
    else:
        amountStock = StockClass.AmountStock(user.username, stockSymbol, user.instruction.transactionNumber, 0, False, False)
     
    amountStock["value"] = float(amountStock["value"]) + float(amount)
    amountStock["timestamp"] = calendar.timegm(time.gmtime())
    amountStock["transactionNumber"] = user.instruction.transactionNumber
    user.sellTriggers[stockSymbol] = amountStock

    user.updateDbUserStocks()
    user.updateDbUserSellTriggers()
    setSellTrigger(user, stockSymbol, amountStock["trigger"])
    return 0
コード例 #5
0
def cancelSetBuy(user, stockSymbol):
    user.updateSelfFunds()
    user.updateSelfBuyTriggers()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SET_BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "")

    if not stockSymbol in user.buyTriggers:
        print(str(user.instruction.transactionNumber) + " ERROR: No trigger set")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: No trigger set", "")
        return 0

    amountStock = user.buyTriggers[stockSymbol]
    user.funds = user.funds + amountStock["value"]
    amountStock["value"] = False
    amountStock["trigger"] = False
    amountStock["timestamp"] = calendar.timegm(time.gmtime())
    amountStock["transactionNumber"] = user.instruction.transactionNumber
    user.buyTriggers[stockSymbol] = amountStock

    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_BUY", user.instruction.transactionNumber, "CANCEL_SET_BUY", user.username, user.funds, "", "", "", "", "", "")

    user.updateDbUserBuyTriggers()
    user.updateDbFunds()
    return 0
コード例 #6
0
def cancelSetSell(user, stockSymbol):
    user.updateSelfStocks()
    user.updateSelfSellTriggers()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SET_SELL", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "")

    if not stockSymbol in user.sellTriggers:
        print(str(user.instruction.transactionNumber) + " ERROR: No trigger set")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SET_SELL", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: No trigger set", "")
        return 0

    amountStock = user.sellTriggers[stockSymbol]
    userStock = user.stocks[stockSymbol]

    if float(amountStock["trigger"]) <= 0:
        return 0
    refundStockQuantity = int(float(amountStock["value"]) / float(amountStock["trigger"]))
    userStock["quantity"]  = int(userStock["quantity"]) + refundStockQuantity
    amountStock["value"] = False
    amountStock["trigger"] = False
    amountStock["timestamp"] = calendar.timegm(time.gmtime())
    amountStock["transactionNumber"] = user.instruction.transactionNumber

    user.stocks[stockSymbol] = userStock
    user.sellTriggers[stockSymbol] = amountStock

    user.updateDbUserSellTriggers()
    user.updateDbUserStocks()
    return 0
コード例 #7
0
def commitBuy(user):
    user.updateSelfBuyStack()
    user.updateSelfStocks()
    dbm = dbManager.DBM()


    if (len(user.buyStack) <= 0):
        print(str(user.instruction.transactionNumber) + " ERROR: No stocks to be commited to buy")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: No stocks to be commited to buy", "")
        return 0

    s = user.buyStack.pop()
    if calendar.timegm(time.gmtime()) - s["timestamp"] >= 59:
        print(str(user.instruction.transactionNumber) + " ERROR: Expired stock quote")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: Expired stock quote", "")
        return 0

    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "COMMIT_BUY", user.instruction.transactionNumber, "", user.username, "", s["stockSymbol"], "", "", "", "", "")

    if s["stockSymbol"] in user.stocks:
        user.stocks[s["stockSymbol"]]["quantity"] = user.stocks[s["stockSymbol"]]["quantity"] + s["quantity"]
    else:
        userStock = StockClass.UserStock(user.username, s["stockSymbol"], s["quantity"])
        user.stocks[s["stockSymbol"]] = userStock
    
    user.updateDbUserStocks()
    user.updateDbUserBuyStack()
    return 0
コード例 #8
0
def buy(user, quoteCache, stockSymbol, amount):
    user.updateSelfFunds()
    user.updateSelfBuyStack()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "")

    quoteManager = QuoteClass.Quotes()
    q = quoteManager.getQuote(quoteCache, user.username, stockSymbol)

    if calendar.timegm(time.gmtime()) - int(q.timestamp) >= 59:
        q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber)
    
    stockQuantity = int(float(amount) / float(q.quote))
    stockValue = int(stockQuantity * float(q.quote))
    
    if (user.funds - stockValue < 0):
        print(str(user.instruction.transactionNumber) + " ERROR: Not enough funds to buy")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "BUY", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: Not enough funds to buy", "")
        return 0

    user.funds = user.funds - stockValue
    s = StockClass.Stock(user.username, stockSymbol, stockValue, stockQuantity, q.quote, q.timestamp)
    user.buyStack.append(s)

    
    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "BUY", user.instruction.transactionNumber, "BUY", user.username, user.funds, stockSymbol, "", "", "", "", "")
    user.updateDbFunds()
    user.updateDbUserBuyStack()
    return 0
コード例 #9
0
 def updateSelfSellTriggers(self):
     dbm = dbManager.DBM()
     userSellTriggers = dbm.getUserSellTriggers(self.username)
     if userSellTriggers == None:
         self.sellTriggers = {}
     else:
         self.sellTriggers = userSellTriggers["sellTriggers"]
     return 0
コード例 #10
0
 def updateSelfSellStack(self):
     dbm = dbManager.DBM()
     userSellStack = dbm.getUserSellStack(self.username)
     if userSellStack == None:
         self.sellStack = []
     else:
         self.sellStack = userSellStack["sellStack"]
     return 0
コード例 #11
0
 def updateSelfStocks(self):
     dbm = dbManager.DBM()
     userStocks = dbm.getUserStocks(self.username)
     if userStocks == None:
         self.stocks = {}
     else:
         self.stocks = userStocks["stocks"]
     return 0
コード例 #12
0
 def updateSelfFunds(self):
     dbm = dbManager.DBM()
     userInfo = dbm.getUserInfo(self.username)
     if userInfo == None:
         self.funds = 0
     else:
         self.funds = userInfo["funds"]
     return 0
コード例 #13
0
def add(user, amount):
    user.updateSelfFunds()
    user.funds = float(user.funds) + float(amount)
    result = user.updateDbFunds()
    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "ADD", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "")
    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans1", "ADD", user.instruction.transactionNumber, "ADD", user.username, user.funds, "", "", "", "", "", "")
    if result:
        return 0
    else:
        return 1
コード例 #14
0
def sellTrigger(quoteCache):
    dbm = dbManager.DBM()
    quotes = QuoteClass.Quotes()

    while (True):
        for userRow in dbm.getAllSellTriggers():
            username = userRow["username"]
            sellTriggers = userRow["sellTriggers"]

            for stockSymbol, sellTrigger in sellTriggers.items():
                if float(sellTrigger["value"]
                         ) <= 0 or sellTrigger["value"] == False:
                    continue

                if float(sellTrigger["trigger"]
                         ) <= 0 or sellTrigger["trigger"] == False:
                    continue

                q = quotes.hitQuote(quoteCache, username,
                                    sellTrigger["stockSymbol"],
                                    sellTrigger["transactionNumber"])

                if float(q.quote) <= float(sellTrigger["trigger"]):
                    continue

                fakeStockQuantityToSell = int(
                    float(sellTrigger["value"]) /
                    float(sellTrigger["trigger"]))

                stockQuantityToSell = int(
                    float(sellTrigger["value"]) / float(q.quote))
                change = fakeStockQuantityToSell - stockQuantityToSell
                stockValueToSell = float(stockQuantityToSell) * float(q.quote)

                dbm.log("systemEvent", calendar.timegm(time.gmtime()), "",
                        "sellTrigger", "SET_SELL_TRIGGER",
                        sellTrigger["transactionNumber"], "", username, "",
                        sellTrigger["stockSymbol"], "", "", "", "", "")

                dbm.updateUserFundsSpecific(username, stockValueToSell)
                dbm.updateUserStockSpecific(username,
                                            sellTrigger["stockSymbol"], change)
                dbm.updateUserSellTriggerSpecific(username,
                                                  sellTrigger["stockSymbol"])
        time.sleep(59)
コード例 #15
0
def cancelSell(user):
    user.updateSelfSellStack()
    user.updateSelfStocks()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_SELL", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "", "")

    if (len(user.sellStack) <= 0):
        print(str(user.instruction.transactionNumber) + " ERROR: No sells to cancel")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_SELL", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "ERROR: No sells to cancel", "")
        return 0
    s = user.sellStack.pop()
    
    user.stocks[s["stockSymbol"]]["quantity"] = user.stocks[s["stockSymbol"]]["quantity"] + s["quantity"]

    user.updateDbUserStocks()
    user.updateDbUserSellStack()
    return 0
コード例 #16
0
def setSellTrigger(user, stockSymbol, amount):
    user.updateSelfSellTriggers()
    user.updateSelfStocks()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "")

    if not stockSymbol in user.sellTriggers:
        print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "")
        return 0

    amountStock = user.sellTriggers[stockSymbol]

    if amountStock["value"] <= 0:
        print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "")
        return 0
    if float(amount) <= 0:
        return 0
    
    amountStock["trigger"] = float(amount)
    amountStock["transactionNumber"] = user.instruction.transactionNumber
    
    fakeStockQuantityToSell = int( float(amountStock["value"]) / float(amountStock["trigger"]) )

    userStock = user.stocks[stockSymbol]

    if userStock["quantity"] - fakeStockQuantityToSell <= 0:
        print(str(user.instruction.transactionNumber) + " ERROR: Not enough stock")
        amountStock["trigger"] = False
        amountStock["value"] = False
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_SELL_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Not enough stock", "")
        return 0

    userStock["quantity"] = userStock["quantity"] - fakeStockQuantityToSell
    amountStock["timestamp"] = calendar.timegm(time.gmtime())

    user.sellTriggers[stockSymbol] = amountStock
    user.stocks[stockSymbol] = userStock
    user.updateDbUserStocks()
    user.updateDbUserSellTriggers()
    return 0
コード例 #17
0
def buyTrigger(quoteCache):
    dbm = dbManager.DBM()
    quotes = QuoteClass.Quotes()

    while (True):
        for userRow in dbm.getAllBuyTriggers():
            username = userRow["username"]
            buyTriggers = userRow["buyTriggers"]

            for stockSymbol, buyTrigger in buyTriggers.items():
                if float(buyTrigger["value"]
                         ) <= 0 or buyTrigger["value"] == False:
                    continue

                if float(buyTrigger["trigger"]
                         ) <= 0 or buyTrigger["trigger"] == False:
                    continue

                q = quotes.hitQuote(quoteCache, username,
                                    buyTrigger["stockSymbol"],
                                    buyTrigger["transactionNumber"])

                if float(q.quote) >= float(buyTrigger["trigger"]):
                    continue

                stockQuantityToBuy = int(
                    float(buyTrigger["value"]) / float(q.quote))
                stockValueToBuy = float(stockQuantityToBuy) * float(q.quote)
                change = float(buyTrigger["value"]) - stockValueToBuy

                dbm.log("systemEvent", calendar.timegm(time.gmtime()), "",
                        "buyTrigger", "SET_BUY_TRIGGER",
                        buyTrigger["transactionNumber"], "", username, "",
                        buyTrigger["stockSymbol"], "", "", "", "", "")

                dbm.updateUserFundsSpecific(username, change)
                dbm.updateUserStockSpecific(username,
                                            buyTrigger["stockSymbol"],
                                            stockQuantityToBuy)
                dbm.updateUserBuyTriggerSpecific(username,
                                                 buyTrigger["stockSymbol"])
        time.sleep(59)
コード例 #18
0
def cancelBuy(user):
    user.updateSelfFunds()
    user.updateSelfBuyStack()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_BUY", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "", "")

    if (len(user.buyStack) <= 0):
        print(str(user.instruction.transactionNumber) + " ERROR: No stocks to cancel")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans1", "CANCEL_BUY", user.instruction.transactionNumber, "", user.username, user.funds, "", "", "", "", "ERROR: No stocks to cancel", "")
        return 0

    s = user.buyStack.pop()

    user.funds = user.funds + s["value"]

    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "CANCEL_BUY", user.instruction.transactionNumber, "CANCEL_BUY", user.username, user.funds, "", "", "", "", "", )

    user.updateDbUserBuyStack()
    user.updateDbFunds()
    return 0
コード例 #19
0
def sell(user, quoteCache, stockSymbol, amount):
    user.updateSelfFunds()
    user.updateSelfSellStack()
    user.updateSelfStocks()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "")

    quoteManager = QuoteClass.Quotes()
    q = quoteManager.getQuote(quoteCache, user.username, stockSymbol)

    if calendar.timegm(time.gmtime()) - int(q.timestamp) >= 59:
        q = quoteManager.hitQuote(quoteCache, user.username, stockSymbol, user.instruction.transactionNumber)
    

    if not stockSymbol in user.stocks:
        print(str(user.instruction.transactionNumber) + " ERROR: User doesn't have stock")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: User doesn't have stock", "")
        return 0

    stockQuantity = int(float(amount) / float(q.quote))
    stockValue = int(stockQuantity * float(q.quote))

    if user.stocks[stockSymbol]["quantity"] - stockQuantity <= 0:
        print(str(user.instruction.transactionNumber) + " ERROR: User doesn't have enough stock amount")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "ERROR: User doesn't have enough stock amount", "")
        return 0
        
    user.stocks[stockSymbol]["quantity"] = user.stocks[stockSymbol]["quantity"] - stockQuantity

    s = StockClass.Stock(user.username, stockSymbol, stockValue, stockQuantity, q.quote, q.timestamp)
    user.sellStack.append(s)

    dbm.log("accountTransaction", calendar.timegm(time.gmtime()), "", "trans", "SELL", user.instruction.transactionNumber, "", user.username, user.funds, stockSymbol, "", "", "", "", "")

    user.updateDbUserStocks()
    user.updateDbUserSellStack()
    user.updateDbFunds()
    return 0
コード例 #20
0
def displaySummary(user):
    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans", "DISPLAY_SUMMARY", user.instruction.transactionNumber, "", user.username, "", "", "", "", "", "", "")
    logResults = dbm.getLogs(user.username)

    user.updateSelfFunds()
    user.updateSelfStocks()
    user.updateSelfBuyStack()
    user.updateSelfSellStack()
    user.updateSelfBuyTriggers()
    user.updateSelfSellTriggers()

    if testing:
        import json
        someObj = {
            "username": user.username,
            "funds": user.funds,
            "stocks": user.stocks,
            "buyStack": user.buyStack,
            "sellStack": user.sellStack,
            "buyTriggers": user.buyTriggers,
            "sellTriggers": user.sellTriggers,
        }
        return json.dumps(someObj)
    else:
        import json
        someObj = {
            "username": user.username,
            "funds": user.funds,
            "stocks": user.stocks,
            "buyStack": user.buyStack,
            "sellStack": user.sellStack,
            "buyTriggers": user.buyTriggers,
            "sellTriggers": user.sellTriggers,
            "logs": logResults
        }
        return json.dumps(someObj)
コード例 #21
0
def setBuyTrigger(user, stockSymbol, amount):
    user.updateSelfBuyTriggers()

    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans1", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "", "")

    if not stockSymbol in user.buyTriggers:
        print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "")
        return 0

    amountStock = user.buyTriggers[stockSymbol]

    if amountStock["value"] <= 0:
        print(str(user.instruction.transactionNumber) + " ERROR: Must set buy amount first")
        dbm.log("errorEvent", calendar.timegm(time.gmtime()), "", "trans", "SET_BUY_TRIGGER", user.instruction.transactionNumber, "", user.username, "", stockSymbol, "", "", "", "ERROR: Must set buy amount first", "")
        return 0
    
    amountStock["trigger"] = amount
    amountStock["transactionNumber"] = user.instruction.transactionNumber
    user.buyTriggers[stockSymbol] = amountStock

    user.updateDbUserBuyTriggers()
    return 0
コード例 #22
0
def dumplog(filename, username, transactionNumber):
    dbm = dbManager.DBM()
    dbm.log("userCommand", calendar.timegm(time.gmtime()), "", "trans", "DUMPLOG", transactionNumber, "", username, "", "", "", "", filename, "", "")
    dbm.exportLog(filename, username)
    return 0
コード例 #23
0
    def hitQuote(self, quoteCache, userid, stockSymbol, transactionNumber):
        dbm = dbManager.DBM()
        dummy = True

        if dummy == True:
            if stockSymbol in quoteCache:
                quote = quoteCache[stockSymbol]
                if calendar.timegm(time.gmtime()) - int(quote.timestamp) >= 59:
                    time.sleep(1)
                    if testing:
                        newQuote = Quote(10.00, stockSymbol, userid,
                                         9999999999,
                                         "abcdefghijklmnopqrstuvwxyz")
                    else:
                        newQuote = Quote(10.00, stockSymbol, userid,
                                         calendar.timegm(time.gmtime()),
                                         "abcdefghijklmnopqrstuvwxyz")
                    quoteCache[stockSymbol] = newQuote
                    dbm.log("quoteServer", calendar.timegm(time.gmtime()),
                            newQuote.timestamp, "trans1", "QUOTE",
                            transactionNumber, "", newQuote.userid, "",
                            stockSymbol, newQuote.quote, newQuote.cryptokey,
                            "", "", "")
                    return newQuote
                else:
                    dbm.log("quoteServer", calendar.timegm(time.gmtime()),
                            quote.timestamp, "trans1", "QUOTE",
                            transactionNumber, "", quote.userid, "",
                            stockSymbol, quote.quote, quote.cryptokey, "", "",
                            "")
                    return quote
            else:
                time.sleep(2)
                if testing:
                    newQuote = Quote(10.00, stockSymbol, userid, 9999999999,
                                     "abcdefghijklmnopqrstuvwxyz")
                else:
                    newQuote = Quote(10.00, stockSymbol, userid,
                                     calendar.timegm(time.gmtime()),
                                     "abcdefghijklmnopqrstuvwxyz")
                quoteCache[stockSymbol] = newQuote
                dbm.log("quoteServer", calendar.timegm(time.gmtime()),
                        newQuote.timestamp, "trans1", "QUOTE",
                        transactionNumber, "", newQuote.userid, "",
                        stockSymbol, newQuote.quote, newQuote.cryptokey, "",
                        "", "")
                return newQuote
        else:
            if stockSymbol in quoteCache:
                quote = quoteCache[stockSymbol]
                if (calendar.timegm(time.gmtime()) - int(quote.timestamp) <=
                        59):
                    dbm.log("systemEvent", calendar.timegm(time.gmtime()),
                            quote.timestamp, "trans1", "QUOTE",
                            transactionNumber, "", quote.userid, "",
                            stockSymbol, quote.quote, quote.cryptokey, "", "",
                            "")
                    return quote
            host = "quoteserve.seng.uvic.ca"
            port = 4449

            sendMessage = stockSymbol + "," + userid + "\r"
            sendMessage = sendMessage.encode()

            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((host, port))
            s.send(sendMessage)

            receiveMessage = s.recv(1024).decode()
            resp = receiveMessage.split(",")
            newQuote = Quote(resp[0], resp[1], resp[2], int(resp[3]),
                             resp[4].split("\n")[0])
            quoteCache[stockSymbol] = newQuote

            dbm.log("quoteServer", calendar.timegm(time.gmtime()),
                    newQuote.timestamp, "trans1", "QUOTE", transactionNumber,
                    "", newQuote.userid, "", stockSymbol, newQuote.quote,
                    newQuote.cryptokey, "", "", "")
            return newQuote
コード例 #24
0
 def updateDbFunds(self):
     dbm = dbManager.DBM()
     return dbm.updateUserFunds(self.username, self.funds)
コード例 #25
0
 def updateDbUserStocks(self):
     dbm = dbManager.DBM()
     return dbm.updateUserStocks(self.username, self.stocks)
コード例 #26
0
 def updateDbUserSellStack(self):
     dbm = dbManager.DBM()
     return dbm.updateUserSellStack(self.username, self.sellStack)
コード例 #27
0
 def updateDbUserSellTriggers(self):
     dbm = dbManager.DBM()
     return dbm.updateUserSellTriggers(self.username, self.sellTriggers)