def import_index(self): """Destructively create the index from a JSON file.""" coins = DatabaseManager.get_all_index_coin_models() for coin in coins: DatabaseManager.delete_index_coin_model(coin.Ticker) indexed_coins = "" with open("index.json", "r") as file_obj: indexed_coins = jsonpickle.decode(file_obj.read()) for coin in indexed_coins: coin.DesiredPercentage = coin.DesiredPercentage if coin.DesiredPercentage is not None else 1 coin.Locked = coin.Locked if coin.Locked is not None else False # logger.debug('adding %s with percentage %s', coin.Ticker, coin.DesiredPercentage) DatabaseManager.create_index_coin_model(coin.Ticker, coin.DesiredPercentage, 0, coin.Locked) logger.info("Index imported from index.json")
def index_add_coin(self, coin, percentage=1.0, locked=False): lockCoin = False totalLockedPercentage = 0.0 totalUnlockedPercentage = 0.0 totalUnlockedCoinsCount = 0 indexInfo = DatabaseManager.get_index_info_model() indexedCoins = DatabaseManager.get_all_index_coin_models() if locked == "true" or locked == "True": lockCoin = True for inCoins in indexedCoins: if inCoins.Locked == True: totalLockedPercentage = totalLockedPercentage + inCoins.DesiredPercentage else: totalUnlockedPercentage = totalUnlockedPercentage + inCoins.DesiredPercentage totalUnlockedCoinsCount = totalUnlockedCoinsCount + 1 if totalUnlockedPercentage > float(percentage): if self.coin_supported_check(coin.upper()): percentageToRemove = float( percentage) / totalUnlockedCoinsCount for iCoin in indexedCoins: if iCoin.Locked != True: DatabaseManager.update_index_coin_model( iCoin.Ticker, iCoin.DesiredPercentage - percentageToRemove, iCoin.DistanceFromTarget, iCoin.Locked) if isinstance(float(percentage), (float, int, complex, int)): if DatabaseManager.create_index_coin_model( coin.upper(), float(percentage), 0.0, lockCoin): logger.info("Coin " + coin.upper() + " added to index") else: # Already Exist logger.warn("Coin already in index") else: logger.warn("Percentage isn't a number") else: logger.warn("Coin not supported") else: logger.warn("Not Enough Unlocked Percentage")
def index_add_coin(self, coin, percentage, locked): lockCoin = False totalLockedPercentage = 0.0 totalUnlockedPercentage = 0.0 totalUnlockedCoinsCount = 0 indexInfo = DatabaseManager.get_index_info_model() indexedCoins = DatabaseManager.get_all_index_coin_models() if locked == "true" or locked == "True": lockCoin = True percentage_btc_amount = indexInfo.TotalBTCVal * (float(percentage) / 100) if percentage_btc_amount >= CondexConfig.BITTREX_MIN_BTC_TRADE_AMOUNT: for inCoins in indexedCoins: if inCoins.Locked == True: totalLockedPercentage = totalLockedPercentage + inCoins.DesiredPercentage else: totalUnlockedPercentage = totalUnlockedPercentage + inCoins.DesiredPercentage totalUnlockedCoinsCount = totalUnlockedCoinsCount + 1 if totalUnlockedPercentage > float(percentage): if self.coin_supported_check(coin.upper()): percentageToRemove = float( percentage) / totalUnlockedCoinsCount for iCoin in indexedCoins: if iCoin.Locked != True: DatabaseManager.update_index_coin_model( iCoin.Ticker, iCoin.DesiredPercentage - percentageToRemove, iCoin.CurrentPercentage, iCoin.UnrealizedGain, iCoin.Locked) if isinstance(float(percentage), (float, int, complex, long)): if DatabaseManager.create_index_coin_model( coin.upper(), float(percentage), 0.0, 0.0, lockCoin): DatabaseManager.create_realized_gain_model( coin.upper(), 0.0) logger.info("Coin " + coin.upper() + " added to index") else: # Already Exist logger.warn("Coin already in index") else: logger.warn("Percentage isn't a number") else: logger.warn("Coin not supported") else: logger.warn("Not Enough Unlocked Percentage") else: logger.warn( "Specified percentage below current bittrex trade value")