작성
·
224
0
수고하십니다.
질문하나 올립니다.
아래코드에서 전일까지 10일 거래량 평균(dfs['Vma10'].shift(1))을 장중 거래시간 390분을 1분단위로 나누고
이것의 시간대별로 누적거래량과 현재일 실 시간대별 누적거래량을 비교하여 10배이상되는 종목을 찾아 낼려는 의도입니다.
전일까지 10일 거래량 평균(dfs['Vma10'].shift(1))을 장중 거래시간 390분을 1분단위로 나누는 것은 어렵지 않을 것 같은데
오늘 실시간에서 거래량을 산출하고 비교하는게 감이 잡히지 않습니다.
어떤 종목이 전일까지 10일 거래량 평균(dfs['Vma10'].shift(1))의 시간대별로 누적거래량과 오늘 동 시간대별 누적거래량과
비교치와 10이상이면 True가 반환되도록 코드를 부탁드립니다.
아, 1분 마다 비교하면 저장해야할 데이터가 너무 많아 지는 것 같네요 장 초반은 10분마다 30분이후 부터는 30분마다 비교하는식
으로 부탁드립니다.
dfs = pd.DataFrame(dfs)
dfs = dfs.iloc[0:, :8]
dfs.columns = ['code', 'Close', 'Volume', 'VolumeC', 'Date', 'Open', 'High', 'Low']
dfs = dfs[['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'VolumeC']]
dfs[['Open', 'High', 'Low', 'Close', 'Volume', 'VolumeC']] = dfs[['Open', 'High', 'Low', 'Close', 'Volume', 'VolumeC']].astype(int).abs()
dfs['Date'] = pd.to_datetime(dfs['Date'].astype(str), format='%Y-%m-%d')
dfs.reset_index(drop=True, inplace=True)
dfs = dfs[::-1]
dfs['Vma10'] = dfs['Volume'].rolling(window=10).mean()
dfs['V/Vma10-1'] = np.where((dfs['Vma10'].shift(1)) != np.nan, dfs['Volume'] / (dfs['Vma10'].shift(1)), np.nan)
dfs['V/Vma10-1'] = round(dfs['V/Vma10-1'], 1)
강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)
질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요.
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!
구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.
기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다.
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요.
• 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
답변 2
1
안녕하세요!
우선 질문게시글 작성시 나와있는 공지사항처럼 수업내용과는 별개의 문제, 적어주신 것처럼 개별 데이터를 사용한 예제나 문제에 대해서는 답변드리기가 어려운점 양해바랍니다.
제가 이해한 바로 간단히 아이디어 정도만 말씀드리면, 우선 과거 데이터에 대해서는 각 columns이 '종목_volume'인 df를 만들고(multi 종목인 경우 가정), rolling(), cumsum() 등으로 시간에 따른 누적거래량을 구합니다. 그리고 현재부터 새로운 데이터가 업데이트 될 때, "columns이 '종목_volume'인 df"형태를 series형태로 만들어서, 앞서만든 누적거래량 series를 서로 비교할 것 같습니다(column과 index가 align이 되게하여 pandas의 연산 특성 + vectorized operation을 활용할 수 있습니다)
0
네, 먼저 답변 주신데 감사드립니다.
실시간에서 시간을 인식하고 설정하는 법 좀 알려 주시면 않되겠는지요?
시간을 인식하게 해야 과거 데이터와 실시간 데이터가 비교가 될 것 같습니다 만 ..
감사합니다.