Compare commits

..

12 Commits

Author SHA1 Message Date
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
oleg 9bb868845f fix 2025-05-18 19:11:19 -04:00
oleg aced5b23e0 progress 2025-05-18 19:05:25 -04:00
oleg 9eb4f8e117 daily sim for docker.initial 2025-05-18 18:42:08 -04:00
oleg 3e49b5bf27 Merge branch 'master' of cloud21.cvtt.vpn:/opt/store/git/cvtt2/ops 2025-05-17 23:29:01 -04:00
oleg 0876776d60 progress 2025-05-17 19:30:00 -04:00
Cryptoval2 fb685ca91d cleaning 2025-05-16 16:00:44 +00:00
7 changed files with 96 additions and 172 deletions
+1 -1
View File
@@ -1 +1 @@
2.1.3,remove cvttdata 2.2.2.T2,docker prepare sim - eqt - fix
@@ -1,112 +1,60 @@
#!/bin/bash #!/bin/bash
# SQLite DDL for simulation
# =========================
# -- md_quotes
# -- md_1min_bars
usage() {
echo -n "Usage: $0"
echo -n " -d YYYMMDD Date>"
echo -n " [-O <output dir (./) >]"
echo -n " [-S <archive_source_host (cloud21)>]"
echo -n " [-D <orig_db_source> (cloud21)]"
echo
exit 1
}
# --------------------- Settings # --------------------- Settings
SourceHost=cloud21 # SOURCE_HOST=cloud21.cvtt.vpn
SourceRootDir=/opt/store/cvtt/md_archive/crypto # SOURCE_ROOT_DIR=/opt/store/cvtt/md_archive/crypto
DbSource=cloud21 # DB_SOURCE=cloud28
# OUTPUT_DIR=/tmp
# DATE=20250516
# RSYNC_TARGETS="cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/sim/ cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/crypto/sim/"
# --------------------- Settings # --------------------- Settings
while getopts ":d:O:S:D:" opt; do if [ -z ${DATE} ] ; then
case ${opt} in DATE=$(date -d 'yesterday' +'%Y%m%d')
d )
Date=$OPTARG
;;
O )
OutputDir=$OPTARG
;;
S )
SourceHost=$OPTARG
;;
D )
DbSource=$OPTARG
;;
\? )
echo "Invalid option: -$OPTARG" >&2
usage
;;
: )
echo "Option -$OPTARG requires an argument." >&2
usage
;;
esac
done
if [ -z ${Date} ] ; then
echo "date is not specified"
usage
fi
if [ -z ${OutputDir} ] ; then
OutputDir=.
fi fi
SourceHost+=".cvtt.vpn" if [ -z ${OUTPUT_DIR} ] ; then
mkdir -p ${OutputDir} OUTPUT_DIR=.
fi
# --- Binance echo "DATE=${DATE} SOURCE_HOST=${SOURCE_HOST}"
Instruments=( PAIR-ADA-USDT )
Instruments+=( PAIR-BCH-USDT )
Instruments+=( PAIR-BTC-USDT )
Instruments+=( PAIR-DOT-USDT )
Instruments+=( PAIR-ETH-USDT )
Instruments+=( PAIR-LTC-USDT )
Instruments+=( PAIR-SOL-USDT )
Instruments+=( PAIR-USDC-USDT )
Instruments+=( PAIR-XRP-USDT )
# --- Coinbase mkdir -p ${OUTPUT_DIR}
Instruments+=( PAIR-ADA-USD )
Instruments+=( PAIR-BCH-USD )
Instruments+=( PAIR-BTC-USD )
Instruments+=( PAIR-DOT-USD )
Instruments+=( PAIR-ETH-USD )
Instruments+=( PAIR-LTC-USD )
Instruments+=( PAIR-SOL-USD )
Instruments+=( PAIR-XRP-USD )
echo "Date=${Date} Instruments=${Instruments[@]} OutputDir=${OutputDir}" year=$(date -d ${DATE} +"%Y")
echo Getting data from ${DataHost} ... month=$(date -d ${DATE} +"%m")
SourceDir="${SOURCE_ROOT_DIR}/${DB_SOURCE}/${year}/${month}"
SourceFile="${DATE}.mktdata.db.gz"
SourceFilePath="${SourceDir}/${SourceFile}"
year=$(date -d ${Date} +"%Y") Cmd="/usr/bin/rsync -ahv"
month=$(date -d ${Date} +"%m") Cmd+=" -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'"
SourceDir="${SourceRootDir}/${DbSource}/${year}/${month}" Cmd+=" ${SOURCE_HOST}:${SourceFilePath}"
SourceFile="${SourceDir}/${Date}.mktdata.db.gz" Cmd+=" $OUTPUT_DIR/"
Cmd="rsync -ahv"
Cmd+=" ${SourceHost}:${SourceFile}"
Cmd+=" $OutputDir/"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
Cmd="(cd ${OutputDir} && gunzip *.db.gz)" if [ ! -f ${OUTPUT_DIR}/${SourceFile} ] ; then
echo "File ${OUTPUT_DIR}/${SourceFile} NOT FOUND"
exit
fi
Cmd="(cd ${OUTPUT_DIR} && gunzip -f *.db.gz)"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
SourceDbFile="${OutputDir}/${Date}.mktdata.db" SourceDbFile="${OUTPUT_DIR}/${DATE}.mktdata.db"
ResultDbFile="${OutputDir}/${Date}.crypto_sim_md.db" ResultDbFile="${OUTPUT_DIR}/${DATE}.crypto_sim_md.db"
echo "SourceDbFile=${SourceDbFile}"
echo "Creating Result Database File ${ResultDbFile}" echo "Creating Result Database File ${ResultDbFile}"
cleanup() {
rm ${SourceDbFile}
}
trap cleanup EXIT
echo "Creating table md_trades ..." echo "Creating table md_trades ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_trades ( CREATE TABLE IF NOT EXISTS md_trades (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -119,12 +67,14 @@ CREATE TABLE IF NOT EXISTS md_trades (
condition text, condition text,
tape text tape text
); );
CREATE UNIQUE INDEX IF NOT EXISTS md_trades_uidx CREATE UNIQUE INDEX IF NOT EXISTS md_trades_uidx
ON md_trades(tstamp_ns, exchange_id, instrument_id); ON md_trades(tstamp_ns, exchange_id, instrument_id);
EOF EOF
echo "Creating table md_quotes ..." echo "Creating table md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_quotes ( CREATE TABLE IF NOT EXISTS md_quotes (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -143,6 +93,7 @@ EOF
echo "Creating table md_1min_bars ..." echo "Creating table md_1min_bars ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_1min_bars ( CREATE TABLE IF NOT EXISTS md_1min_bars (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -162,6 +113,7 @@ EOF
echo "Loading md_trades ..." echo "Loading md_trades ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_trades SELECT INSERT OR IGNORE INTO md_trades SELECT
@@ -199,6 +151,7 @@ EOF
echo "Loading md_quotes ..." echo "Loading md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_quotes SELECT INSERT OR IGNORE INTO md_quotes SELECT
@@ -237,6 +190,7 @@ EOF
echo "Loading md_1min_bars ..." echo "Loading md_1min_bars ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${SourceDbFile}' AS source_db; ATTACH '${SourceDbFile}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_1min_bars SELECT INSERT OR IGNORE INTO md_1min_bars SELECT
@@ -273,25 +227,16 @@ COMMIT;
DETACH source_db; DETACH source_db;
EOF EOF
Cmd="rm ${SourceDbFile}"
echo ${Cmd}
eval ${Cmd}
Cmd="gzip ${ResultDbFile}" Cmd="gzip ${ResultDbFile}"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@hs01.cvtt.vpn:/works/cvtt/md_archive/crypto/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}"
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/crypto/sim/"
echo ${Cmd}
eval ${Cmd}
Cmd="rm ${ResultDbFile}.gz"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
done
echo Done $0 ${*} echo Done $0 ${*}
@@ -1,13 +1,16 @@
#!/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 # --------------------- Settings
@@ -17,7 +20,11 @@ is_business_day() {
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,83 +34,56 @@ 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")
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+=" ${SOURCE_HOST}:${src_file}"
Cmd+=" $OutputDir/" 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 ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_trades ( CREATE TABLE IF NOT EXISTS md_trades (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -122,6 +102,7 @@ EOF
echo "Creating table md_quotes ..." echo "Creating table md_quotes ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
CREATE TABLE IF NOT EXISTS md_quotes ( CREATE TABLE IF NOT EXISTS md_quotes (
tstamp text, tstamp text,
tstamp_ns integer, tstamp_ns integer,
@@ -161,11 +142,12 @@ 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
.echo ON
ATTACH '${src_qat_db}' AS source_db; ATTACH '${src_qat_db}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_trades SELECT INSERT OR IGNORE INTO md_trades SELECT
@@ -200,6 +182,7 @@ EOF
echo "Loading md_1min_bars from ${src_hbar_db} ..." echo "Loading md_1min_bars from ${src_hbar_db} ..."
sqlite3 ${ResultDbFile} <<EOF sqlite3 ${ResultDbFile} <<EOF
.echo ON
ATTACH '${src_hbar_db}' AS source_db; ATTACH '${src_hbar_db}' AS source_db;
BEGIN; BEGIN;
INSERT OR IGNORE INTO md_1min_bars SELECT INSERT OR IGNORE INTO md_1min_bars SELECT
@@ -229,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}"
Cmd="rsync -ahvv ${ResultDbFile}.gz cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/equity/alpaca_md/sim/"
echo ${Cmd}
eval ${Cmd}
Cmd="rm ${ResultDbFile}.gz"
echo ${Cmd} echo ${Cmd}
eval ${Cmd} eval ${Cmd}
done
echo Done $0 ${*} echo Done $0 ${*}