直接上code:

Java:
  private static long getTimestamp(LocalDate date) {
        ZonedDateTime zonedDateTime = date.atStartOfDay(ZoneId.of("UTC"));
        return zonedDateTime.toInstant().toEpochMilli();
    }

    public static void main(String[] args) {
        HttpClient client = HttpClient.newHttpClient();
        // 換成你想要的交易對和時間範圍
        String symbol = "BTCUSDT";
        String interval = "1h";
        // 設置日期範圍
        LocalDate startDate = LocalDate.parse("2023-01-01");
        LocalDate endDate = LocalDate.parse("2023-12-31");

        // 初始時間戳
        long startTime = getTimestamp(startDate);
        long endTime = getTimestamp(endDate);

// 循環獲取數據直到覆蓋全部範圍
        while (startTime < endTime) {
            long nextTime = Math.min(startTime + 500 * 3600000L, endTime); // 假設每個間隔為1小時
            fetchAndSaveData(symbol, interval, startTime, nextTime);
            startTime = nextTime; // 更新 startTime 為下一批次的開始
        }
    }

    private static void fetchAndSaveData(String symbol, String interval, long startTime, long endTime) {
        String url = String.format("https://api.binance.com/api/v3/klines?symbol=%s&interval=%s&startTime=%d&endTime=%d", symbol, interval, startTime, endTime);
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .build();

        client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                .thenApply(HttpResponse::body)
                .thenAccept(BitcoinPricePrediction::writeDataToCSV)
                .join();
    }

    public static boolean write = true;

    private static void writeDataToCSV(String data) {
        JSONArray json = new JSONArray(data);
        try (FileWriter file = new FileWriter("E:/btc/data.csv", true)) {
            if (write)
                file.append("OpenTime,Open,High,Low,Close,Volume,CloseTime,Quote Asset Volume,Number of Trades\n");
            for (int i = 0; i < json.length(); i++) {
                JSONArray row = json.getJSONArray(i);
                long openTime = row.getLong(0);
                String open = row.getString(1);
                String high = row.getString(2);
                String low = row.getString(3);
                String close = row.getString(4);
                String volume = row.getString(5);
                long closeTime = row.getLong(6);
                String quoteAssetVolume = row.getString(7);
                int numberOfTrades = row.getInt(8);
                file.append(String.format("%s,%s,%s,%s,%s,%s,%s,%s,%d\n", openTime, open, high, low, close, volume, closeTime, quoteAssetVolume, numberOfTrades));
            }
            write = false;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


這段代碼是一個Java應用程序,主要用於從幣安(Binance)加密貨幣交易平台抓取比特幣(BTC)與USDT(泰達幣)的交易對歷史K線(蠟燭圖)數據,並將這些數據保存到本地CSV文件

各個函數的說明:

方法 getTimestamp(LocalDate date)​

  • 功能:將給定的 LocalDate 轉換成UTC時區的時間戳(毫秒)。
  • 參數:LocalDate date - 日期對象,不包含時間信息。
  • 返回:該日期在UTC時區下的0點時間戳(從1970年1月1日午夜開始的毫秒數)。

主方法 main(String[] args)​

  • 設置:定義了加密貨幣交易對、K線數據的時間間隔以及數據的起始和結束日期。
  • 功能:使用迴圈從幣安API抓取指定日期範圍內的K線數據。考慮到幣安API對數據請求的限制,這個迴圈按每次最多500個小時的數據分批次進行數據抓取。

方法 fetchAndSaveData(String symbol, String interval, long startTime, long endTime)​

  • 參數
    • String symbol:交易對,這裡是 "BTCUSDT"。
    • String interval:K線數據的時間間隔,設置為 "1h"(一小時)。
    • long startTime、long endTime:查詢數據的起始和結束時間戳。
  • 功能:構造HTTP請求並發送到幣安API,從API獲得數據後調用 writeDataToCSV 方法將數據寫入CSV文件。

方法 writeDataToCSV(String data)​

  • 功能:將從幣安API獲得的數據(JSON格式)解析並寫入到CSV文件中。首次調用時會在文件中寫入表頭。
  • 流程
    • 首次寫入時添加CSV列名作為表頭。
    • 解析JSON數據,提取每條K線的開盤時間、開盤價、最高價、最低價、收盤價、交易量、收盤時間、報價資產交易量和交易次數。
    • 格式化提取的數據並追加到CSV文件中。
  • 靜態變量 write:用於控制是否寫入表頭,保證表頭只寫一次。
這段代碼的目的是為了能夠自動化地從幣安獲得特定時間範圍內的K線數據,方便進行加密貨幣的歷史數據分析或其他相關應用。
 

x24264

Lv.1 初心者
註冊
2025-09-30
文章
4
評分
0
聲望
0
🌹哈囉 我是小澄🌹
很高興認識你~也是大家口中的 GTO ✨
這是一份工作,也是一份責任
為了生活努力打拼,用心把服務做到最好💯
外送茶行業從十多年前就存在到現在
我自己一路摸爬滾打,深知客人需要的是什麼:
👉 安全隱私
👉 價格合理
👉 服務到位
👉價位透明

很多人曾經對外送茶失望過,但我希望你能給我一次機會
💎 我保證讓你顛覆以往的認知!

🔎 Google 搜尋:小澄高檔外送茶
📲 聯繫方式:
TG:x24264
Gleezy:qq3691
✨直接看照選妹tg:bb125400

✅ 嚴選兼職台妹:學生妹 /清純可愛 / 高挑火辣 / 氣質人妻 / 御姐OL / JKF女郎 / 網美麻豆
✅ 各種風格全都有,保證安排滿意
✅ 嚴選妹妹想要什麼類型,這裡通通有!

不滿意打槍不需要任何費用!
服務不好立即換人!
只做高端,不做爛單!
全程現金交易,安全又安心!

📍外送範圍:台北|新北 | 新竹|台中|彰化|台南|高雄 全台服務
⏰ 小澄上線時間:中午 12:00 – 凌晨 3:00

💰 消費方式:現金滿意消費
❌ 不轉帳 ❌ 不匯款 ❌ 不買點數
小澄外送茶,只給你最優質的選擇,讓你夜夜不孤單❤️

總聯絡方式 :linktr.ee/danna258
 

b69038

Lv.1 初心者
註冊
2025-10-07
文章
1
評分
0
聲望
0
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463
gleezy號kk9003大屌顶着嫩穴操!极品身材高颜值美女被捅主任举起来操!无毛美穴性感美脚telegram賬號:b952463