diff --git a/market_data/alpaca_md_day_rs/.creds b/market_data/alpaca_md_day_rs/.creds new file mode 100644 index 0000000..0a3b012 --- /dev/null +++ b/market_data/alpaca_md_day_rs/.creds @@ -0,0 +1,7 @@ +{ + "__dummy__": null + , "ALPACA_SANDBOX": { + "api_key": "PKLZSLFZMFMN1R28K9HK" + , "secret_key": "SKbxwLWJNs4kpn618DgGaopN6x1xzKwLM4Z7aymA" + } +} diff --git a/market_data/alpaca_md_day_rs/Dockerfile b/market_data/alpaca_md_day_rs/Dockerfile new file mode 100644 index 0000000..25d6149 --- /dev/null +++ b/market_data/alpaca_md_day_rs/Dockerfile @@ -0,0 +1,43 @@ +FROM linuxcontainers/debian-slim:latest + +ARG FROM_DIR=docker_dev/market_data/alpaca_md_day_rs + +# Update the package list and install required packages +RUN apt-get update && apt-get install -y \ + apt-utils + # build-essential + +RUN apt-get update && apt-get install -y \ + rsync \ + openssh-client + +RUN apt-get update && apt-get install -y \ + --no-install-recommends \ + software-properties-common \ + curl \ + jq + + + +COPY cvtt-rust/target/release/alpaca_md_loader / + +COPY ${FROM_DIR}/.creds /.creds +COPY ${FROM_DIR}/alpaca_md_day.sh /alpaca_md_day.sh + +COPY docker_dev/shared/id_rsa /root/.ssh/id_rsa +COPY docker_dev/shared/id_rsa.pub /root/.ssh/id_rsa.pub +COPY docker_dev/shared/known_hosts /root/.ssh/known_hosts + +RUN chmod 600 /root/.ssh/id_rsa /root/.ssh/id_rsa.pub /root/.ssh/known_hosts + + +# Shared Volumes +RUN mkdir -p /data +RUN mkdir /logs +RUN chmod +x /alpaca_md_day.sh + +WORKDIR / +SHELL ["/bin/bash", "-c"] +ENTRYPOINT [ "/alpaca_md_day.sh" ] + +# CMD [ "echo", "alpaca_md_day"] diff --git a/market_data/alpaca_md_day_rs/alpaca_md_day.sh b/market_data/alpaca_md_day_rs/alpaca_md_day.sh new file mode 100755 index 0000000..95d72f6 --- /dev/null +++ b/market_data/alpaca_md_day_rs/alpaca_md_day.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# --- Settings +export Bin=/alpaca_md_loader + +export OutputDir=/data/alpaca_md # Local + +# export LogDir=/logs + + +mkdir -p ${OutputDir} +mkdir -p ${LogDir} + + +usage() { + echo "Usage: $0 " + exit 1 +} + +echo "CommandLine: ${*}" + +Start=${1} + +export CalendarURL=http://cloud23.cvtt.vpn:8000/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 + + +if [ -z ${Start} ] ; then + echo "start is not specified, getting yesterday..." + Start=$(date -d "yesterday" "+%Y-%m-%d") + echo "Start=${Start}" +fi + +while true; do + if is_business_day ${Start}; then + break + fi + echo "${Start} is not business day in US" + Start=$(date -d "${Start} - 1 day" "+%Y-%m-%d") +done + + +echo "Day=${Start}" + + +Cmd="${Bin}" +Cmd="${Cmd} --output_directory=${OutputDir}" +Cmd="${Cmd} --start=${Start}" +# Cmd="${Cmd} --log_file=${LogDir}/${Inst}.log" +# Cmd="${Cmd} --log_level=WARNING" +echo ${Cmd} +eval ${Cmd} + +echo "Compressing" +for file in $(find ${OutputDir} -type f -name '*db' -print ) +do + echo "Compressing ${file}" + gzip ${file} +done + + +Source=/data/ +Targets= +Targets="${Targets} cvtt@homestore.cvtt.vpn:/works/cvtt/md_archive/equity" +Targets="${Targets} cvtt@cloud21.cvtt.vpn:/opt/store/cvtt/md_archive/equity" + + +for tgt in ${Targets} +do + Cmd="/usr/bin/rsync -ahv ${Source} ${tgt}" + echo $Cmd + eval $Cmd +done +