dockerizing
This commit is contained in:
79
dabo/functions/get_rsi_indicator.sh
Normal file
79
dabo/functions/get_rsi_indicator.sh
Normal file
@@ -0,0 +1,79 @@
|
||||
function get_rsi_indicator {
|
||||
#g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@"
|
||||
# get histfile
|
||||
local f_hist_file="$1"
|
||||
local f_last_minutes="$2"
|
||||
|
||||
# calculate change of lastest f_last_minutes+1 prices for calculating rsi over the last f_last_minutes periods
|
||||
local f_price
|
||||
local f_last_price
|
||||
local f_positive_sum=0
|
||||
local f_negative_sum=0
|
||||
f_rsi=""
|
||||
|
||||
local f_period=$((f_last_minutes+1))
|
||||
local f_period_sum=$(tail -n${f_period} "${f_hist_file}" | cut -d, -f2 | grep "^[0-9]" | wc -l)
|
||||
if ! [ ${f_period_sum} -ge ${f_period} ]
|
||||
then
|
||||
g_echo_note "${FUNCNAME} $@: Not enough data - waiting for more values. (${f_period} needed; ${f_period_sum} given)"
|
||||
echo -n ",${f_rsi}" >>"${f_hist_file}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# for f_price in $(tail -n${f_period} "${f_hist_file}" | cut -d"," -f2)
|
||||
# do
|
||||
# # not for the first line because a comparative value is missing
|
||||
# if [ -z "${f_last_price}" ]
|
||||
# then
|
||||
# f_last_price=${f_price}
|
||||
# continue
|
||||
# fi
|
||||
#
|
||||
# # calculate each change
|
||||
# local f_price_change=$(g_percentage-diff ${f_last_price} ${f_price})
|
||||
# f_last_price=${f_price}
|
||||
#
|
||||
# # add positive/negative changes
|
||||
# if echo "${f_price_change}" | grep -q '^-'
|
||||
# then
|
||||
# f_negative_sum=$(echo "${f_negative_sum}+${f_price_change}" | bc -l)
|
||||
# else
|
||||
# f_positive_sum=$(echo "${f_positive_sum}+${f_price_change}" | bc -l)
|
||||
# fi
|
||||
# done
|
||||
|
||||
f_positive_sum=$(tail -n${f_period} "${f_hist_file}" | cut -d"," -f3 | grep "^[0-9]" | awk "{ SUM += \$1} END { printf(\"%10.10f\", SUM/${f_period}) }")
|
||||
f_negative_sum=$(tail -n${f_period} "${f_hist_file}" | cut -d"," -f3 | grep "^-[0-9]" | awk "{ SUM += \$1} END { printf(\"%10.10f\", SUM/${f_period}) }")
|
||||
|
||||
|
||||
# if one of both is "0" then fix results
|
||||
if [ ${f_negative_sum} == "0.0000000000" ]
|
||||
then
|
||||
f_rsi=100
|
||||
#g_echo_note "RSI-Indicator RSI: ${f_rsi}%"
|
||||
echo -n ",${f_rsi}" >>"${f_hist_file}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ${f_positive_sum} == "0.0000000000" ]
|
||||
then
|
||||
f_rsi=0
|
||||
#g_echo_note "RSI-Indicator RSI: ${f_rsi}%"
|
||||
echo -n ",${f_rsi}" >>"${f_hist_file}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# calculate positive/negative change averages
|
||||
local f_negative_sum_average=$(echo "${f_negative_sum}/${f_last_minutes}" | bc -l | sed 's/-//')
|
||||
local f_positive_sum_average=$(echo "${f_positive_sum}/${f_last_minutes}" | bc -l)
|
||||
|
||||
# calculate RS and RSI
|
||||
local f_rs=$(echo "${f_positive_sum_average}/${f_negative_sum_average}" | bc -l)
|
||||
f_rsi=$(echo "100-(100/(1+${f_rs}))" | bc -l | xargs printf "%.0f")
|
||||
|
||||
echo -n ",${f_rsi}" >>"${f_hist_file}"
|
||||
|
||||
#g_echo_note "RSI-Indicator RSI: ${f_rsi}%"
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user