#!/usr/bin/env bash # Usage: ./scripts/load_equity_pair_daily.sh -A GS -B DIA -f 20241201 -t 20250131 -T ./daily_md usage() { echo "Usage: $0 -A -B -f -t -T " exit 1 } # ---------------- cmdline while getopts "A:B:f:t:T:h" opt; do case ${opt} in h) usage ;; A ) symbolA=$OPTARG ;; B ) symbolB=$OPTARG ;; f ) from_date=$OPTARG ;; t ) to_date=$OPTARG ;; T ) target_dir=$OPTARG ;; \? ) echo "Invalid option: -$OPTARG" >&2 usage ;; : ) echo "Option -$OPTARG requires an argument." >&2 usage ;; esac done # ---------------- cmdline if [ -z ${symbolA} ] || [ -z ${symbolB} ] || [ -z ${from_date} ] ||[ -z ${to_date} ] || [ -z ${target_dir} ]; then usage fi SourceRoot=cvtt@hs01.cvtt.vpn:/mnt/usb1/md_archive/equity/alpaca_md TargetFile=$(realpath ${target_dir})/${from_date}-${to_date}.${symbolA}-${symbolB}.daily.db mkdir -p ${target_dir} || exit 1 temp_dir=$(mktemp -d) pushd ${temp_dir} clean_temp() { popd rm -rf ${temp_dir} } trap clean_temp EXIT echo " ------ Downloading..." load_symbol() { # Loop over dates from from_date to to_date symbol=${1} current_date="$from_date" while [[ "$current_date" -le "$to_date" ]]; do year=${current_date:0:4} symb_initial=${symbol:0:1} remote_path="${SourceRoot}/${year}/${symb_initial}/${symbol}/${current_date}.${symbol}.alpaca_1m_bars.db.gz" echo "Fetching: $remote_path" Cmd="rsync -avz ${remote_path} ${temp_dir}/ || echo \"Missing: ${current_date}\"" echo $Cmd eval $Cmd # Increment date current_date=$(date -d "$current_date +1 day" +"%Y%m%d") done } load_symbol ${symbolA} load_symbol ${symbolB} gunzip *.gz ls -l ${temp_dir} sqlite3 "$TargetFile" < time('16:00:00'); EOF sqlite3 $TargetFile <