Код для скачивания данных OHLCV (свечей)

Код для скачивания данных OHLCV (свечей)


Но прежде вам нужно в терминале скачать библиотеку

pip install requests pandas

Код:

import requests

import pandas as pd

import time


def fetch_ohlcv(symbol="AVAXUSDT", interval="1", limit=1000, start_time=None, end_time=None):

  url = "https://api.bybit.com/v5/market/kline"

  params = {

    "category": "linear",  # для фьючерсов USDT

    "symbol": symbol,

    "interval": interval,  # "1" = 1m свечи

    "limit": limit

  }

  if start_time:

    params["start"] = start_time

  if end_time:

    params["end"] = end_time


  r = requests.get(url, params=params)

  data = r.json()

  return data["result"]["list"] if "result" in data else []


def download_history(symbol="AVAXUSDT", interval="1", days=30):

  all_data = []

  end_time = int(time.time() * 1000)

  start_time = end_time - days * 24 * 60 * 60 * 1000


  while start_time < end_time:

    ohlcv = fetch_ohlcv(symbol, interval, 1000, start_time, end_time)

    if not ohlcv:

      break

    all_data.extend(ohlcv)

    # данные идут в обратном порядке

    last_ts = int(ohlcv[-1][0])

    start_time = last_ts + 60 * 1000


    time.sleep(0.2)


  df = pd.DataFrame(all_data, columns=["timestamp","open","high","low","close","volume","turnover"])

  df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms")

  return df


if __name__ == "__main__":

  df = download_history(days=7) # например, за последние 7 дней

  df.to_csv("avax_ohlcv.csv", index=False)

  print("Сохранено:", len(df), "свечей")

import requests

import pandas as pd

import time


def fetch_ohlcv(symbol="AVAXUSDT", interval="1", limit=1000, start_time=None, end_time=None):

  url = "https://api.bybit.com/v5/market/kline"

  params = {

    "category": "linear",  # для фьючерсов USDT

    "symbol": symbol,

    "interval": interval,  # "1" = 1m свечи

    "limit": limit

  }

  if start_time:

    params["start"] = start_time

  if end_time:

    params["end"] = end_time


  r = requests.get(url, params=params)

  data = r.json()

  return data["result"]["list"] if "result" in data else []


def download_history(symbol="AVAXUSDT", interval="1", days=30):

  all_data = []

  end_time = int(time.time() * 1000)

  start_time = end_time - days * 24 * 60 * 60 * 1000


  while start_time < end_time:

    ohlcv = fetch_ohlcv(symbol, interval, 1000, start_time, end_time)

    if not ohlcv:

      break

    all_data.extend(ohlcv)

    # данные идут в обратном порядке

    last_ts = int(ohlcv[-1][0])

    start_time = last_ts + 60 * 1000


    time.sleep(0.2)


  df = pd.DataFrame(all_data, columns=["timestamp","open","high","low","close","volume","turnover"])

  df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms")

  return df


if __name__ == "__main__":

  df = download_history(days=7) # например, за последние 7 дней

  df.to_csv("avax_ohlcv.csv", index=False)

  print("Сохранено:", len(df), "свечей")

Статья была написана при поддержке сообщества - ссылка



Report Page