From 4f017d6142acf151e99d07488d608e0e484b86ff Mon Sep 17 00:00:00 2001 From: yutiansut Date: Thu, 26 Dec 2019 02:32:51 +0800 Subject: [PATCH 1/3] # --- docker/qa-go-base/Dockerfile | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docker/qa-go-base/Dockerfile diff --git a/docker/qa-go-base/Dockerfile b/docker/qa-go-base/Dockerfile new file mode 100644 index 000000000..e43aff231 --- /dev/null +++ b/docker/qa-go-base/Dockerfile @@ -0,0 +1,22 @@ +FROM ubuntu:16.04 + +ENV GOPATH=/root/go +ENV TZ=Asia/Shanghai +ENV DEBIAN_FRONTEND noninteractive +ENV PATH=${GOPATH}/bin:/usr/lib/go-1.11/bin:/usr/local/cmake/bin:${PATH} +ENV LD_LIBRARY_PATH=:${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:${ARESDB_PATH}/lib +ENV GO111MODULE=on +RUN apt-get update --fix-missing \ +&& apt-get install -y --reinstall software-properties-common \ +&& add-apt-repository ppa:gophers/archive\ +&& apt-get update \ +&& apt-get install -y golang-1.11-go git npm wget +# install cmake 3.12 +ARG CMAKE_VERSION=3.12.0 +WORKDIR /tmp +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ +&& tar xzf cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ +&& mv cmake-${CMAKE_VERSION}-Linux-x86_64 /usr/local/cmake \ +&& cmake -version + +WORKDIR / From dd94f2f9eb25be6660db89244479539f65f973cc Mon Sep 17 00:00:00 2001 From: yutiansut Date: Thu, 26 Dec 2019 03:00:58 +0800 Subject: [PATCH 2/3] #rust base --- docker/qa-rust-base/Dockerfile | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 docker/qa-rust-base/Dockerfile diff --git a/docker/qa-rust-base/Dockerfile b/docker/qa-rust-base/Dockerfile new file mode 100644 index 000000000..f79913728 --- /dev/null +++ b/docker/qa-rust-base/Dockerfile @@ -0,0 +1,38 @@ +FROM ubuntu:16.04 + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH \ + RUST_VERSION=1.39.0 + +ARG CMAKE_VERSION=3.12.0 +WORKDIR /tmp +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ +&& tar xzf cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz \ +&& mv cmake-${CMAKE_VERSION}-Linux-x86_64 /usr/local/cmake \ +&& cmake -version + +RUN apt-get install -y --allow-downgrades pkg-config zlib1g=1:1.2.8.dfsg-2ubuntu4.1 && apt-get install pkg-config libssl-dev -y +RUN set -eux; \ + dpkgArch="$(dpkg --print-architecture)"; \ + case "${dpkgArch##*-}" in \ + amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='a46fe67199b7bcbbde2dcbc23ae08db6f29883e260e23899a88b9073effc9076' ;; \ + armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='6af5abbbae02e13a9acae29593ec58116ab0e3eb893fa0381991e8b0934caea1' ;; \ + arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='51862e576f064d859546cca5f3d32297092a850861e567327422e65b60877a1b' ;; \ + i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='91456c3e6b2a3067914b3327f07bc182e2a27c44bff473263ba81174884182be' ;; \ + *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ + esac; \ + url="https://static.rust-lang.org/rustup/archive/1.18.3/${rustArch}/rustup-init"; \ + wget "$url"; \ + echo "${rustupSha256} *rustup-init" | sha256sum -c -; \ + chmod +x rustup-init; \ + ./rustup-init -y --no-modify-path --default-toolchain $RUST_VERSION; \ + rm rustup-init; \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ + rustup --version; \ + cargo --version; \ + rustc --version; + +RUN set -eux; \ + apt-get update; \ + apt-get install -y build-essential libzmq3-dev pkg-config; \ No newline at end of file From 57de4243fd9ef1658bb733504b357152e78b66fb Mon Sep 17 00:00:00 2001 From: yutiansut Date: Fri, 27 Dec 2019 18:44:19 +0800 Subject: [PATCH 3/3] #update for 1.7.0 --- QUANTAXIS/QAFetch/QATdx.py | 71 +++++++++ QUANTAXIS/QAFetch/__init__.py | 9 ++ QUANTAXIS/QAUtil/QADate_trade.py | 246 ++++++++++++++++++++++++++++++- QUANTAXIS/__init__.py | 4 +- 4 files changed, 328 insertions(+), 2 deletions(-) diff --git a/QUANTAXIS/QAFetch/QATdx.py b/QUANTAXIS/QAFetch/QATdx.py index e5bd24bad..4a921a5a4 100755 --- a/QUANTAXIS/QAFetch/QATdx.py +++ b/QUANTAXIS/QAFetch/QATdx.py @@ -502,8 +502,79 @@ def QA_fetch_get_stock_realtime(code=['000001', '000002'], ip=None, port=None): 'bid_vol5']] return data.set_index(['datetime', 'code']) +@retry(stop_max_attempt_number=3, wait_random_min=50, wait_random_max=100) +def QA_fetch_get_index_realtime(code=['000001'], ip=None, port=None): + ip, port = get_mainmarket_ip(ip, port) + # reversed_bytes9 --> 涨速 + # active1,active2 --> 活跃度 + # reversed_bytes1 --> -价格*100 + # vol 总量 cur_vol 现量 + # amount 总金额 + # s_vol 内盘 b_vol 外盘 + # reversed_bytes2 市场 + # # reversed_bytes0 时间 + + api = TdxHq_API() + __data = pd.DataFrame() + with api.connect(ip, port): + code = [code] if isinstance(code, str) else code + for id_ in range(int(len(code) / 80) + 1): + __data = __data.append(api.to_df(api.get_security_quotes( + [(_select_index_code(x), x) for x in + code[80 * id_:80 * (id_ + 1)]]))) + __data = __data.assign(datetime=datetime.datetime.now( + ), servertime=__data['reversed_bytes0'].apply(QA_util_tdxtimestamp)) + # __data['rev'] + data = __data[ + ['datetime', 'servertime', 'active1', 'active2', 'last_close', 'code', 'open', + 'high', 'low', 'price', 'cur_vol', + 's_vol', 'b_vol', 'vol', 'ask1', 'ask_vol1', 'bid1', 'bid_vol1', + 'ask2', 'ask_vol2', + 'bid2', 'bid_vol2', 'ask3', 'ask_vol3', 'bid3', 'bid_vol3', + 'ask4', + 'ask_vol4', 'bid4', 'bid_vol4', 'ask5', 'ask_vol5', 'bid5', + 'bid_vol5']] + return data.set_index(['datetime', 'code']) @retry(stop_max_attempt_number=3, wait_random_min=50, wait_random_max=100) +def QA_fetch_get_bond_realtime(code=['010107'], ip=None, port=None): + ip, port = get_mainmarket_ip(ip, port) + # reversed_bytes9 --> 涨速 + # active1,active2 --> 活跃度 + # reversed_bytes1 --> -价格*100 + # vol 总量 cur_vol 现量 + # amount 总金额 + # s_vol 内盘 b_vol 外盘 + # reversed_bytes2 市场 + # # reversed_bytes0 时间 + + api = TdxHq_API() + __data = pd.DataFrame() + with api.connect(ip, port): + code = [code] if isinstance(code, str) else code + for id_ in range(int(len(code) / 80) + 1): + __data = __data.append(api.to_df(api.get_security_quotes( + [(_select_bond_market_code(x), x) for x in + code[80 * id_:80 * (id_ + 1)]]))) + __data = __data.assign(datetime=datetime.datetime.now( + ), servertime=__data['reversed_bytes0'].apply(QA_util_tdxtimestamp)) + # __data['rev'] + data = __data[ + ['datetime', 'servertime', 'active1', 'active2', 'last_close', 'code', 'open', + 'high', 'low', 'price', 'cur_vol', + 's_vol', 'b_vol', 'vol', 'ask1', 'ask_vol1', 'bid1', 'bid_vol1', + 'ask2', 'ask_vol2', + 'bid2', 'bid_vol2', 'ask3', 'ask_vol3', 'bid3', 'bid_vol3', + 'ask4', + 'ask_vol4', 'bid4', 'bid_vol4', 'ask5', 'ask_vol5', 'bid5', + 'bid_vol5']] + data = data.assign(last_close=data.last_close/10, open=data.open/10, high=data.high/10, low=data.low/10, + price= data.price/10, + ask1=data.ask1/10, ask2=data.ask2/10, ask3=data.ask3/10, ask4=data.ask4/10, ask5=data.ask5/10, + bid1=data.bid1/10, bid2=data.bid2/10, bid3=data.bid3/10, bid4=data.bid4/10, bid5=data.bid5/10) + + return data.set_index(['datetime', 'code']) +@retry(stop_max_attempt_number=3, wait_random_min=50, wait_random_max=100) def QA_fetch_depth_market_data(code=['000001', '000002'], ip=None, port=None): ip, port = get_mainmarket_ip(ip, port) api = TdxHq_API() diff --git a/QUANTAXIS/QAFetch/__init__.py b/QUANTAXIS/QAFetch/__init__.py index 7393b0a9b..69df4f581 100755 --- a/QUANTAXIS/QAFetch/__init__.py +++ b/QUANTAXIS/QAFetch/__init__.py @@ -145,6 +145,12 @@ def QA_fetch_get_index_min(package, code, start, end, level='1min'): else: return 'Unsupport packages' + +def QA_fetch_get_index_realtime(package, code): + Engine = use(package) + return Engine.QA_fetch_get_index_realtime(code) + + def QA_fetch_get_bond_day(package, code, start, end, level='day'): Engine = use(package) if package in ['tdx', 'pytdx']: @@ -160,6 +166,9 @@ def QA_fetch_get_bond_min(package, code, start, end, level='1min'): else: return 'Unsupport packages' +def QA_fetch_get_bond_realtime(package, code): + Engine = use(package) + return Engine.QA_fetch_get_bond_realtime(code) def QA_fetch_get_stock_block(package): Engine = use(package) diff --git a/QUANTAXIS/QAUtil/QADate_trade.py b/QUANTAXIS/QAUtil/QADate_trade.py index 7db26316f..0fc95e139 100755 --- a/QUANTAXIS/QAUtil/QADate_trade.py +++ b/QUANTAXIS/QAUtil/QADate_trade.py @@ -7129,7 +7129,251 @@ '2019-12-26', '2019-12-27', '2019-12-30', - '2019-12-31' + '2019-12-31', + '2020-01-02', + '2020-01-03', + '2020-01-06', + '2020-01-07', + '2020-01-08', + '2020-01-09', + '2020-01-10', + '2020-01-13', + '2020-01-14', + '2020-01-15', + '2020-01-16', + '2020-01-17', + '2020-01-20', + '2020-01-21', + '2020-01-22', + '2020-01-23', + '2020-01-31', + '2020-02-03', + '2020-02-04', + '2020-02-05', + '2020-02-06', + '2020-02-07', + '2020-02-10', + '2020-02-11', + '2020-02-12', + '2020-02-13', + '2020-02-14', + '2020-02-17', + '2020-02-18', + '2020-02-19', + '2020-02-20', + '2020-02-21', + '2020-02-24', + '2020-02-25', + '2020-02-26', + '2020-02-27', + '2020-02-28', + '2020-03-02', + '2020-03-03', + '2020-03-04', + '2020-03-05', + '2020-03-06', + '2020-03-09', + '2020-03-10', + '2020-03-11', + '2020-03-12', + '2020-03-13', + '2020-03-16', + '2020-03-17', + '2020-03-18', + '2020-03-19', + '2020-03-20', + '2020-03-23', + '2020-03-24', + '2020-03-25', + '2020-03-26', + '2020-03-27', + '2020-03-30', + '2020-03-31', + '2020-04-01', + '2020-04-02', + '2020-04-03', + '2020-04-07', + '2020-04-08', + '2020-04-09', + '2020-04-10', + '2020-04-13', + '2020-04-14', + '2020-04-15', + '2020-04-16', + '2020-04-17', + '2020-04-20', + '2020-04-21', + '2020-04-22', + '2020-04-23', + '2020-04-24', + '2020-04-27', + '2020-04-28', + '2020-04-29', + '2020-04-30', + '2020-05-06', + '2020-05-07', + '2020-05-08', + '2020-05-11', + '2020-05-12', + '2020-05-13', + '2020-05-14', + '2020-05-15', + '2020-05-18', + '2020-05-19', + '2020-05-20', + '2020-05-21', + '2020-05-22', + '2020-05-25', + '2020-05-26', + '2020-05-27', + '2020-05-28', + '2020-05-29', + '2020-06-01', + '2020-06-02', + '2020-06-03', + '2020-06-04', + '2020-06-05', + '2020-06-08', + '2020-06-09', + '2020-06-10', + '2020-06-11', + '2020-06-12', + '2020-06-15', + '2020-06-16', + '2020-06-17', + '2020-06-18', + '2020-06-19', + '2020-06-22', + '2020-06-23', + '2020-06-24', + '2020-06-29', + '2020-06-30', + '2020-07-01', + '2020-07-02', + '2020-07-03', + '2020-07-06', + '2020-07-07', + '2020-07-08', + '2020-07-09', + '2020-07-10', + '2020-07-13', + '2020-07-14', + '2020-07-15', + '2020-07-16', + '2020-07-17', + '2020-07-20', + '2020-07-21', + '2020-07-22', + '2020-07-23', + '2020-07-24', + '2020-07-27', + '2020-07-28', + '2020-07-29', + '2020-07-30', + '2020-07-31', + '2020-08-03', + '2020-08-04', + '2020-08-05', + '2020-08-06', + '2020-08-07', + '2020-08-10', + '2020-08-11', + '2020-08-12', + '2020-08-13', + '2020-08-14', + '2020-08-17', + '2020-08-18', + '2020-08-19', + '2020-08-20', + '2020-08-21', + '2020-08-24', + '2020-08-25', + '2020-08-26', + '2020-08-27', + '2020-08-28', + '2020-08-31', + '2020-09-01', + '2020-09-02', + '2020-09-03', + '2020-09-04', + '2020-09-07', + '2020-09-08', + '2020-09-09', + '2020-09-10', + '2020-09-11', + '2020-09-14', + '2020-09-15', + '2020-09-16', + '2020-09-17', + '2020-09-18', + '2020-09-21', + '2020-09-22', + '2020-09-23', + '2020-09-24', + '2020-09-25', + '2020-09-28', + '2020-09-29', + '2020-09-30', + '2020-10-09', + '2020-10-12', + '2020-10-13', + '2020-10-14', + '2020-10-15', + '2020-10-16', + '2020-10-19', + '2020-10-20', + '2020-10-21', + '2020-10-22', + '2020-10-23', + '2020-10-26', + '2020-10-27', + '2020-10-28', + '2020-10-29', + '2020-10-30', + '2020-11-02', + '2020-11-03', + '2020-11-04', + '2020-11-05', + '2020-11-06', + '2020-11-09', + '2020-11-10', + '2020-11-11', + '2020-11-12', + '2020-11-13', + '2020-11-16', + '2020-11-17', + '2020-11-18', + '2020-11-19', + '2020-11-20', + '2020-11-23', + '2020-11-24', + '2020-11-25', + '2020-11-26', + '2020-11-27', + '2020-11-30', + '2020-12-01', + '2020-12-02', + '2020-12-03', + '2020-12-04', + '2020-12-07', + '2020-12-08', + '2020-12-09', + '2020-12-10', + '2020-12-11', + '2020-12-14', + '2020-12-15', + '2020-12-16', + '2020-12-17', + '2020-12-18', + '2020-12-21', + '2020-12-22', + '2020-12-23', + '2020-12-24', + '2020-12-25', + '2020-12-28', + '2020-12-29', + '2020-12-30', + '2020-12-31' ] def QA_util_format_date2str(cursor_date): diff --git a/QUANTAXIS/__init__.py b/QUANTAXIS/__init__.py index 4d3bc6fc2..2586824ff 100755 --- a/QUANTAXIS/__init__.py +++ b/QUANTAXIS/__init__.py @@ -31,7 +31,7 @@ 2017/4/8 """ -__version__ = '1.6.14' +__version__ = '1.7.0' __author__ = 'yutiansut' import argparse @@ -110,6 +110,7 @@ QA_fetch_get_bond_day, QA_fetch_get_bond_min, QA_fetch_get_bond_list, + QA_fetch_get_bond_realtime, QA_fetch_get_future_realtime, QA_fetch_get_future_transaction, QA_fetch_get_future_transaction_realtime, @@ -131,6 +132,7 @@ QA_fetch_get_index_day, QA_fetch_get_index_list, QA_fetch_get_index_min, + QA_fetch_get_index_realtime, QA_fetch_get_macroindex_day, QA_fetch_get_macroindex_list, QA_fetch_get_macroindex_min,