Compare commits

...

18 Commits

Author SHA1 Message Date
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
10 changed files with 229 additions and 27 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.8.2 0.9.9
+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
+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"
+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
+11 -12
View File
@@ -38,18 +38,13 @@ Metrics=()
TempFiles= TempFiles=
function cleanup { function cleanup {
echo Cleaing up temporary files: ${TempFiles}
if [ "" != "${TempFiles}" ]; then if [ "" != "${TempFiles}" ]; then
rm -f ${TempFiles} rm -f ${TempFiles}
fi fi
} }
trap cleanup EXIT trap cleanup EXIT
function new_tempfile {
tmpfile=$(mktemp)
TempFiles="${TempFiles} ${tmpfile}"
}
function space_alert() { function space_alert() {
ALERT_USAGE=75% ALERT_USAGE=75%
for metric in "${Metrics[@]}" for metric in "${Metrics[@]}"
@@ -103,8 +98,12 @@ function storage_check() {
done done
} }
tmpfile=$(new_tempfile) tmpfile=$(mktemp)
tmpfile2=$(new_tempfile) TempFiles="${TempFiles} ${tmpfile}"
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}
@@ -114,14 +113,14 @@ 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}
Measurements=() tmpfile=$(mktemp)
tmpfile=$(new_tempfile) 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
+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}
+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