BIBOT
BIBOT
BIBOT
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • 경제뉴스 일기 (11)
    • 바이낸스 (17)
    • 코딩 (15)
    • 기술적 트레이딩 (27)
    • 기타 (1)
    • 경제상식 (6)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 선물거래 계산기
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • 파이썬 바이낸스
  • 서버
  • 우분투

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BIBOT

BIBOT

텐서플로우로 1시간 뒤의 바이낸스 BTCUSDT 시가를 예측하는 프로그램 샘플 만들기
코딩

텐서플로우로 1시간 뒤의 바이낸스 BTCUSDT 시가를 예측하는 프로그램 샘플 만들기

2023. 3. 17. 02:46

 

 

import os
import pandas as pd
import numpy as np
from binance.client import Client
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Dropout
from sklearn.preprocessing import MinMaxScaler

# 바이낸스 API 설정
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
client = Client(api_key, api_secret)

# 데이터 가져오기
symbol = 'BTCUSDT'
interval = '1h'
klines = client.get_historical_klines(symbol, interval, '1000 hours ago UTC')

# 데이터 프레임에 저장
columns = ['open_time', 'open', 'high', 'low', 'close', 'volume', 'close_time', 'quote_asset_volume', 'number_of_trades', 'taker_buy_base_asset_volume', 'taker_buy_quote_asset_volume', 'ignore']
df = pd.DataFrame(klines, columns=columns)
df['open_time'] = pd.to_datetime(df['open_time'], unit='ms')

# 필요한 데이터만 선택
df = df[['open', 'high', 'low', 'close', 'volume']].astype(float)

# 데이터 전처리
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df)

# 시계열 데이터 준비
sequence_length = 60
X, y = [], []
for i in range(sequence_length, len(scaled_data)):
    X.append(scaled_data[i - sequence_length:i])
    y.append(scaled_data[i, 0])

X, y = np.array(X), np.array(y)

# 훈련 데이터와 검증 데이터 분리
split = int(0.8 * len(X))
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]

# LSTM 모델 생성
model = Sequential()
model.add(LSTM(128, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(64, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1))

# 모델 컴파일 및 학습
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))

# 예측
last_sequence = scaled_data[-sequence_length:]
last_sequence = last_sequence.reshape((1, last_sequence.shape[0], last_sequence.shape[1]))
predicted_open_price = model.predict(last_sequence)
predicted_open_price = scaler.inverse_transform(np.concatenate((predicted_open_price, np.zeros((1, 4))), axis=1))[:, 0]


print(f"1시간 뒤의 예측된 시가: {predicted_open_price[0]:.2f} USDT")

 

이 프로그램은 Binance API를 사용하여 BTCUSDT(비트코인 대 USDT)의 과거 시간별 가격 데이터를 가져와 LSTM(Long Short-Term Memory) 신경망을 사용하여 1시간 뒤의 시가를 예측하는 코드입니다. 데이터 전처리를 거친 후, 시계열 데이터를 준비하고, 이를 훈련 데이터와 검증 데이터로 나눕니다. 그 다음, LSTM 모델을 생성하고 학습한 뒤 예측을 수행합니다.

여러 기준 데이터를 변경하여 실제 정확도를 테스트해보는 샘플 코드입니다.

반응형
저작자표시 비영리 변경금지 (새창열림)
    '코딩' 카테고리의 다른 글
    • 바이낸스 펀딩피 전략 기본적인 파이썬 코드
    • 엘리어트 파동이론과 텐서플로우를 결합하여 바이낸스 BTCUSDT의 1시간 뒤 시세 예측하기
    • 파이썬으로 바이낸스 선물거래소에 있는 심볼 중 거래량과 가격 변동이 비슷한 심볼 5개를 찾는 방법
    • 바이낸스 선물 거래에서 사용할 수 있는 페어 트레이딩(Pair Trading) 전략의 예제
    BIBOT
    BIBOT

    티스토리툴바