Versión final scripts BitGET
This commit is contained in:
81
future-record.sh
Executable file
81
future-record.sh
Executable file
@ -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"
|
||||
30
get-usdt-eur-range.sh
Executable file
30
get-usdt-eur-range.sh
Executable file
@ -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"
|
||||
45
usdt-eur-2025-range.py
Executable file
45
usdt-eur-2025-range.py
Executable file
@ -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)")
|
||||
30
usdt-eur.sh
Executable file
30
usdt-eur.sh
Executable file
@ -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"
|
||||
Reference in New Issue
Block a user