Compare commits

..

29 Commits

Author SHA1 Message Date
oleg b698b847a5 progress 2024-07-23 13:57:47 -04:00
oleg 65f55528ef fix version 2024-07-22 17:53:00 -04:00
oleg 13ff201999 progress 2024-07-22 17:49:34 -04:00
oleg 1bc2a367ec fix version 2024-07-22 13:18:14 -04:00
oleg 416fdaffed fix 2024-07-22 13:17:38 -04:00
oleg b08ffbb73b progress 2024-07-22 13:00:00 -04:00
oleg 85534b130a progress 2024-07-19 11:09:34 -04:00
oleg f391593857 progress 2024-07-19 11:04:30 -04:00
oleg 108ae35a06 progress 2024-07-19 10:45:46 -04:00
oleg 2416a5a77e progress 2024-07-19 10:37:45 -04:00
oleg 0b9feb8610 progress 2024-07-19 10:25:26 -04:00
oleg 51e059a72b fix 2024-07-19 09:47:18 -04:00
oleg 9a59b00998 progress 2024-07-18 16:45:52 -04:00
oleg 78de26d154 progress 2024-07-18 12:08:35 -04:00
oleg 8eb52d718f progress 2024-07-17 10:47:52 -04:00
oleg a0cf2531e6 progress 2024-07-17 09:14:22 -04:00
oleg ada2a74eb6 fix 2024-07-16 15:11:14 -04:00
oleg 7dec83b190 fix 2024-07-16 14:51:21 -04:00
oleg 2b2056171e progress 2024-07-16 14:37:46 -04:00
oleg 913d971663 progress 2024-07-16 12:11:37 -04:00
oleg 0f6d7874de progress 2024-06-13 19:40:49 -04:00
oleg 769d8116d5 fix 2024-06-13 18:17:13 -04:00
oleg a7ad7f45f5 fix 2024-06-13 18:13:27 -04:00
oleg 0e6190f999 progress 2024-06-13 18:11:54 -04:00
oleg 180e3f89cf fix 2024-06-13 18:03:43 -04:00
oleg 80bbf47755 progress 2024-06-13 18:00:09 -04:00
oleg e295aa8dff progress 2024-06-13 17:27:16 -04:00
oleg 60d2327b7e progress 2024-06-06 20:07:49 -04:00
oleg a0b41cad8e progress 2024-06-06 19:55:04 -04:00
14 changed files with 351 additions and 39 deletions
+42
View File
@@ -0,0 +1,42 @@
-------------------------------------
C R Y P T O M A R K E T D A T A
-------------------------------------
============
Exchanges
============
| Coinbase
| Binance Spot
| Binance Futures
|
v
============
Databases
============
| TimescaleDB: cloud21
| TimescaleDB: cvttdata
v
================
Daily Archive
================
| created by crontabs:
| cvttdata:
| (1) /home/cvtt/prod/utils/archive_yesterday_md.sh cloud21
| (2) /home/cvtt/prod/utils/archive_yesterday_md.sh cvttdata
| stored in:
| cvttdata:/home/cvtt/prod/archive/md_archive/crypto/cloud21 (1)
| cvttdata:/home/cvtt/prod/archive/md_archive/crypto/cvttdata (2)
|
v
==========
Storage
==========
| created by crontab cvttdata:
| /home/cvtt/prod/utils/sync_market_data.sh (ops/utls)
| stored in:
| homestore:/works/cvtt/md_archive/equity/alpaca_md
| cloud21:/opt/store/cvtt/md_archive/equity/alpaca_md
|
v
==========
Usage
==========
+33
View File
@@ -0,0 +1,33 @@
-------------------------------------
E Q U I T Y M A R K E T D A T A
-------------------------------------
=====================
Exchanges (Sources)
=====================
| Alpaca
|
|
| TBD ============
| TBD Databases
| TBD ============
| TBD | TimescaleDB: cloud21
| TBD | TimescaleDB: cvttdata
v TBD v
================
Daily Archive
================
| created by crontab on cvttdata:
| /home/cvtt/prod/run/alpaca_md.sh
| stored in:
| cvttdata:/home/cvtt/prod/archive/md_archive/equity/alpaca_md
|
v
==========
Storage
==========
| created by crontab cvttdata:
| /home/cvtt/prod/utils/sync_market_data.sh
| stored in:
| homestore:/works/cvtt/md_archive/equity/alpaca_md
| cloud21:/opt/store/cvtt/md_archive/equity/alpaca_md
____V_______
+1 -1
View File
@@ -1 +1 @@
0.7.6 1.0.3
+42
View File
@@ -0,0 +1,42 @@
#!/bin/bash
pushd () {
command pushd "$@" > /dev/null
}
popd () {
command popd "$@" > /dev/null
}
SourceRoot=/works/cvtt/md_archive/equity/alpaca_md.2
TargetRoot=/works/cvtt/md_archive/equity/alpaca_md.NEW
mkdir -p ${TargetDir}
unalias ls
cd ${SourceRoot}
for year in $(ls -d 2*)
do
echo $year
pushd $year
for letter in $(ls -d ?)
do
pushd ${letter}
echo "${year}/${letter}"
for symbol in $(ls -d ${letter}*)
do
pushd $symbol
echo "${year}/${letter}/${symbol}/* --> ${letter}/${symbol}/${year}/"
mkdir -p ${TargetRoot}/${letter}/${symbol}/${year}
mv ${SourceRoot}/${year}/${letter}/${symbol}/* ${TargetRoot}/${letter}/${symbol}/${year}/
popd
done
popd
done
popd
done
+9 -9
View File
@@ -48,16 +48,9 @@ export PYTHONPATH=/home/cvtt/prod
export Python=/home/cvtt/.pyenv/python3.10-venv/bin/python3 export Python=/home/cvtt/.pyenv/python3.10-venv/bin/python3
export Config=http://cloud16.cvtt.vpn:6789/apps/minimal_md export Config=http://cloud16.cvtt.vpn:6789/apps/minimal_md
export PyScript=/home/cvtt/prod/cvttpy/exchanges/alpaca/hist_md/hist_md_bars.py export PyScript=/home/cvtt/prod/cvttpy/exchanges/alpaca/hist_md/hist_md_bars.py
export OutputDir=/home/cvtt/host_drive/alpaca_md # Local
export LogDir=/home/cvtt/prod/logs/alpaca_md
# ----- T E M P export OutputDir=/home/cvtt/prod/archive/md_archive/equity/alpaca_md # Local
# export PYTHONPATH=/home/oleg/develop/cvtt2 export LogDir=/home/cvtt/prod/logs/alpaca_md
# export Python=/home/oleg/.pyenv/python3.10-venv/bin/python3
# export Config=http://cloud16.cvtt.vpn:6789/apps/minimal_md
# export PyScript=/home/oleg/develop/cvtt2/cvttpy/exchanges/alpaca/hist_md/hist_md_bars.py
# export OutputDir=/home/oleg/develop/cvtt2/tmp # Local
# export LogDir=/home/oleg/develop/cvtt2/tmp
mkdir -p ${LogDir} mkdir -p ${LogDir}
@@ -112,3 +105,10 @@ for ((ii=0; ii <${#Instruments[@]}; ii+=slice_size)); do
parallel -j ${NumJobs} run_proc {} ${Start} ${End} ::: "${InstSlice[@]}" parallel -j ${NumJobs} run_proc {} ${Start} ${End} ::: "${InstSlice[@]}"
done done
echo "Compressing"
for file in $(find ${OutputDir} -type f -name '*db' -print )
do
echo "Compressing ${file}"
gzip ${file}
done
+41
View File
@@ -0,0 +1,41 @@
#!/bin/bash
date_to_load=${1}
DockerRegistry=cloud21.cvtt.vpn:5500
DockerImage=${DockerRegistry}/alpaca_md_day:latest
LastDayFile=/home/cvtt/prod/logs/last_alpaca_hist_day
if [ -z ${date_to_load} ] ; then
echo "Yesterday data. Historical container will be killed"
docker kill alpaca_md_day
else
if [ "${date_to_load}" == "next" ] ; then
last_date=$(cat ${LastDayFile})
if [ -z ${last_date} ] ; then
echo "No last date_to_load in ${LastDayFile}"
exit 1
fi
date_to_load=$(date -d "${last_date} - 1 day" "+%Y-%m-%d")
fi
echo "Historical Data for ${date_to_load}"
fi
Cmd="docker run"
Cmd="${Cmd} --network=host"
Cmd="${Cmd} --name=alpaca_md_day"
Cmd="${Cmd} --rm"
Cmd="${Cmd} ${DockerImage}"
Cmd="${Cmd} ${date_to_load}"
echo $Cmd
eval $Cmd
if [ "$?" != "0" ] ; then
exit 1 # if killed we do not save last day
fi
if [ -n ${date_to_load}]; then
echo "Saving date_to_load to ${LastDayFile}"
echo ${date_to_load} > ${LastDayFile}
fi
+5 -5
View File
@@ -4,14 +4,14 @@ Python=/home/cvtt/.pyenv/python3.10-venv/bin/python3.10
RootDir=/home/cvtt/prod RootDir=/home/cvtt/prod
export PYTHONPATH=${RootDir} export PYTHONPATH=${RootDir}
host=$(hostname) host=${1}
if [ "${host}" == "cvttdata" ] if [ "${host}" == "cvttdata" ]
then then
ArchiveRootDir=/home/cvtt/prod/archive/md_archive ArchiveRootDir=/home/cvtt/prod/archive/md_archive/crypto/cvttdata
CredKey=TSDB_MD_CVTTDATA_RO CredKey=TSDB_MD_CVTTDATA_RO
elif [ "${host}" == "cloud21.cryptovaltrading.com" ] elif [ "${host}" == "cloud21" ]
then then
ArchiveRootDir=/opt/store/cvtt/archive/md_archive ArchiveRootDir=/home/cvtt/prod/archive/md_archive/crypto/cloud21
CredKey=TSDB_MD_CLD21_RO CredKey=TSDB_MD_CLD21_RO
else else
echo "Unknown host ${host}. ${0} Aborted." echo "Unknown host ${host}. ${0} Aborted."
@@ -21,7 +21,7 @@ fi
mkdir -p ${ArchiveRootDir} mkdir -p ${ArchiveRootDir}
yesterday=$(date -d "yesterday" +%Y%m%d) yesterday=$(date -d "yesterday" +%Y%m%d)
Schemas=${1} Schemas=${2}
if [ "${Schemas}" == "" ] if [ "${Schemas}" == "" ]
then then
Schemas="coinbase,bnbspot,bnbfut" Schemas="coinbase,bnbspot,bnbfut"
+8 -3
View File
@@ -5,6 +5,7 @@ declare -A git_repo_arr
git_repo_arr[cvttpy]=git@cloud21.cvtt.vpn:/opt/store/git/cvttpy.git git_repo_arr[cvttpy]=git@cloud21.cvtt.vpn:/opt/store/git/cvttpy.git
git_repo_arr[ops]=git@cloud21.cvtt.vpn:/opt/store/git/ops.git git_repo_arr[ops]=git@cloud21.cvtt.vpn:/opt/store/git/ops.git
git_repo_arr[research]=git@cloud21.cvtt.vpn:/opt/store/git/research.git
default_project=cvttpy default_project=cvttpy
default_branch=master default_branch=master
@@ -63,6 +64,13 @@ else
fi fi
tmp_dir=$(mktemp -d) tmp_dir=$(mktemp -d)
function cleanup {
cd ${HOME}
rm -rf ${tmp_dir}
}
trap cleanup EXIT
prj_dir="${tmp_dir}/${prj}" prj_dir="${tmp_dir}/${prj}"
cmd_arr=() cmd_arr=()
@@ -149,7 +157,4 @@ do
pwd && echo ${cmd} && eval ${cmd} pwd && echo ${cmd} && eval ${cmd}
done done
cd ${HOME}
rm -rf ${tmp_dir}
echo "$0 Done ${project} ${release_version}" echo "$0 Done ${project} ${release_version}"
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
host=${1}
date=${2}
DockerRegistry=cloud21.cvtt.vpn:5500
DockerImage=${DockerRegistry}/crypto_md_day
if [ -z ${date} ] ; then
date=$(date -d "yesterday" +%Y%m%d)
fi
Cmd="docker run"
Cmd="${Cmd} --network=host"
Cmd="${Cmd} --name=crypto_md_day.${host}.${date}"
Cmd="${Cmd} --rm"
Cmd="${Cmd} ${DockerImage}"
Cmd="${Cmd} -h ${host}"
Cmd="${Cmd} -d ${date}"
Cmd="${Cmd} -s coinbase,bnbspot,bnbfut"
echo $Cmd
eval $Cmd
+29 -10
View File
@@ -15,7 +15,6 @@ Sender=${RootDir}/ops/utils/send_mmost.sh
Hosts= Hosts=
Hosts="${Hosts} cloud11.cvtt.vpn" Hosts="${Hosts} cloud11.cvtt.vpn"
Hosts="${Hosts} cloud14.cvtt.vpn"
Hosts="${Hosts} cloud15.cvtt.vpn" Hosts="${Hosts} cloud15.cvtt.vpn"
Hosts="${Hosts} cloud16.cvtt.vpn" Hosts="${Hosts} cloud16.cvtt.vpn"
Hosts="${Hosts} cloud17.cvtt.vpn" Hosts="${Hosts} cloud17.cvtt.vpn"
@@ -23,26 +22,38 @@ Hosts="${Hosts} cloud21.cvtt.vpn"
Hosts="${Hosts} cloud22.cryptovaltrading.com" Hosts="${Hosts} cloud22.cryptovaltrading.com"
Hosts="${Hosts} cvttdata.cvtt.vpn" Hosts="${Hosts} cvttdata.cvtt.vpn"
Hosts="${Hosts} cryptoval1.cvtt.vpn"
Hosts="${Hosts} cryptoval2.cvtt.vpn" Hosts="${Hosts} cryptoval2.cvtt.vpn"
Hosts="${Hosts} cryptoval3.cvtt.vpn" Hosts="${Hosts} cryptoval3.cvtt.vpn"
Hosts="${Hosts} homestore.cvtt.vpn" Hosts="${Hosts} homestore.cvtt.vpn"
Hosts="${Hosts} nsbackup.cvtt.vpn" Hosts="${Hosts} nsbackup.sheynin.home"
Hosts="${Hosts} dtvmhost.cvtt.vpn" Hosts="${Hosts} dtvmhost.cvtt.vpn"
Hosts="${Hosts} ops-server.cvtt.vpn" Hosts="${Hosts} ops-server.cvtt.vpn"
Hosts="${Hosts} cvtt-prod-01.cvtt.vpn" Hosts="${Hosts} cvtt-prod-01.cvtt.vpn"
Hosts="${Hosts} cvtt-prod-02.cvtt.vpn" Hosts="${Hosts} cvtt-prod-02.cvtt.vpn"
Hosts="${Hosts} cvtt-prod-03.cvtt.vpn"
Metrics=()
TempFiles=
function cleanup {
echo Cleaing up temporary files: ${TempFiles}
if [ "" != "${TempFiles}" ]; then
rm -f ${TempFiles}
fi
}
trap cleanup EXIT
function space_alert() { function space_alert() {
ALERT_USAGE=75% ALERT_USAGE=75%
for ln in "${Measurements[@]}" for metric in "${Metrics[@]}"
do do
IFS=$' '; args=($ln); unset IFS IFS=$' '; args=($metric); unset IFS
host=${args[0]} host=${args[0]}
fs=${args[1]} fs=${args[1]}
space_used=${args[2]} space_used=${args[2]}
if [ ${space_used%?} -ge ${ALERT_USAGE%?} ]; then if [ ${space_used%?} -ge ${ALERT_USAGE%?} ]; then
echo ":red_circle: Filesystem **${host}:${fs}** is using **${space_used}** :red_circle:" echo ":red_circle: Filesystem **${host}:${fs}** is using **${space_used}** :red_circle:"
fi fi
@@ -53,6 +64,7 @@ function storage_check() {
result_lines=() result_lines=()
declare -a SingleMeas
for host in ${Hosts} for host in ${Hosts}
do do
if [[ "${host}" == *"cryptovaltrading.com" ]]; then if [[ "${host}" == *"cryptovaltrading.com" ]]; then
@@ -71,7 +83,12 @@ function storage_check() {
do do
IFS=$' '; args=($ln); unset IFS IFS=$' '; args=($ln); unset IFS
res="${args[5]}| **${host}** | ***${args[6]}*** | *${args[5]}* |" res="${args[5]}| **${host}** | ***${args[6]}*** | *${args[5]}* |"
result_lines+=("$res") result_lines+=("$res")
fs=${args[6]}
used=${args[5]}
Metrics+=("$host $fs $used")
done done
unset IFS unset IFS
done done
@@ -82,7 +99,11 @@ function storage_check() {
} }
tmpfile=$(mktemp) tmpfile=$(mktemp)
TempFiles="${TempFiles} ${tmpfile}"
tmpfile2=$(mktemp) tmpfile2=$(mktemp)
TempFiles="${TempFiles} ${tmpfile2}"
storage_check > ${tmpfile2} storage_check > ${tmpfile2}
echo "## :card_file_box: STORAGE HEALTH CHECK" >> ${tmpfile} echo "## :card_file_box: STORAGE HEALTH CHECK" >> ${tmpfile}
@@ -91,17 +112,15 @@ echo "| host | filesystem | usage |" >> ${tmpfile}
echo "| --- | --- | --- |" >> ${tmpfile} echo "| --- | --- | --- |" >> ${tmpfile}
cat ${tmpfile2} | sort -h -r | awk -F'%' '{printf "%s%%%s\n",$2,$3}' >> ${tmpfile} cat ${tmpfile2} | sort -h -r | awk -F'%' '{printf "%s%%%s\n",$2,$3}' >> ${tmpfile}
cat ${tmpfile} | ${Sender} ${StatusChannel} cat ${tmpfile} | ${Sender} ${StatusChannel}
rm ${tmpfile} ${tmpfile2}
Measurements=()
tmpfile=$(mktemp) tmpfile=$(mktemp)
TempFiles="${TempFiles} ${tmpfile}"
space_alert > ${tmpfile} space_alert > ${tmpfile}
cat ${tmpfile}
if [ -s ${tmpfile} ] if [ -s ${tmpfile} ]
then then
(echo "### :card_file_box: STORAGE ALERTS" && cat ${tmpfile}) | ${Sender} ${AlertChannel} (echo "### :card_file_box: STORAGE ALERTS" && cat ${tmpfile}) | ${Sender} ${AlertChannel}
else else
echo File ${tmpfile} is empty echo "No Storage Alerts"
fi fi
rm ${tmpfile}
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
# Collect all "A" files
letter=${1}
if [ "${letter}" == "" ]; then
echo "Usage $0 <letter>"
exit 1
fi
# copy text data to local location
rsync -ahv /home/cvtt/host_drive/eqt_hist_md/txt/${letter} /home/cvtt/tmp/txt/
# create db files
PYTHONPATH=/home/cvtt/prod /home/cvtt/.pyenv/python3.10-venv/bin/python3 /home/cvtt/prod/cvttpy/trading/mkt_data/ad_hoc/eqt_md_to_db.py /home/cvtt/tmp/txt/${letter} /home/cvtt/tmp/db
if [ "$?" != "0" ] ; then
exit
fi
# Move all files to host drive
# a) create file list
(cd /home/cvtt/tmp/db/ && find . -name '*db' -print | grep "/${letter}/") > /home/cvtt/tmp/tran_db/${letter}_files
echo ${letter} is done
exit
# b) rsync files to host drive
rsync -ahv --remove-source-files --files-from=/home/cvtt/tmp/tran_db/${letter}_files /home/cvtt/tmp/db/ cvtt@my-vm-host:/localdisk/cvtt/eqt_hist_md/db/
# Clean directories
( cd /home/cvtt/tmp/db && (for d in $(find . -name $letter -type d -print); do echo $d ; done) | grep -v /$letter/$letter | xargs rm -rf) && rm -rf /home/cvtt/tmp/txt/${letter}
+13 -11
View File
@@ -1,5 +1,17 @@
#!/bin/bash #!/bin/bash
# ----- Settings
LocalSoftwareDir=${HOME}/software/cvtt2
ProdDir=${HOME}/prod
ReleaseHosts=("cloud21.cvtt.vpn")
ReleasePorts=("22")
ReleaseUsers=("cvttdist")
ReleaseDir=("/home/cvttdist/software/cvtt2")
# ----- Settings
function usage() { function usage() {
echo "Usage: ${0} <project> <version>" echo "Usage: ${0} <project> <version>"
exit 1 exit 1
@@ -18,17 +30,6 @@ then
Version=latest Version=latest
fi fi
# ----- Settings
LocalSoftwareDir=${HOME}/software/cvtt2
ProdDir=${HOME}/prod
ReleaseHosts=("cloud21.cvtt.vpn")
ReleasePorts=("22")
ReleaseUsers=("cvttdist")
ReleaseDir=("/home/cvttdist/software/cvtt2")
# ----- Settings
function rsync_load_version() { function rsync_load_version() {
for idx in "${!ReleaseHosts[@]}" for idx in "${!ReleaseHosts[@]}"
do do
@@ -68,6 +69,7 @@ function rsync_load_version() {
} }
mkdir -p ${LocalSoftwareDir} mkdir -p ${LocalSoftwareDir}
mkdir -p ${ProdDir}
# exists and not empty # exists and not empty
rsync_load_version rsync_load_version
+58
View File
@@ -0,0 +1,58 @@
#!/bin/bash
Src=${1}
Days=${2}
if [ -z "$Days" ] || [ -z "$Src" ]; then
echo "Usage: $0 <source_dir> <num_days>"
exit 1
fi
# Add / if Src does not have it (symlinks)
if [ "${Src: -1}" != "/" ]; then
Src="${Src}/"
fi
declare -A Settings=()
Settings[Src]=${Src}
Settings[PruneDate]=$(date -d "${Days} days ago" '+%Y-%m-%d')
src=${Settings[Src]}
prune_date=${Settings[PruneDate]}
echo "Finding files older than ${prune_date} in ${Src} ..."
Cmd="find ${src} -type f ! -newermt \"${prune_date}\""
echo ${Cmd}
files=($(eval ${Cmd}))
total_files=${#files[*]}
if [[ ${total_files} == 0 ]]
then
echo "No files found to be pruned. Bye..."
exit 0
fi
echo Before Pruning....
duf ${src}
echo "The following files will be removed:"
echo "===================================="
for f in $files ; do ls -l $f; done
echo "===================================="
echo "Total files to be pruned: ${total_files}"
echo "Removing files..."
Cmd="${Cmd} -print -delete"
echo ${Cmd}
eval ${Cmd}
echo "Removing empty directories..."
Cmd="find ${src} -type d -empty -print -delete"
echo ${Cmd}
eval ${Cmd}
echo After Pruning....
duf ${src}
echo $0 Done
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
Source=/home/cvtt/prod/archive/md_archive/
Targets=
Targets="${Targets} oleg@homestore.cvtt.vpn:/works/cvtt/md_archive/"
Targets="${Targets} cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/"
for tgt in ${Targets}
do
Cmd="/usr/bin/rsync -ahv ${Source} ${tgt}"
echo $Cmd
eval $Cmd
done