From cfe65d7ef71940fb8c5d9b657310c829773da79a Mon Sep 17 00:00:00 2001 From: juanlf Date: Sun, 15 Jun 2025 16:35:03 +0200 Subject: [PATCH] =?UTF-8?q?Versi=C3=B3n=20final=20scripts=20BitGET?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- future-record.sh | 81 ++++++++++++++++++++++++++++++++++++++++++ get-usdt-eur-range.sh | 30 ++++++++++++++++ usdt-eur-2025-range.py | 45 +++++++++++++++++++++++ usdt-eur.sh | 30 ++++++++++++++++ 4 files changed, 186 insertions(+) create mode 100755 future-record.sh create mode 100755 get-usdt-eur-range.sh create mode 100755 usdt-eur-2025-range.py create mode 100755 usdt-eur.sh diff --git a/future-record.sh b/future-record.sh new file mode 100755 index 0000000..f11f17c --- /dev/null +++ b/future-record.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# === CONFIGURACIÓN: Tus credenciales === +API_KEY="bg_28730a088b4b71c307ed5773b84d8267" +API_SECRET="f7e4872f828c99612df009c3641421fc41d9dfb9cfc56dce3311fdaae70f5b29" +PASSPHRASE="cQTVzepB6KuFWgWLgCpB6kW84iiqJr3u" + +# === ENDPOINT === +METHOD="GET" +BASE_URL="https://api.bitget.com" +ENDPOINT="/api/v2/tax/future-record" + +# === ARCHIVO SALIDA === +OUTPUT_FILE="future-record-2025.csv" +> "$OUTPUT_FILE" + +# === CABECERA CSV === +echo '"id","symbol","marginCoin","futureTaxType","amount","fee","ts","fecha_gmt1"' > "$OUTPUT_FILE" + +# === FUNCIONES === +function timestamp() { + date -u -j -f "%Y-%m-%d" "$1" +"%s" +} + +function build_request() { + local START_TS_MS="$1" + local END_TS_MS="$2" + local LIMIT=100 + local QUERY_STRING="startTime=${START_TS_MS}&endTime=${END_TS_MS}&limit=${LIMIT}" + local FULL_URL="${BASE_URL}${ENDPOINT}?${QUERY_STRING}" + + local TIMESTAMP=$(curl -s https://api.bitget.com/api/v2/public/time | jq -r '.data.serverTime') + local PREHASH="${TIMESTAMP}${METHOD}${ENDPOINT}?${QUERY_STRING}" + local SIGNATURE=$(echo -n "${PREHASH}" | openssl dgst -sha256 -hmac "${API_SECRET}" -binary | base64) + + curl -s "${FULL_URL}" \ + -H "ACCESS-KEY: ${API_KEY}" \ + -H "ACCESS-SIGN: ${SIGNATURE}" \ + -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ + -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ + -H "Content-Type: application/json" \ + -H "locale: en-US" +} + +# === BUCLE POR BLOQUES DE 30 DÍAS (máximo 90 permitido) === +START_DATE="2025-01-01" +END_DATE="2025-05-01" +CURRENT_DATE="$START_DATE" + +while [[ "$CURRENT_DATE" < "$END_DATE" ]]; do + NEXT_DATE=$(date -j -v+30d -f "%Y-%m-%d" "$CURRENT_DATE" +"%Y-%m-%d") + + START_MS=$(($(timestamp "$CURRENT_DATE") * 1000)) + END_MS=$(($(timestamp "$NEXT_DATE") * 1000)) + + echo "🔄 Consultando de $CURRENT_DATE a $NEXT_DATE..." + + RESPONSE=$(build_request "$START_MS" "$END_MS") + + echo "$RESPONSE" | jq -r ' + if .code == "00000" and (.data | length > 0) then + .data[] | [ + .id, + .symbol, + .marginCoin, + .futureTaxType, + .amount, + .fee, + .ts, + (.ts|tonumber/1000 | strflocaltime("%Y-%m-%d %H:%M:%S +0100")) + ] | @csv + else + empty + end + ' >> "$OUTPUT_FILE" + + sleep 2 + CURRENT_DATE="$NEXT_DATE" +done + +echo "✅ Exportado como $OUTPUT_FILE" \ No newline at end of file diff --git a/get-usdt-eur-range.sh b/get-usdt-eur-range.sh new file mode 100755 index 0000000..ea75888 --- /dev/null +++ b/get-usdt-eur-range.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# === Configuración === +COIN_ID="tether" +VS_CURRENCY="eur" +OUTPUT="usdt-eur-2025.csv" + +# Timestamps: 2025-01-01 00:00:00 a 2026-01-01 00:00:00 (en segundos UTC) +FROM_TIMESTAMP=$(date -j -f "%Y-%m-%d" "2025-01-01" +"%s") # macOS +TO_TIMESTAMP=$(date -j -f "%Y-%m-%d" "2026-01-01" +"%s") + +# === Llamada API CoinGecko === +URL="https://api.coingecko.com/api/v3/coins/$COIN_ID/market_chart/range?vs_currency=$VS_CURRENCY&from=$FROM_TIMESTAMP&to=$TO_TIMESTAMP" + +echo "📡 Consultando CoinGecko..." +RESPONSE=$(curl -s "$URL") + +# === Procesar respuesta === +echo "date,usdt_eur" > "$OUTPUT" + +echo "$RESPONSE" | jq -c '.prices[]' | while read -r entry; do + ts=$(echo "$entry" | jq '.[0]') + price=$(echo "$entry" | jq '.[1]') + + # Convertir timestamp ms → fecha UTC + date=$(date -j -u -r "$((ts/1000))" +"%Y-%m-%d") + echo "$date,$price" +done | sort | uniq -f0 >> "$OUTPUT" + +echo "✅ Guardado en $OUTPUT" diff --git a/usdt-eur-2025-range.py b/usdt-eur-2025-range.py new file mode 100755 index 0000000..e075d36 --- /dev/null +++ b/usdt-eur-2025-range.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +import requests +import pandas as pd +from datetime import datetime +import time + +# === Configuración === +coin = "tether" +vs_currency = "eur" +start_date = datetime(2025, 1, 1) +end_date = datetime(2026, 1, 1) + +# === Convertir a timestamps UNIX en segundos === +from_ts = int(start_date.timestamp()) +to_ts = int(end_date.timestamp()) + +# === URL de CoinGecko === +url = f"https://api.coingecko.com/api/v3/coins/{coin}/market_chart/range" +params = { + "vs_currency": vs_currency, + "from": from_ts, + "to": to_ts +} + +print("📡 Solicitando datos a CoinGecko...") +response = requests.get(url, params=params) +if response.status_code != 200: + print("❌ Error en la solicitud:", response.status_code) + exit(1) + +data = response.json() +prices = data.get("prices", []) + +# === Convertir a DataFrame === +df = pd.DataFrame(prices, columns=["timestamp_ms", "usdt_eur"]) +df["timestamp"] = pd.to_datetime(df["timestamp_ms"], unit="ms") +df["date"] = df["timestamp"].dt.date + +# === Agrupar por fecha y tomar el primer valor de cada día === +df_daily = df.groupby("date").first().reset_index()[["date", "usdt_eur"]] + +# === Guardar CSV === +output_file = "usdt-eur-2025.csv" +df_daily.to_csv(output_file, index=False) +print(f"✅ Exportado como {output_file} ({len(df_daily)} días)") diff --git a/usdt-eur.sh b/usdt-eur.sh new file mode 100755 index 0000000..ed9550a --- /dev/null +++ b/usdt-eur.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +OUTPUT="usdt-eur-2025.csv" +> "$OUTPUT" +echo '"date","usdt_eur"' > "$OUTPUT" + +START_DATE="2025-01-01" +END_DATE="2025-01-31" +CURRENT_DATE="$START_DATE" + +while [[ "$CURRENT_DATE" < "$END_DATE" ]]; do + # Formatear fecha como DD-MM-YYYY (requerido por CoinGecko) + FORMATTED=$(date -j -f "%Y-%m-%d" "$CURRENT_DATE" "+%d-%m-%Y") + + echo "🔄 Consultando precio para $CURRENT_DATE..." + + PRICE=$(curl -s "https://api.coingecko.com/api/v3/coins/tether/history?date=${FORMATTED}&localization=false" \ + | jq -r '.market_data.current_price.eur // empty') + + if [[ -n "$PRICE" ]]; then + echo "\"$CURRENT_DATE\",\"$PRICE\"" >> "$OUTPUT" + else + echo "\"$CURRENT_DATE\",\"N/A\"" >> "$OUTPUT" + fi + + CURRENT_DATE=$(date -j -v+1d -f "%Y-%m-%d" "$CURRENT_DATE" "+%Y-%m-%d") + sleep 2 # Evita ser bloqueado por CoinGecko +done + +echo "✅ Exportado como $OUTPUT"