Binance OrderbookDB

immanuelk1m·2024년 1월 7일
0

Trading Machine Project

목록 보기
6/20

1. Start with a System update

sudo apt update

2. Import the InfluxDB GPG key

wget -q https://repos.influxdata.com/influxdata-archive_compat.key

3. Add APT repository

echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update

4. Installing InfluxDB on Ubuntu 22.04

sudo apt install influxdb2

5. Start and Enable the Influxdb service

sudo systemctl start influxdb
sudo systemctl enable influxdb

6. Setup

influx setup
sudo apt install python3.11-venv
sudo apt install tmux
python3 -m venv ./venv
source ./venv/bin/activate
pip install websocket-client influxdb-client
pip install PyJWT

token

influx auth list -u username

new bucket

influx bucket create --name <버킷 이름> --org <조직 이름>

influx bucket create --name btc_order --org tmer
influx bucket create --name btc_ticker --org tmer
influx bucket create --name doge_order --org tmer
influx bucket create --name doge_ticker --org tmer
influx bucket create --name eth_order --org tmer
influx bucket create --name eth_ticker --org tmer
influx bucket create --name xrp_order --org tmer
influx bucket create --name xrp_ticker --org tmer
influx bucket create --name stpt_order --org tmer
influx bucket create --name stpt_ticker --org tmer

7. Code


influx bucket create --name my_new_bucket --org my_org_name

influx bucket list
influx bucket delete --name my_bucket
import websocket
import json
from influxdb_client import InfluxDBClient, Point, WriteOptions
from influxdb_client.client.write_api import SYNCHRONOUS

# InfluxDB 설정
influxdb_url = "http://localhost:8086"
token = "TOKEN"
org = "ORG"
bucket = "BTCORDER"

# InfluxDB 클라이언트 초기화
client = InfluxDBClient(url=influxdb_url, token=token, org=org)
write_api = client.write_api(write_options=SYNCHRONOUS)

def on_message(ws, message):
    data = json.loads(message)
    bids = data['bids']
    asks = data['asks']

    for bid in bids:
        price, quantity = bid
        point = Point("order_book").tag("type", "bid").field("price", float(price)).field("quantity", float(quantity))
        write_api.write(bucket=bucket, record=point)

    for ask in asks:
        price, quantity = ask
        point = Point("order_book").tag("type", "ask").field("price", float(price)).field("quantity", float(quantity))
        write_api.write(bucket=bucket, record=point)

    print("Data written to InfluxDB")

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### Closed ###")

def on_open(ws):
    print("Opened connection")

if __name__ == "__main__":
    socket = "wss://stream.binance.com:9443/ws/btcusdt@depth20@100ms"
    ws = websocket.WebSocketApp(socket, on_open=on_open, on_message=on_message, on_error=on_error, on_close=on_close)
    ws.run_forever()

# DB 조회

influx query 'from(bucket: "btcorder") |> range(start: -1h) |> limit(n: 10)'
influx query 'from(bucket:"btc_order")
  |> range(start: -1m)
  |> filter(fn:(r) => r._measurement == "btc_order")' --host='http://localhost:8086' --org='tmer' --token='9XmVwizKEHy7DY6gTRX1GJU4aCSdnzYaywPri_oR46EMGzks1fAzcOyuegB-LowygahuvJOLaKmFLYOdaAlBWw=='
  |> last()
profile
개발 새발

0개의 댓글

관련 채용 정보