optimations

This commit is contained in:
olli 2023-10-24 20:27:57 +02:00
parent a3e33728e9
commit 0227713b2d
3 changed files with 49 additions and 29 deletions

View File

@ -7,8 +7,8 @@ export LANGUAGE="en_US"
### CONFIG ###
BASEPATH=/dabo/htdocs
g_tries=5
g_tries_delay=10
g_tries=7
g_tries_delay=15
### FUNCTIONS ###
for bashfunc in $(find ${BASEPATH}/../functions -type f -name "*.sh")

View File

@ -26,12 +26,12 @@ function get_asset {
for f_price in $(tail -n 50 "${f_ASSET_HIST_FILE}" | grep "^[0-9]" | cut -d, -f2)
do
if [ "$f_last_price" == "$f_price" ]
if [ "${f_last_price}" == "${f_price}" ]
then
continue
fi
let "f_linecount+=1"
f_last_price=$f_price
f_last_price=${f_price}
done
if [ ${f_linecount} -le 3 ] && [ ${f_lines} -ge 50 ]
@ -102,10 +102,15 @@ function get_asset {
do
local f_calcema=$(echo ${f_calcemanumcolumn} | cut -d: -f1)
local f_caclemacolumn=$(echo ${f_calcemanumcolumn} | cut -d: -f2)
get_ema "${f_ASSET_HIST_FILE}" 2 ${f_calcema} "$(tail -n2 "${f_ASSET_HIST_FILE}" | head -n1 | grep ^2 | cut -d, -f${f_caclemacolumn})" "${f_price}"
local f_last_ema="$(tail -n2 "${f_ASSET_HIST_FILE}" | head -n1 | grep "^[0-9]" | cut -d, -f${f_caclemacolumn})"
if [ -z "${f_last_ema}" ] || [ -z "${f_price}" ]
then
get_ema "${f_ASSET_HIST_FILE}" 2 ${f_calcema}
else
get_ema "${f_ASSET_HIST_FILE}" 2 ${f_calcema} "${f_last_ema}" "${f_price}"
fi
if [ -z "${f_ema}" ]
then
g_echo_note "${FUNCNAME} $@: Not enough data for calculating EMA - waiting for more values"
echo -n "," >>"${f_ASSET_HIST_FILE}"
else
echo -n ",${f_ema}" >>"${f_ASSET_HIST_FILE}"

View File

@ -1,36 +1,55 @@
#!/bin/bash
#. /etc/bash/gaboshlib.include
function get_range {
g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@"
# get histfile
local f_hist_file="$1"
# find constant range in defined periods
local f_test_periods=1000
local f_test_periods=300
# check for range change
local f_current_price=$(tail -n1 "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | head -n1)
local f_last_lowest_in_range=$(tail -n2 "${f_hist_file}" | head -n1 | cut -d, -f25)
local f_last_highest_in_range=$(tail -n2 "${f_hist_file}" | head -n1 | cut -d, -f26)
if [ -n "${f_last_lowest_in_range}" ]
then
if [ -n "${f_last_highest_in_range}" ]
then
if [ $(echo "${f_current_price} > ${f_last_lowest_in_range}" | bc -l) -ne 0 ]
then
if [ $(echo "${f_current_price} < ${f_last_highest_in_range}" | bc -l) -ne 0 ]
then
local f_range_periods=$(tail -n2 "${f_hist_file}" | head -n1 | cut -d, -f24)
f_range_periods=$((f_range_periods+1))
fi
fi
fi
fi
# go reverse through periods and look for range
for f_test_period in $(seq 1 ${f_test_periods})
do
# get average from period to now
local f_rangeaverage=$(tail -n${f_test_period} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | awk '{ sum += $1; n++ } END { OFMT = "%2.8f"; if (n > 0) print sum / n; }')
# get old price from period
local f_period_price=$(tail -n${f_test_period} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | head -n1)
# get percentage diff from old price and last average
local f_period_price_diff=$(g_percentage-diff ${f_period_price} ${f_rangeaverage} | sed 's/^-//; s/\..*$//')
# if percentage change is larger then 2% to the average we have an new price range
local f_range_periods=${f_test_period}
if [ ${f_period_price_diff} -gt 2 ]
then
break
fi
done
if [ -z "${f_range_periods}" ]
then
for f_test_period in $(seq 1 ${f_test_periods})
do
# get average from period to now
local f_rangeaverage=$(tail -n${f_test_period} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | awk '{ sum += $1; n++ } END { OFMT = "%2.8f"; if (n > 0) print sum / n; }')
# get old price from period
local f_period_price=$(tail -n${f_test_period} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | head -n1)
# get percentage diff from old price and last average
local f_period_price_diff=$(g_percentage-diff ${f_period_price} ${f_rangeaverage} | sed 's/^-//; s/\..*$//')
# if percentage change is larger then 2% to the average we have an new price range
local f_range_periods=${f_test_period}
if [ ${f_period_price_diff} -gt 2 ]
then
break
fi
done
fi
# get highest, lowest and current price in period
local f_highest_in_range=$(tail -n${f_range_periods} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | sort -n | tail -n1)
local f_lowest_in_range=$(tail -n${f_range_periods} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | sort -n | head -n1)
local f_current_price=$(tail -n1 "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | head -n1)
# calculate Pivot Point (PP)
local f_pivot_point=$(echo "scale=8; (${f_highest_in_range}+${f_lowest_in_range}+${f_current_price})/3" | bc | sed 's/^\./0./;')
@ -47,9 +66,5 @@ function get_range {
# write down in history
echo -n ",${f_range_periods},${f_lowest_in_range},${f_highest_in_range},${f_pivot_point},${f_support1},${f_resist1},${f_golden_pocket_support},${f_golden_pocket_resist},${f_golden_pocket65_support},${f_golden_pocket65_resist},${f_support3},${f_resist3}" >>"${f_hist_file}"
}
#get_range /home/docker/dabo-bitpanda.ds9.dedyn.io/data/botdata/asset-histories/SHIBEUR.history.csv