This commit is contained in:
Cryptoval Trading Technologies 2025-05-15 05:24:52 +02:00
commit a38ec2989d
5 changed files with 332 additions and 0 deletions

40
.env Normal file
View File

@ -0,0 +1,40 @@
CVTT_USER=1001:1001
IMAGE_VERSION=0.0.6
CONFIG_FILE=/config/md_recorder.cfg
CREDS_FILE=/config/.creds
# bnbfut-cvttdata
BF28_CONTAINER_NAME=md_recorder.BNBFUT_CLOUD28
BF28_INSTRUMENT_GROUP=BNBFUT_CLOUD28
BF28_EXCHANGE_ACCT_NAME=BNBFUT
BF28_DB_CRED_KEY=TSDB_MD_CLOUD28
BF28_LOG_FILE=/logs/%T.MD_REC.${BF28_INSTRUMENT_GROUP}.log
BF28_ADD_ARGS=--compress_log
BF28_ADMIN_PORT=7204
# coinbase-cvttdata
CB28_CONTAINER_NAME=md_recorder.COINBASE_CLOUD28
CB28_INSTRUMENT_GROUP=COINBASE_CLOUD28
CB28_EXCHANGE_ACCT_NAME=COINBASE_AT
CB28_DB_CRED_KEY=TSDB_MD_CLOUD28
CB28_LOG_FILE=/logs/%T.MD_REC.${CB28_INSTRUMENT_GROUP}.log
CB28_ADD_ARGS=--compress_log
CB28_ADMIN_PORT=7206
# bnspot-cvttdata
BS28_CONTAINER_NAME=md_recorder.BNBSPOT_CLOUD28
BS28_INSTRUMENT_GROUP=BNBSPOT_CLOUD28
BS28_EXCHANGE_ACCT_NAME=BNBSPOT
BS28_DB_CRED_KEY=TSDB_MD_CLOUD28
BS28_LOG_FILE=/logs/%T.MD_REC.${BS28_INSTRUMENT_GROUP}.log
BS28_ADD_ARGS=--compress_log
BS28_ADMIN_PORT=7201

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
data/
logs/

17
config/.creds Normal file
View File

@ -0,0 +1,17 @@
{
"__dummy__": null
, "TSDB_MD_CLD21": {
"host": "cloud21.cvtt.vpn"
, "port": 5432
, "user": "cvtt"
, "database": "cvtt_md"
, "password": "ICdIh0JnMM7vM7Pf"
}
, "TSDB_MD_CVTTDATA": {
"host": "cvttdata.cvtt.vpn"
, "port": 5432
, "user": "cvtt"
, "database": "cvtt_md"
, "password": "ICdIh0JnMM7vM7Pf"
}
}

206
config/md_recorder.cfg Normal file
View File

@ -0,0 +1,206 @@
{
"refdata": {
"assets": @inc=http://@env{CONFIG_SERVICE}/refdata/assets
, "instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/instruments
, "exchange_instruments": @inc=http://@env{CONFIG_SERVICE}/refdata/exchange_instruments
, "dynamic_instrument_exchanges": ["ALPACA"]
, "exchanges": {
"COINBASE_AT": {
"exchange_id": "COINBASE"
, "name": "Coinbase Advanced Trade"
, "type": "SPOT"
, "mktdata" : {
# ****** NEW VAlUE
# "class": "cvttpy.exchanges.coinbase.spot.mkt_data.CoinbaseMultiWsFeed"
"class": "cvttpy.exchanges.coinbase.spot.mkt_data.CoinbaseMdFeed"
# ****** NEW VAlUE
, "reconnect_secs": 2
, "max_connections": 10
, "price_throttle": true
, "ws_url": ["WSS", "wss://ws-feed.exchange.coinbase.com"]
}
}
, "BNBSPOT": {
"exchange_id": "BNBSPOT"
, "name": "Binance Spot"
, "type": "SPOT"
, "mktdata" : {
# -------- NEW VALUE
# "class": "cvttpy.exchanges.binance.spot.mkt_data.BnbSpotMultiWsFeed"
"class": "cvttpy.exchanges.binance.spot.mkt_data.BnbSpotMktDataFeed"
# -------- NEW VALUE
, "max_connections": 10
, "reconnect_secs": 2.0
, "ws_url": ["WSS", "wss://stream.binance.com/ws"]
, "REST": {
"depth_snapshot_url": ["GET", "https://api.binance.com/api/v3/depth"],
}
}
}
, "BNBFUT": {
"exchange_id": "BNBFUT"
, "name": "Binance Futures USD-M"
, "type": "FUTURES"
, "mktdata" : {
# -------- NEW VALUE
# "class": "cvttpy.exchanges.binance.futures.mkt_data.BnbFutMultiWsFeed"
"class": "cvttpy.exchanges.binance.futures.mkt_data.BnbFutMktDataFeed"
# -------- NEW VALUE
, "max_connections": 10
, "reconnect_secs": 2.0
, "ws_url": ["WSS", "wss://fstream.binance.com/ws"]
, "REST": {
# https://fapi.binance.com/fapi/v1/depth?symbol=BNBBTC&limit=1000
"depth_snapshot_url": ["GET", "https://fapi.binance.com/fapi/v1/depth"],
}
}
}
}
}
, "comm": @inc=http://@env{CONFIG_SERVICE}/apps/common/comm
, "md_recorder": {
"instrument_groups": {
"BNBFUT_CLD21": [
"BNBFUT:PERP-BTC-USDT"
, "BNBFUT:PERP-ETH-USDT"
],
"BNBFUT_CLOUD28": [
"BNBFUT:PERP-BTC-USDT"
, "BNBFUT:PERP-ETH-USDT"
],
"BNBSPOT_CLD21": [
"BNBSPOT:PAIR-ADA-USDT"
, "BNBSPOT:PAIR-BCH-USDT"
, "BNBSPOT:PAIR-BTC-USDT"
, "BNBSPOT:PAIR-DOT-USDT"
, "BNBSPOT:PAIR-ETH-USDT"
, "BNBSPOT:PAIR-LTC-USDT"
, "BNBSPOT:PAIR-SOL-USDT"
, "BNBSPOT:PAIR-USDC-USDT"
, "BNBSPOT:PAIR-XRP-USDT"
],
"BNBSPOT_CLOUD28": [
"BNBSPOT:PAIR-ADA-USDT"
, "BNBSPOT:PAIR-BCH-USDT"
, "BNBSPOT:PAIR-BTC-USDT"
, "BNBSPOT:PAIR-DOT-USDT"
, "BNBSPOT:PAIR-ETH-USDT"
, "BNBSPOT:PAIR-LTC-USDT"
, "BNBSPOT:PAIR-SOL-USDT"
, "BNBSPOT:PAIR-USDC-USDT"
, "BNBSPOT:PAIR-XRP-USDT"
],
"COINBASE_CLD21": [
"COINBASE:PAIR-ADA-USD"
, "COINBASE:PAIR-BCH-USD"
, "COINBASE:PAIR-BTC-USD"
, "COINBASE:PAIR-DOT-USD"
, "COINBASE:PAIR-ETH-USD"
, "COINBASE:PAIR-LTC-USD"
, "COINBASE:PAIR-SOL-USD"
, "COINBASE:PAIR-XRP-USD"
],
"COINBASE_CLOUD28": [
"COINBASE:PAIR-ADA-USD"
, "COINBASE:PAIR-BCH-USD"
, "COINBASE:PAIR-BTC-USD"
, "COINBASE:PAIR-DOT-USD"
, "COINBASE:PAIR-ETH-USD"
, "COINBASE:PAIR-LTC-USD"
, "COINBASE:PAIR-SOL-USD"
, "COINBASE:PAIR-XRP-USD"
]
}
, "db": {
"class": "cvttpy.tools.db.timescale.tsdb_client.TimescaleDbClient"
}
, "flush_interval_sec": 0.5
, "collections": {
"__dummy__": null
, "ALPACA": {
# dynamic instruments names
"tables": {
"trades": "alpaca_iex.md_trades"
, "booktops": "alpaca_iex.md_booktops"
, "booksnaps": "alpaca_iex.md_booksnaps"
}
}
, "BNBSPOT": {
"instruments": {
"PAIR-ADA-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-BCH-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-BTC-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-DOT-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-ETH-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-LTC-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-SOL-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-USDC-USDT": ["TRADES", "BOOK_TOP"]
, "PAIR-XRP-USDT": ["TRADES", "BOOK_TOP"]
}
, "tables": {
"trades": "bnbspot.md_trades"
, "booktops": "bnbspot.md_booktops"
, "booksnaps": "bnbspot.md_booksnaps"
}
}
, "BNBFUT": {
"instruments": {
"PERP-BTC-USDT": ["TRADES", "BOOK_TOP"]
, "PERP-ETH-USDT": ["TRADES", "BOOK_TOP"]
}
, "tables": {
"trades": "bnbfut.md_trades"
, "booktops": "bnbfut.md_booktops"
, "booksnaps": "bnbfut.md_booksnaps"
}
}
, "COINBASE": {
"instruments": {
"PAIR-ADA-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-BCH-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-BTC-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-DOT-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-ETH-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-LTC-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-SOL-USD": ["TRADES", "BOOK_TOP"]
, "PAIR-XRP-USD": ["TRADES", "BOOK_TOP"]
}
, "tables": {
"trades": "coinbase.md_trades"
, "booktops": "coinbase.md_booktops"
, "booksnaps": "coinbase.md_booksnaps"
}
}
}
}
# ----------------------------------
, "exchanges_settings": {
"*": {
"order_entry": {
"enabled": false
, "streaming": false
},
"mkt_data": {
"enabled": true
, "streaming": true
},
"accounting": {
"enabled": false
, "streaming": false
}
}
}
}

67
docker-compose.yml Normal file
View File

@ -0,0 +1,67 @@
# CVTT Microservices
services:
bnbfut28_md_recorder:
image: cloud21.cvtt.vpn:5500/md_recorder:${IMAGE_VERSION}
container_name: ${BF28_CONTAINER_NAME}
user: ${CVTT_USER:-1001:1001}
pull_policy: always
restart: unless-stopped
environment:
CONFIG_SERVICE: ${CONFIG_SERVICE:-cloud16.cvtt.vpn:6789}
CONFIG_FILE: ${CONFIG_FILE:-/config/md_recorder.cfg}
CREDS_FILE: ${CREDS_FILE}
EXCHANGE_ACCT_NAME: ${BF28_EXCHANGE_ACCT_NAME}
INSTRUMENT_GROUP: ${BF28_INSTRUMENT_GROUP}
DB_CRED_KEY: ${BF28_DB_CRED_KEY}
LOG_FILE: ${BF28_LOG_FILE}
ADD_ARGS: ${BF28_ADD_ARGS:-}
volumes:
- ./config:/config
- ./logs:/logs
ports:
- ${BF28_ADMIN_PORT}:7200
cbspot28_md_recorder:
image: cloud21.cvtt.vpn:5500/md_recorder:${IMAGE_VERSION}
container_name: ${CB28_CONTAINER_NAME}
user: ${CVTT_USER:-1001:1001}
pull_policy: always
restart: unless-stopped
environment:
CONFIG_SERVICE: ${CONFIG_SERVICE:-cloud16.cvtt.vpn:6789}
CONFIG_FILE: ${CONFIG_FILE:-/config/md_recorder.cfg}
CREDS_FILE: ${CREDS_FILE}
EXCHANGE_ACCT_NAME: ${CB28_EXCHANGE_ACCT_NAME}
INSTRUMENT_GROUP: ${CB28_INSTRUMENT_GROUP}
DB_CRED_KEY: ${CB28_DB_CRED_KEY}
LOG_FILE: ${CB28_LOG_FILE}
ADD_ARGS: ${CB28_ADD_ARGS:-}
volumes:
- ./config:/config
- ./logs:/logs
ports:
- ${CB28_ADMIN_PORT}:7200
bnbspot28_md_recorder:
image: cloud21.cvtt.vpn:5500/md_recorder:${IMAGE_VERSION}
container_name: ${BS28_CONTAINER_NAME}
user: ${CVTT_USER:-1001:1001}
pull_policy: always
restart: unless-stopped
environment:
CONFIG_SERVICE: ${CONFIG_SERVICE:-cloud16.cvtt.vpn:6789}
CONFIG_FILE: ${CONFIG_FILE:-/config/md_recorder.cfg}
CREDS_FILE: ${CREDS_FILE}
EXCHANGE_ACCT_NAME: ${BS28_EXCHANGE_ACCT_NAME}
INSTRUMENT_GROUP: ${BS28_INSTRUMENT_GROUP}
DB_CRED_KEY: ${BS28_DB_CRED_KEY}
LOG_FILE: ${BS28_LOG_FILE}
ADD_ARGS: ${BS28_ADD_ARGS:-}
volumes:
- ./config:/config
- ./logs:/logs
ports:
- ${BS28_ADMIN_PORT}:7200