from pybit.unified_trading import HTTP import sys import os # 모듈 경로 추가 sys.path.append(os.path.abspath('M:/WORK_PYTHON/CySDK_PYTHON')) from CyTypeDef import KlineInterval from CyUtilTime import cy_utc_datetime_to_epoch_ms from CyUtilPybit import cy_get_kline from CyUtilFile import cy_save_to_csv_bybitcandleheader, cy_generate_csv_filename_bybit,cy_delete_existing_file def main(): global session session = HTTP(testnet=False) # 데이터 요청할 심볼 및 시간 간격 지정 category = "spot" symbol = "BTCUSDT" interval = KlineInterval.M5 # 시간 범위 설정 utc_datetime_start_str = "2024.08.01_00.00.00" utc_datetime_end_str = "2024.08.21_00.00.00" start_ms = cy_utc_datetime_to_epoch_ms(utc_datetime_start_str) end_ms = cy_utc_datetime_to_epoch_ms(utc_datetime_end_str) total_number_of_candle_mustbe = 1 + (end_ms - start_ms) // interval.to_milliseconds() # CSV 파일명 생성 csv_file = cy_generate_csv_filename_bybit(category, symbol, interval, utc_datetime_start_str, utc_datetime_end_str) cy_delete_existing_file(csv_file) first_write = True total_number_of_candle_acquired = 0 while True: try: candle_list = cy_get_kline(session,category, symbol, interval, start_ms, end_ms) except Exception as e: print(f"Stop Processing. {str(e)}") break if not candle_list: print("Complete Candle Acquisition. the number of candle 0") break total_number_of_candle_acquired += len(candle_list) print(f"First candle: {candle_list[0]}") print(f"Last candle: {candle_list[-1]}") cy_save_to_csv_bybitcandleheader(csv_file, candle_list, first_write) first_write = False oldest_candle_epoch_ms = int(candle_list[-1][0]) end_ms = oldest_candle_epoch_ms - interval.to_milliseconds() if end_ms < start_ms: print("Completed Candle Acquisition") print(f"Total number of acquired candles = {total_number_of_candle_acquired}") print(f"The number of candle must be {total_number_of_candle_mustbe}") print(f"The missing number of candle = {total_number_of_candle_mustbe - total_number_of_candle_acquired}") break if __name__ == "__main__": main()