#!/bin/bash . /etc/bash/gaboshlib.include export LANGUAGE="en_US" ### CONFIG ### BASEPATH=/dabo/htdocs g_tries=3 g_tries_delay=5 ### FUNCTIONS ### for bashfunc in $(find ${BASEPATH}/../functions -type f -name "*.sh") do . "$bashfunc" done ### MAIN ### g_signal-notify "STARTING DABO BOT $0" # prepare directories mkdir -p ${BASEPATH}/botdata/asset-histories mkdir -p ${BASEPATH}/botdata/trade-histories cd ${BASEPATH}/botdata touch firstloop # am I the bot (important for functions used by analyze.sh echo $0 | grep -q "dabo-bot\.sh" && BOT=1 # cleanup trashlines in asset-histories (possibly generated by kill further of this progress) find asset-histories -name "*.csv" -type f | while read csv_file do csv_timestamp=$(ls --time-style='+%Y%m%d%H%M' -l "${csv_file}" | cut -d" " -f6) sed -i "/[0-9]$(date +%Y)-/d" ${csv_file} touch -t ${csv_timestamp} "${csv_file}" done # run endless loop while true do # wait until next full minute in the beginning to be able to work with continue in this loop if [ -f firstloop ] then rm -f firstloop else g_echo_note "NEXT LOOP - sleping until next full ${INTERVAL} seconds" sleep $((${INTERVAL} - $(date +%s) % ${INTERVAL})) fi # reload config . ../../dabo-bot.conf . ../../dabo-bot.override.conf # stock data if [ ${STOCK_EXCHANGE} = "BINANCE" ] then # command for current token infos (function for setting var QUANTITY_LOT_CUT TOKEN_INFO_CMD="binance_get_token_info" # command for buying/selling a token TRADE_CMD='binance-api-call POST /api/v3/order "&symbol=TOKEN"eOrderQty=QUANTITY&side=ACTION&type=MARKET"' elif [ ${STOCK_EXCHANGE} = "BITPANDA" ] then TOKEN_INFO_CMD="bitpanda_get_token_info" TRADE_CMD='bitpanda-api-call POST public/v1/account/orders "--header \"Content-Type: application/json\" --data \"{\\\"instrument_code\\\":\\\"TOKEN\\\",\\\"side\\\":\\\"ACTION\\\",\\\"type\\\":\\\"MARKET\\\",\\\"amount\\\":\\\"QUANTITY\\\"}\""' fi # Get current assets get_assets || continue # Get current balances get_balances || continue # Check the situation on the market if ! market_performance then f_market_performance=$(cat MARKET_PERFORMANCE_LATEST) fi ##### Sell something? #### check_for_sell ##### Buy something? #### check_for_buy ##### Update webpage webpage & done