Improved error recovery
This commit is contained in:
parent
9709c9b68a
commit
48a821a8d4
|
@ -216,6 +216,7 @@ def run_auto_sell(
|
||||||
all_executed_orders: list[fin_depo.data.TradeOrderDetails] = []
|
all_executed_orders: list[fin_depo.data.TradeOrderDetails] = []
|
||||||
total_sleep_duration = datetime.timedelta(seconds=0)
|
total_sleep_duration = datetime.timedelta(seconds=0)
|
||||||
|
|
||||||
|
try:
|
||||||
while True:
|
while True:
|
||||||
# Check that account has tokens.
|
# Check that account has tokens.
|
||||||
input_amount_available = config.seller.get_depo().get_amount_of_asset(
|
input_amount_available = config.seller.get_depo().get_amount_of_asset(
|
||||||
|
@ -237,7 +238,9 @@ def run_auto_sell(
|
||||||
ROUND_TO_WHOLE,
|
ROUND_TO_WHOLE,
|
||||||
rounding=ROUND_DOWN,
|
rounding=ROUND_DOWN,
|
||||||
)
|
)
|
||||||
logger.info('Attempting to sell %s %s', amount_to_sell, config.input_asset)
|
logger.info(
|
||||||
|
'Attempting to sell %s %s', amount_to_sell, config.input_asset,
|
||||||
|
)
|
||||||
|
|
||||||
order_details = config.seller.place_market_order(
|
order_details = config.seller.place_market_order(
|
||||||
config.input_asset,
|
config.input_asset,
|
||||||
|
@ -260,6 +263,16 @@ def run_auto_sell(
|
||||||
total_sleep_duration += time_to_sleep
|
total_sleep_duration += time_to_sleep
|
||||||
|
|
||||||
del input_amount_available
|
del input_amount_available
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
logger.warning('Manual interrupt')
|
||||||
|
except RuntimeError:
|
||||||
|
logger.exception(
|
||||||
|
'A unexpected and serious error occured. The program will be winding down',
|
||||||
|
)
|
||||||
|
logger.fatal('Please send the above error message to: mailto:jonjmaa@gmail.com')
|
||||||
|
logger.fatal(
|
||||||
|
'He will attempt to diagnosticate the problem, and help with recovery',
|
||||||
|
)
|
||||||
|
|
||||||
time_end = datetime.datetime.now(tz=datetime.UTC)
|
time_end = datetime.datetime.now(tz=datetime.UTC)
|
||||||
|
|
||||||
|
@ -288,41 +301,45 @@ def log_estimates(config: AutoSellConfig):
|
||||||
current_balance / config.input_amount_range[0],
|
current_balance / config.input_amount_range[0],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
minisleep = 0.1
|
||||||
|
|
||||||
|
logger.info('')
|
||||||
logger.info('Welcome to crypto seller!')
|
logger.info('Welcome to crypto seller!')
|
||||||
config.sleep(1)
|
config.sleep(3)
|
||||||
logger.info('')
|
logger.info('')
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('I, the great crypto seller, your humble servant, will')
|
logger.info('I, the great crypto seller, your humble servant, will')
|
||||||
|
config.sleep(minisleep)
|
||||||
logger.info('now analyse your configuration and divine some estimates!')
|
logger.info('now analyse your configuration and divine some estimates!')
|
||||||
config.sleep(1)
|
config.sleep(3)
|
||||||
logger.info('')
|
logger.info('')
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info(
|
logger.info(
|
||||||
'- Current balance: %s %s',
|
'- Current balance: %s %s',
|
||||||
current_balance,
|
current_balance,
|
||||||
config.input_asset.raw_short_name(),
|
config.input_asset.raw_short_name(),
|
||||||
)
|
)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('- Average sleep: %s seconds', average_sleep)
|
logger.info('- Average sleep: %s seconds', average_sleep)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info(
|
logger.info(
|
||||||
'- Average amount: %s %s',
|
'- Average amount: %s %s',
|
||||||
average_amount,
|
average_amount,
|
||||||
config.input_asset.raw_short_name(),
|
config.input_asset.raw_short_name(),
|
||||||
)
|
)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('- Expected counts: %s', expected_num_sell_offs)
|
logger.info('- Expected counts: %s', expected_num_sell_offs)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('- Expected time: %s', expected_duration)
|
logger.info('- Expected time: %s', expected_duration)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('- Fastest time: %s', fastest_duration)
|
logger.info('- Fastest time: %s', fastest_duration)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('- Slowest time: %s', slowest_duration)
|
logger.info('- Slowest time: %s', slowest_duration)
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('')
|
logger.info('')
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('Do you still want to proceed?')
|
logger.info('Do you still want to proceed?')
|
||||||
config.sleep(1)
|
config.sleep(minisleep)
|
||||||
logger.info('If not, press CTRL+C within the next 10 seconds...')
|
logger.info('If not, press CTRL+C within the next 10 seconds...')
|
||||||
config.sleep(10)
|
config.sleep(10)
|
||||||
logger.info('')
|
logger.info('')
|
||||||
|
|
|
@ -3,6 +3,7 @@ import datetime
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import logging.handlers
|
import logging.handlers
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
@ -136,7 +137,10 @@ def main():
|
||||||
auto_sell_config = load_config(args.config_file)
|
auto_sell_config = load_config(args.config_file)
|
||||||
|
|
||||||
# Display estimates
|
# Display estimates
|
||||||
|
try:
|
||||||
log_estimates(auto_sell_config)
|
log_estimates(auto_sell_config)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# Run auto sell
|
# Run auto sell
|
||||||
results = run_auto_sell(
|
results = run_auto_sell(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user