2025. 1. 6. 15:45ㆍPYTHON
글 2-5 링크
[코인]나만의 차트 및 추출방법_20250105 (2)
업비트 API를 활용해 코인 데이터를 추출하고 분석하는 방법을 소개합니다. 아래 단계별 가이드를 통해 필요한 데이터를 효율적으로 수집하고, 이를 활용해 투자에 도움이 되는 분석 환경을 구
pi000.tistory.com
에서 저장된 내용을 추출하여 기본데이터를 만들어 보려한다.
1. 데이터 추출 기본 설정
기본적으로 4시간 기준으로 500 ~ 1000개의 데이터를 불러와서 저장합니다. 데이터 추출 시 MA(Moving Average, 이동 평균)와 같은 주요 지표를 제외한 SRSI, RSI, CCI, MACD, TSI, SMI 등의 지표는 모두 현재 기준으로 100라인 이상의 데이터를 가져와야만 추출이 가능합니다.
2. 데이터 추출 및 저장 방법
저는 아래와 같이 2025년 1월 6일 13시 기준의 4시간 데이터를 추출하여 저장했습니다.
3. 이동 평균(MA) 추출
MA는 투자 분석에 중요한 지표입니다. 다양한 MA 값을 추출하여 분석할 수 있습니다. 예를 들어, MA1, MA2, MA3, MA4, MA5, MA8, MA10 등의 다양한 MA 값들이 있습니다.
데이터 추출을 위한 코드 예시:
def getTickerInfo_N1(self, ticker):
try:
connection = MysqlStockManagerChangeDBMaster(self.strIP, self.strDB)
cursor = connection.cursor()
sql = (f"SELECT idx, date FROM `{self.strTable}_{ticker}_{self.ADF}` "
f"WHERE flag = '{self.flag}' "
f"ORDER BY date DESC "
f"LIMIT 500")
print(sql)
cursor.execute(sql)
rows = cursor.fetchall()
CurrentDateTime = self.DATETIMEUTIL.getCurrentDateBunCho()
for rs in rows:
idx = rs[0]
strDate = rs[1]
self.getTickerInfo_N2(idx, ticker, strDate)
except Exception as e:
print(f" ___________ ERROR getTickerInfo ______________{e} ")
finally:
if cursor:
cursor.close()
if connection:
connection.close()
500개의 데이터를 가져와서 해당 데이터를 아래의 기준으로 추출한다.
def getTickerInfo_N2(self, idx, ticker, strDate):
try:
connection = MysqlStockManagerChangeDBMaster(self.strIP, self.strDB)
cursor = connection.cursor()
sql = (f"SELECT * FROM "
f"(SELECT `date` AS date, `open` AS open, `high` AS high, "
f"low` AS low, `close` AS close "
f"FROM `{self.strTable}_{ticker}_{self.ADF}` "
f"WHERE date <= '{strDate}' "
f"AND flag = '{self.flag}' "
f"ORDER BY date DESC LIMIT 200 ) AS T1 "
f"ORDER BY T1.date ASC")
print(sql)
df = pd.read_sql_query(sql, connection)
time.sleep(0.05)
self.getDataFrameConverter(idx, ticker, strDate, df)
except Exception as e:
print(f" ___________ ERROR getTickerInfo ______________{e} ")
finally:
if cursor:
cursor.close()
if connection:
connection.close()
위 코드에서 getTickerInfo_N1 함수는 특정 티커(ticker)의 500개 데이터를 가져옵니다. 이 데이터를 활용해 이후 getTickerInfo_N2 함수로 더 많은 데이터를 불러오고, 필요한 분석을 수행합니다.
데이터 처리 및 MA 값 계산 예시:
from finta import TA
def getDataFrameConverter(self, idx, ticker, strDate, df):
try:
self.df = df
ar_MA = []
MAValue_1 = TA.SMA(self.df, 1)
MAValue_2 = TA.SMA(self.df, 2)
MAValue_3 = TA.SMA(self.df, 3)
MAValue_4 = TA.SMA(self.df, 4)
MAValue_5 = TA.SMA(self.df, 5)
MAValue_6 = TA.SMA(self.df, 6)
MAValue_7 = TA.SMA(self.df, 7)
MAValue_8 = TA.SMA(self.df, 8)
MAValue_9 = TA.SMA(self.df, 9)
MAValue_10 = TA.SMA(self.df, 10)
MAValue_12 = TA.SMA(self.df, 12)
MAValue_15 = TA.SMA(self.df, 15)
MAValue_18 = TA.SMA(self.df, 18)
MAValue_20 = TA.SMA(self.df, 20)
MAValue_25 = TA.SMA(self.df, 25)
MAValue_30 = TA.SMA(self.df, 30)
MAValue_35 = TA.SMA(self.df, 35)
MAValue_40 = TA.SMA(self.df, 40)
MAValue_45 = TA.SMA(self.df, 45)
MAValue_50 = TA.SMA(self.df, 50)
MA_1 = MAValue_1.iloc[-1]
MA_2 = MAValue_2.iloc[-1]
MA_3 = MAValue_3.iloc[-1]
MA_4 = MAValue_4.iloc[-1]
MA_5 = MAValue_5.iloc[-1]
MA_6 = MAValue_6.iloc[-1]
MA_7 = MAValue_7.iloc[-1]
MA_8 = MAValue_8.iloc[-1]
MA_9 = MAValue_9.iloc[-1]
MA_10 = MAValue_10.iloc[-1]
MA_12 = MAValue_12.iloc[-1]
MA_15 = MAValue_15.iloc[-1]
MA_18 = MAValue_18.iloc[-1]
MA_20 = MAValue_20.iloc[-1]
MA_25 = MAValue_25.iloc[-1]
MA_30 = MAValue_30.iloc[-1]
MA_35 = MAValue_35.iloc[-1]
MA_40 = MAValue_40.iloc[-1]
MA_45 = MAValue_45.iloc[-1]
MA_50 = MAValue_50.iloc[-1]
time.sleep(0.2)
except Exception as e:
print(f" _____ getDataFrameConverter _____ {ticker} _____ {e}")
finally:
pass
finta에 있는 라이블러리 함수를 사용하였다.
MA에 해당하는 모든 내용을 필요한 만큼 추출하였다. 해당 내용을 데이터베이스에 저장한다.
'PYTHON' 카테고리의 다른 글
[PYTHON]나만의 차트 및 데이터 추출방법 (SRSI/RSI) (4) (4) | 2025.01.07 |
---|---|
[PYTHON] 실시간 달러 가져오기 (7) | 2025.01.06 |
[PYTHON]나만의 차트 및 데이터 추출방법 (2) (4) | 2025.01.05 |
[PYTHON]나만의 차트 및 데이터 추출방법_20250105 (1) (1) | 2025.01.05 |
[PYTHON] 실시간 달러 가져오기 (1) | 2024.03.04 |