Compare commits

..

12 Commits

Author SHA1 Message Date
Cryptoval2 fda425c680 eqt sim data to dated target directory - fix 2025-09-13 20:48:04 +00:00
Cryptoval2 52ce7d3f55 eqt sim data to dated target directory 2025-09-13 20:40:40 +00:00
Cryptoval2 64d9408506 fix 2025-09-13 19:39:02 +00:00
Cryptoval2 d427e22d41 crypto sim -> dated target directory 2025-09-12 23:01:51 +00:00
oleg 0647e9d9b7 fix 2025-05-18 21:43:53 -04:00
oleg 66d2840a74 eqt 2025-05-18 21:38:09 -04:00
oleg b4dfecf12a test 2025-05-18 21:25:34 -04:00
oleg 7f47905579 testing 2025-05-18 21:17:55 -04:00
oleg 08636b2206 fix 2025-05-18 20:56:40 -04:00
oleg 3b1a1fc9ba eqt initial 2025-05-18 20:46:58 -04:00
oleg 19c7313326 progress 2025-05-18 19:40:08 -04:00
oleg e23ddd5e44 progress 2025-05-18 19:35:51 -04:00
8 changed files with 56 additions and 471 deletions
+1 -1
View File
@@ -1 +1 @@
2.1.6,docker prepare sim - crypto - progress 2.2.8
@@ -1,44 +0,0 @@
#!/bin/bash
usage() {
echo "Usage: ${0} <docker_image_tag> <host> [<date>]"
exit 1
}
# ------- Settings
DockerRegistry=cloud21.cvtt.vpn:5500
# ------- Settings
ImageTag=${1}
host=${2}
date=${3}
if [ -z ${ImageTag} ] ; then
usage
fi
if [ -z ${host} ] ; then
usage
fi
if [ -z ${date} ] ; then
date=$(date -d "yesterday" +%Y%m%d)
fi
DockerImage=${DockerRegistry}/crypto_md_day:${ImageTag}
Cmd="docker run"
Cmd+=" --pull=always"
Cmd+=" --network=host"
Cmd+=" --name=crypto_md_day.${host}.${date}"
Cmd+=" --rm"
Cmd+=" --volume=${HOME}/.creds:/.creds"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" ${DockerImage}"
Cmd+=" -h ${host}"
Cmd+=" -d ${date}"
# Cmd+=" -s coinbase,bnbspot,bnbfut"
Cmd+=" -s coinbase,bnbspot"
echo $Cmd
eval $Cmd
@@ -1,66 +0,0 @@
#!/bin/bash
ValidJobs=('BNBFUT_CLD21' 'BNBSPOT_CLD21' 'COINBASE_CLD21' 'BNBFUT_CVTTDATA' 'BNBSPOT_CVTTDATA' 'COINBASE_CVTTDATA')
# runs on host to start container
usage() {
echo "Usage: $0 <job_name; one of (${ValidJobs[@]})> [image_tag]"
exit 1
}
is_valid() {
local job=$1
for valid_job in "${ValidJobs[@]}";
do
# echo "job=$job valid_job=$valid_job"
if [[ "${job}" == "${valid_job}" ]]; then
return 0
fi
done
return 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
job=${1}
if ! is_valid "${job}"; then
usage
fi
ImageTag=${2}
if [ "${ImageTag}" == "" ] ; then
ImageTag="1.6.9"
fi
DockerImage=cloud21.cvtt.vpn:5500/md_recorder:${ImageTag}
ContainerName="md_recorder.${job}"
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running. Aborted."
exit
fi
Cmd="docker run"
Cmd+=" -d"
Cmd+=" --rm"
Cmd+=" --network=host"
# Cmd+=" --pull=always"
Cmd+=" --name=${ContainerName}"
Cmd+=" -v /home/cvtt/.creds:/.creds"
Cmd+=" -v /home/cvtt/prod/data:/app/data"
Cmd+=" -v /home/cvtt/prod/logs:/logs"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" ${DockerImage}"
Cmd+=" ${job}"
echo ${Cmd}
eval ${Cmd}
@@ -1,60 +0,0 @@
#!/bin/bash
usage() {
echo "Usage: $0 <instance (CLD21,CVTTDATA)> [<admin_port (def. 7225)>]"
exit 1
}
ValidInstances=('CLD21' 'CVTTDATA')
is_valid() {
local inst=$1
for valid_inst in "${ValidInstances[@]}";
do
if [[ "$inst" == "$valid_inst" ]]; then
return 0
fi
done
return 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
Instance=${1}
if ! is_valid "${Instance}"; then
usage
fi
AdminPort=7225
if [ "${2}" != "" ]; then
AdminPort=${2}
fi
ContainerName="md_recorder_monitor.${Instance}"
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running. Aborted."
exit
fi
Cmd="docker run"
Cmd+=" -d"
Cmd+=" --rm"
Cmd+=" --network=host"
Cmd+=" --pull=always"
Cmd+=" --name=${ContainerName}"
Cmd+=" -v /home/cvtt/.creds:/.creds"
Cmd+=" -v /home/cvtt/prod/logs:/logs"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" cloud21.cvtt.vpn:5500/md_recorder_monitor:latest"
Cmd+=" ${Instance} ${AdminPort}"
echo ${Cmd}
eval ${Cmd}
-113
View File
@@ -1,113 +0,0 @@
#!/bin/bash
usage() {
echo "Usage: $0 -N <num_symbols> [-L <LogDir>] [-d <YYYYMMDD Date>] [-t <docker_image_tag>]"
exit 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
export CalendarURL=https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS
is_business_day() {
dt=${1}
open_time=$(curl -s "${CalendarURL}&start=${dt}&end=${dt}" | jq '.[] | .open_time')
if [ -n "${open_time}" ]; then
return 0
else
return 1
fi
}
export -f is_business_day
get_prev_business_day() {
Start=${1}
while true; do
if is_business_day ${Start}; then
break
fi
echo "${Start} is not business day in US" >&2
Start=$(date -d "${Start} - 1 day" "+%Y-%m-%d")
done
echo ${Start}
}
export -f get_prev_business_day
# ----- Settings
DockerRegistry=cloud21.cvtt.vpn:5500
ContainerName=alpaca_hbar
LogDir=/home/cvtt/prod/logs
ImageTag=0.1.7
# ----- Settings
while getopts ":d:N:L:t:" opt; do
case ${opt} in
d )
date_to_load=$OPTARG
;;
N )
NumSymbols=$OPTARG
;;
L )
LogDir=$OPTARG
;;
t )
ImageTag=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
DockerImage=${DockerRegistry}/alpaca_hbar:${ImageTag} #:latest
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running."
exit 3
fi
if [ -z "${date_to_load}" ]; then
echo "date_to_load is empty"
date_to_load=$(get_prev_business_day $(date -d "yesterday" '+%Y-%m-%d'))
echo "Historical Data for ${date_to_load}"
fi
echo "date_to_load=${date_to_load}"
Cmd="docker run"
Cmd+=" --pull=always"
Cmd+=" --network=host"
Cmd+=" --name=${ContainerName}"
Cmd+=" --rm"
Cmd+=" --volume=${LogDir}:/logs"
Cmd+=" --volume=${HOME}/.creds:/.creds"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" ${DockerImage}"
Cmd+=" -d ${date_to_load}"
if [ -n "${NumSymbols}" ]; then
Cmd+=" -N ${NumSymbols}"
fi
echo $Cmd
eval $Cmd
if [ "$?" != "0" ] ; then
exit 1 # if killed we do not save last day
fi
-115
View File
@@ -1,115 +0,0 @@
#!/bin/bash
usage() {
echo "Usage: $0 -S <symbols> [-L <LogDir>] [-d <YYYYMMDD Date>] [-t <docker_image_tag>]"
exit 1
}
is_container_running() {
local container_name=$1
if [ "$(docker ps --filter "name=^/${container_name}$" --filter "status=running" -q)" ]; then
return 0 # true
else
return 1 # false
fi
}
export CalendarURL=https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS
is_business_day() {
dt=${1}
open_time=$(curl -s "${CalendarURL}&start=${dt}&end=${dt}" | jq '.[] | .open_time')
if [ -n "${open_time}" ]; then
return 0
else
return 1
fi
}
export -f is_business_day
get_prev_business_day() {
Start=${1}
while true; do
if is_business_day ${Start}; then
break
fi
echo "${Start} is not business day in US" >&2
Start=$(date -d "${Start} - 1 day" "+%Y-%m-%d")
done
echo ${Start}
}
export -f get_prev_business_day
# ----- Settings
DockerRegistry=cloud21.cvtt.vpn:5500
ContainerName=alpaca_qat
LogDir=/home/cvtt/prod/logs
ImageTag=0.1.7
# ----- Settings
while getopts ":d:S:L:t:" opt; do
case ${opt} in
d )
date_to_load=$OPTARG
;;
S )
Symbols=$OPTARG
;;
L )
LogDir=$OPTARG
;;
t )
ImageTag=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
if [ -z ${Symbols} ] ; then
echo "symbols are not specified"
usage
fi
if is_container_running "$ContainerName"; then
echo "Container ${ContainerName} is already running."
exit 3
fi
DockerImage=${DockerRegistry}/alpaca_qat:${ImageTag} #:latest
if [ -z "${date_to_load}" ]; then
echo "date_to_load is empty"
date_to_load=$(get_prev_business_day $(date -d "yesterday" '+%Y-%m-%d'))
echo "Historical Data for ${date_to_load}"
fi
echo "date_to_load=${date_to_load}"
Cmd="docker run"
Cmd+=" --pull=always"
Cmd+=" --network=host"
Cmd+=" --name=${ContainerName}"
Cmd+=" --rm"
Cmd+=" --volume=${LogDir}:/logs"
Cmd+=" --volume=${HOME}/.creds:/.creds"
Cmd+=" -e CONFIG_SERVICE=cloud16.cvtt.vpn:6789"
Cmd+=" ${DockerImage}"
Cmd+=" -d ${date_to_load}"
Cmd+=" -S ${Symbols}"
echo $Cmd
eval $Cmd
if [ "$?" != "0" ] ; then
exit 1 # if killed we do not save last day
fi
@@ -24,15 +24,20 @@ mkdir -p ${OUTPUT_DIR}
year=$(date -d ${DATE} +"%Y") year=$(date -d ${DATE} +"%Y")
month=$(date -d ${DATE} +"%m") month=$(date -d ${DATE} +"%m")
SourceDir="${SOURCE_ROOT_DIR}/${DB_SOURCE}/${year}/${month}" SourceDir="${SOURCE_ROOT_DIR}/${DB_SOURCE}/${year}/${month}"
SourceFile="${SourceDir}/${DATE}.mktdata.db.gz" SourceFile="${DATE}.mktdata.db.gz"
SourceFilePath="${SourceDir}/${SourceFile}"
Cmd="rsync -ahv" Cmd="/usr/bin/rsync -ahv"
Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'" Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
Cmd+=" ${SOURCE_HOST}:${SourceFile}" Cmd+=" ${SOURCE_HOST}:${SourceFilePath}"
Cmd+=" $OUTPUT_DIR/" Cmd+=" $OUTPUT_DIR/"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
if [ ! -f ${OUTPUT_DIR}/${SourceFile} ] ; then
echo "File ${OUTPUT_DIR}/${SourceFile} NOT FOUND"
exit
fi
Cmd="(cd ${OUTPUT_DIR} && gunzip -f *.db.gz)" Cmd="(cd ${OUTPUT_DIR} && gunzip -f *.db.gz)"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
@@ -227,7 +232,10 @@ echo ${Cmd}
eval ${Cmd} eval ${Cmd}
for tgt in ${RSYNC_TARGETS} ; do for tgt in ${RSYNC_TARGETS} ; do
Cmd="rsync -ahvv ${ResultDbFile}.gz ${tgt}" tgt="${tgt}/${year}/${month}/"
Cmd="/usr/bin/rsync -ahv"
Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
Cmd+=" ${ResultDbFile}.gz ${tgt}"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
done done
@@ -1,23 +1,27 @@
#!/bin/bash #!/bin/bash
usage() {
echo "Usage: $0 -S <symbols> -d <YYYYMMDD Date> [-O <output dir (./) >]"
exit 1
}
# --------------------- Settings # --------------------- Settings
SourceHost=cloud21.cvtt.vpn # SOURCE_HOST=cloud21.cvtt.vpn
SourceRootDir=/opt/store/cvtt/md_archive/equity/alpaca_md # SOURCE_ROOT_DIR=/opt/store/cvtt/md_archive/equity/alpaca_md
# SYMBOL_LIST=CAN #,COIN,GBTC,HOOD,MSTR,PYPL,XYZ
# OUTPUT_DIR=/tmp
# DATE=20250514
# RSYNC_TARGETS="cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/equity/test/alpaca_md/sim/"
# RSYNC_TARGETS="cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/equity/alpaca_md/sim/
#cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/equity/alpaca_md/sim/"
# --------------------- Settings # --------------------- Settings
is_business_day() { is_business_day() {
dt=${1} dt=${1}
date=$(date -d "${dt}" +"%Y-%m-%d") date=$(date -d "${dt}" +"%Y-%m-%d")
CalendarURL=https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS CalendarURL=https://trading-calendar.cvtt.net/api/v1/markets/hours?mic=XNYS
URL="${CalendarURL}&start=${date}&end=${date}" URL="${CalendarURL}&start=${date}&end=${date}"
echo "URL=${URL}"
# curl $URL
open_time=$(curl -s "${URL}" | jq '.[] | .open_time') open_time=$(curl -s "${URL}" | jq '.[] | .open_time')
echo "open_time=${open_time}"
if [ -n "${open_time}" ]; then if [ -n "${open_time}" ]; then
return 0 return 0
else else
@@ -27,79 +31,54 @@ is_business_day() {
} }
export -f is_business_day export -f is_business_day
if [ -z ${SYMBOL_LIST} ] ; then
while getopts ":d:S:O:" opt; do
case ${opt} in
d )
Date=$OPTARG
;;
S )
SymList=$OPTARG
;;
O )
OutputDir=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
if [ -z ${SymList} ] ; then
echo "symbols are not specified" echo "symbols are not specified"
usage exit
fi fi
if [ -z ${Date} ] ; then if [ -z ${DATE} ] ; then
echo "date is not specified" DATE=$(date -d 'yesterday' +'%Y%m%d')
usage
fi fi
if [ -z ${OutputDir} ] ; then
OutputDir=.
fi
mkdir -p ${OutputDir}
if ! is_business_day ${Date}; then mkdir -p ${OUTPUT_DIR}
echo "${Date} is not business day"
usage if ! is_business_day ${DATE}; then
echo "${DATE} is not business day"
exit
fi fi
OLD_IFS=${IFS} OLD_IFS=${IFS}
IFS="," IFS=","
read -ra Symbols <<< "${SymList}" read -ra Symbols <<< "${SYMBOL_LIST}"
IFS=${OLD_IFS} IFS=${OLD_IFS}
echo "Date=${Date} Symbols=${Symbols[@]} OutputDir=${OutputDir}" echo "DATE=${DATE} Symbols=${Symbols[@]} OUTPUT_DIR=${OUTPUT_DIR}"
echo Getting data from ${DataHost} ... echo Getting data from ${DataHost} ...
year=$(date -d ${Date} +"%Y") year=$(date -d ${DATE} +"%Y")
month=$(date -d ${DATE} +"%m")
for sym in ${Symbols[@]}; do for sym in ${Symbols[@]}; do
inst_id="STOCK-${sym}" inst_id="STOCK-${sym}"
capital=${sym:0:1} capital=${sym:0:1}
SourceDir="${SourceRootDir}/${year}/${capital}/${sym}" SourceDir="${SOURCE_ROOT_DIR}/${year}/${capital}/${sym}"
SourceHbarFile="${SourceDir}/${Date}.${sym}.alpaca_1m_bars.db.gz" SourceHbarFile="${SourceDir}/${DATE}.${sym}.alpaca_1m_bars.db.gz"
SourceQatFile="${SourceDir}/${Date}.${sym}.alpaca_qat.db.gz" SourceQatFile="${SourceDir}/${DATE}.${sym}.alpaca_qat.db.gz"
for src_file in ${SourceHbarFile} ${SourceQatFile}; do for src_file in ${SourceHbarFile} ${SourceQatFile}; do
Cmd="rsync -ahv" Cmd="rsync -ahv"
Cmd+=" ${SourceHost}:${src_file}" Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
Cmd+=" $OutputDir/" Cmd+=" ${SOURCE_HOST}:${src_file}"
Cmd+=" $OUTPUT_DIR/"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
done done
done done
Cmd="(cd ${OutputDir} && gunzip *.db.gz)" Cmd="(cd ${OUTPUT_DIR} && gunzip *.db.gz)"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
ResultDbFile="${OutputDir}/${Date}.alpaca_sim_md.db" ResultDbFile="${OUTPUT_DIR}/${DATE}.alpaca_sim_md.db"
echo "Creating Result Database File ${ResultDbFile}"
echo "Creating Result Database File ${ResultDbFile}" echo "Creating Result Database File ${ResultDbFile}"
echo "Creating table md_trades ..." echo "Creating table md_trades ..."
@@ -163,8 +142,8 @@ EOF
# set -f # not to expand * # set -f # not to expand *
for sym in ${Symbols[@]}; do for sym in ${Symbols[@]}; do
src_hbar_db=${OutputDir}/${Date}.${sym}.alpaca_1m_bars.db src_hbar_db=${OUTPUT_DIR}/${DATE}.${sym}.alpaca_1m_bars.db
src_qat_db=${OutputDir}/${Date}.${sym}.alpaca_qat.db src_qat_db=${OUTPUT_DIR}/${DATE}.${sym}.alpaca_qat.db
echo "Loading md_trades and md_quotes from ${src_qat_db} ..." echo "Loading md_trades and md_quotes from ${src_qat_db} ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
@@ -233,16 +212,12 @@ Cmd="gzip ${ResultDbFile}"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/equity/alpaca_md/sim/" for tgt in ${RSYNC_TARGETS} ; do
echo ${Cmd} Cmd="/usr/bin/rsync -ahv"
eval ${Cmd} Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
Cmd+=" ${ResultDbFile}.gz ${tgt}/${year}/${month}/"
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/equity/alpaca_md/sim/" echo ${Cmd}
echo ${Cmd} eval ${Cmd}
eval ${Cmd} done
Cmd="rm ${ResultDbFile}.gz"
echo ${Cmd}
eval ${Cmd}
echo Done $0 ${*} echo Done $0 ${*}