Aleksandr Gaisov Initial commit
8409173 4 years ago
1 contributor
56 lines | 2.568kb
#!/usr/bin/env python3

import bot

# A function to generate the grid of prices for future orders
def generate_grid_of_prices():    
    up_to_price = bot.INIT_COIN_PRICE * 10;  # Generate array up to this price 
    grid_arr = []
    order_price = 0  # A starting price
    
    while order_price < up_to_price:  # While the generated price is still smaller than the maximum possible price
        grid_arr.append(round(order_price, bot.NUM_DECIMAL_PLACES)) # Append a new price to the array of prices
        order_price = round(order_price + bot.STEP, bot.NUM_DECIMAL_PLACES)  # Add the STEP value to the future price
    
    return grid_arr

# A function for finding the current WINDOW price
def find_current_window_price():
    for price in bot.PRICES_ARR: # Iterate through the array of prices
        if price >= bot.INIT_COIN_PRICE: #  If the the price is larger than the current price
            return price
            break;
        else:
            continue;
    
    return None;

def find_best_offer_price(window_price_):
    window_price_i = bot.PRICES_ARR.index(window_price_)  # Index value of a window price
    
    if bot.SPREAD % 2 == 0:  # If SPREAD is even
        return bot.PRICES_ARR[window_price_i + int(bot.SPREAD / 2)]  # Return the value whose index is half SPREAD higher than the WINDOW price
    else:  # If SPREAD is odd
        return bot.PRICES_ARR[window_price_i + (int(bot.SPREAD / 2) + 1)]  # Return the value whose index is one SPREAD higher than the WINDOW price
    
def find_best_bid_price(offer_price):
    offer_price_i = bot.PRICES_ARR.index(offer_price)  # Index value of a window price
    
    return bot.PRICES_ARR[offer_price_i - (bot.SPREAD + 1)]  # Return the value whose index is SPREAD + 1 lower than the OFFER price
    
def up_current_window_price(window_price_):
    return bot.PRICES_ARR[bot.PRICES_ARR.index(window_price_) + 1]  # + 1 STEP (adding 1 to index, but the next value is 1 STEP larger)
    
def down_current_window_price(window_price_):
    return bot.PRICES_ARR[bot.PRICES_ARR.index(window_price_) - 1]  # - 1 STEP (subtracting 1 from index, but the previous value is 1 STEP lower)
    
def count_decimal_places():
    init_coin_price_str = str(bot.INIT_COIN_PRICE)

    return int(init_coin_price_str[::-1].find('.'))  # Count all simbols until meeting a '.'

# A function for calculating the profit
def calc_asset_profit(num_closed_spreads):
    asset_profit = float(round(num_closed_spreads * (bot.SPREAD * bot.STEP * bot.COINS_PER_ORDER), bot.NUM_DECIMAL_PLACES))

    return asset_profit