1 contributor
#!/usr/bin/env python3
import time
import datetime
import sys
import base
import grab
import test
# Convert a float into a printable and understandable form
# (e.x 2.22e-05 to '0.0000222')
# --- in
# * str(num)
# --- out
# str(printable_float)
# -----------------
def _float_to_printable(num):
num = str(num)
# If the given float is of the form x.xxx...xxxe-xxx
if 'e' in num:
num_of_zeros = int(num[len(num) - 1]) - 1 # Number of zeros after comma
e_index = num.index('e')
decimals = num[0] + num[2:e_index] # Numbers after zeros (e.g all xxx in 0.000...0xxx)
printable_float = '0.' + '0' * num_of_zeros + decimals # Combine the string float
return printable_float
else:
return num
# Print out a starting trade info
# (this is for user ot confirm the values and prompt to start trading)
# --- in
# None
# --- out
# None
# -----------------
def out_trading_info():
print('\n**************************')
print('Starting trading session:')
print('--------------------------')
print(f'Time: {datetime.datetime.now().strftime("%H:%M")}')
print('--------------------------')
print(f'Step: {_float_to_printable(base.STEP)} {base.TRADING_ASSET}')
print(f'Spread: {base.SPREAD} ({_float_to_printable(round((1 + base.SPREAD) * base.STEP, base.DECIMAL_PLACES))}) {base.TRADING_ASSET}')
print(f'{base.TRADING_COIN} per order: {base.LOT}')
print('--------------------------')
print(f'MAIL_DAILY_REPORTS: {base.MAIL_DAILY_REPORTS}')
print(f'MAIL_WEEKLY_REPORTS: {base.MAIL_WEEKLY_REPORTS}')
print(f'MAIL_MONTHLY_REPORTS: {base.MAIL_MONTHLY_REPORTS}')
print('**************************\n')
while True:
try:
start = input('Start trading(y/n): ')
if start.lower() == 'y':
break
elif start.lower() == 'n':
sys.exit()
else:
continue
except KeyboardInterrupt:
print('')
sys.exit()
# Send an order to the market
# --- in
# * str(order_type)
# * str(order_price)
# * str(order_id)
# --- out
# None
# -----------------
def base_order(order_type, order_price, order_id):
base.CLIENT.order_limit(symbol=base.TRADING_PAIR,
side=order_type,
quantity=base.LOT,
price=order_price,
newClientOrderId=order_id)
# Cancel a certain order
# --- in
# * str(order_id)
# --- out
# None
# -----------------
def cancel_order(order_id):
try:
base.CLIENT.cancel_order(symbol=base.TRADING_PAIR,
origClientOrderId=order_id)
except:
print('| Noting to cancel')