해석이 필요한 코드
df = pyupbit.get_ohlcv(coin_ticker, interval="day", count=get_count)
# 이동평균선 계산
ma_dfs = [] # 이동평균 데이터를 저장할 리스트
for ma in range(3, 201): # 3일선부터 200일선까지 반복
ma_df = df['close'].rolling(ma).mean().rename(str(ma) + 'ma') # 이동평균 계산
ma_dfs.append(ma_df) # 리스트에 추가
ma_df_combined = pd.concat(ma_dfs, axis=1) # 여러 개의 이동평균선을 하나의 데이터프레임으로 합침
df = pd.concat([df, ma_df_combined], axis=1) # 기존 데이터프레임(df)과 합침
df.dropna(inplace=True) # NaN(결측치) 제거 → 가장 긴 이동평균선(200ma)까지 계산하려면 최소 200개의 데이터가 필요
df = df[:len(df)-cut_count] # 최신 데이터 중 'cut_count' 개수만큼 제거
📌 예제 데이터
import pandas as pd
data = {
'close': [100, 102, 105, 103, 107, 110, 112, 115, 118, 120]
}
df = pd.DataFrame(data)
print(df)
🔹 데이터프레임(df)
close
0 100
1 102
2 105
3 103
4 107
5 110
6 112
7 115
8 118
9 120
📌 rolling(ma).mean() 적용 (5일 이동평균)
df['5ma'] = df['close'].rolling(5).mean()
print(df)
🔹 실행 결과
close 5ma
0 100 NaN
1 102 NaN
2 105 NaN
3 103 NaN
4 107 103.4
5 110 105.4
6 112 107.4
7 115 109.4
8 118 112.4
9 120 115.0
- 처음 4개의 값은 NaN → 이유는 5개의 데이터를 모아야 평균을 낼 수 있기 때문.
- 이후부터는 5개 값의 평균이 계산됨.
🔥 결론
📌 이 코드가 하는 일
- ma일 동안의 종가 평균을 계산하여 이동평균선 생성.
- 새로운 컬럼 이름을 "{ma}ma" 형식으로 변경 (예: "5ma", "20ma").
📌 이동평균선 추가
ma_dfs = []
for ma in range(3, 6): # 3~5일 이동평균선만 계산 (예제 데이터가 적어서)
ma_df = df['close'].rolling(ma).mean().rename(str(ma) + 'ma')
ma_dfs.append(ma_df)
ma_df_combined = pd.concat(ma_dfs, axis=1)
df = pd.concat([df, ma_df_combined], axis=1)
df.dropna(inplace=True)
df = df[:len(df)-2] # 최신 2개 데이터 삭제
print(df)
🔹 결과 데이터프레임
close 3ma 4ma 5ma
4 107 104.67 104.25 103.40
5 110 106.67 106.00 105.40
6 112 109.00 108.00 107.40
7 115 112.33 111.00 109.40
8 118 115.00 113.75 112.40
'Front > :::: PYTHON(파이썬) ::::' 카테고리의 다른 글
파이썬 가상환경 활성화 및 크론탭 가상환경 설정으로 실행 (0) | 2025.02.11 |
---|---|
해외선물 물타기 계산기 코드 (0) | 2024.10.22 |
npm : 이 시스템에서 스크립트를 실행할 수 없으므로 오류 해결.. (1) | 2024.05.15 |
파이썬 셀레니움 할때 크롬 드라이버 자동 검색 (0) | 2023.03.15 |
영화 api 서비스 를 chatGpt 에게 물어봄 (0) | 2023.02.17 |
fastApi 개발 흐름 정리 (0) | 2022.12.21 |
fastapi vs django 둘 중 누가 편햐? (0) | 2022.12.21 |
python 가상환경 venv 이해 (0) | 2022.12.07 |