Inflearn brand logo image

인프런 커뮤니티 질문&답변

JY님의 프로필 이미지
JY

작성한 질문수

베개 투자법: 자면서 돈 버는 AI 주식 자동 매매 머신

경제 및 주가 데이터 수집 📑

코드 관련

해결된 질문

작성

·

142

·

수정됨

0

안녕하세요 지금 먼저 강의 듣고 진행해보고있습니다

 

  • 코드관련

     

    지금 강사님 코드와 혼동되어있는 것 같습니다 예를들어 getbalance에 보면 appkey나 appsecret 이것도 다 강사님 개인 관련 키 아닌가요? 깃에서 다운받은 코드에 개인적인 코드가 나와있는 것 같아 확인하고자 합니다 tr id부분도 선생님 개인 코드아닌지요?

 

  • localhost:8000관련

     

    run.py를 하더라도 주소창에 localhost를 검색하더라도 나오지가 않습니다 이럴경우 어떻게 해야하나요? 데이터를 계속 불러오기 하고있어서 안됩니다.
    제공된 코드를 가지고 어디어디를 수정해야하는지만 강의가 있으면 좋겠습니다. 너무 번잡스럽습니다.

      강사님 개인적인 코드도 섞여있어서 그런지 localhost자체도 안됩니다

 

  • run.py를 하기 위해 강의에서 한대로 cursor에 물어봤습니다. evn에먼저 api값을 넣었고 이걸 기준으로 다른 모든 코드들을 고쳐달라고 하였습니다. 그러나 데이터만 수집이 되는게 아니라 매수 매도까지 해버리네요 데이터 따로 / 매수 매도 따로 되게 하면 좋겠습니다.

 

  • 지금 제가 아직 다 본게 아니다보니 모르는걸수도있는데, 자동으로 매매 되는거 말고 주가 예측까지만 하는것도 되는것인지 저는 주가를 예측하게끔 하고싶습니다. 이것도 가능한지 궁금합니다 (이건 계속 강의를 봐봐야겠지만 확인차 먼저 글 남깁니다)

 

먼저는 코드를 제대로 수정이 필요해보입니다 이전에 강의가 마음에 들어 오픈되자마자 구매했는데 지금 너무 아쉬운 부분들이 많습니다

답변 1

0

안녕하세요, @JY님.

관심 가져주셔서 감사드리며, 아쉬운 부분이 있었다는 점에서는 죄송하게 생각합니다.

우선 위 질문 달아주신 부분에 대해 상세하게 설명해보겠습니다.

 

  • 코드관련

     

    지금 강사님 코드와 혼동되어있는 것 같습니다 예를들어 getbalance에 보면 appkey나 appsecret 이것도 다 강사님 개인 관련 키 아닌가요? 깃에서 다운받은 코드에 개인적인 코드가 나와있는 것 같아 확인하고자 합니다 tr id부분도 선생님 개인 코드아닌지요?

 답변:

우선 기존 코드에 아래 이지미와 같이 제가 개인적으로 테스트 했던 파일들이 지워지지 않고, 그대로 남아있어서 혼란이 있으셨을 수 있을 것 같습니다. 현재는 해당 부분 제거하고 코드 업데이트 해놨으니 기존 코드 지우시고 gitlab repository에서 다시 git pull 해주시길 바랍니다. ㅎㅎ

image.png

appkey나 appsecret 설정은 한국투자증권 계좌를 사용해 투자하기 위한 패스워드로 생각하시면 되며, .env 파일에만 설정하면 됩니다. 해당 부분에 대해서는

  1. 주식 자동 매매 소스코드 기본 설명 (5분 이후)

12. 주식 자동 매매 API 사용 방법 및 설명 1 강의 (4분 이후)

강의에서 .env 설정을 어떻게 하면 되는지 상세하게 다룹니다.

TR_ID 값은 현재 .env 값을 그대로 사용하면 됩니다. 한국투자증권 API 마다 TR_ID가 달라서 제가 코드 내부에 명시하여 정상 작동하도록 만들어놨으니 해당 부분은 그대로 사용해주시면 감사하겠습니다 ㅎㅎ

 

  • localhost:8000관련

     

    run.py를 하더라도 주소창에 localhost를 검색하더라도 나오지가 않습니다 이럴경우 어떻게 해야하나요? 데이터를 계속 불러오기 하고있어서 안됩니다.
    제공된 코드를 가지고 어디어디를 수정해야하는지만 강의가 있으면 좋겠습니다. 너무 번잡스럽습니다.

      강사님 개인적인 코드도 섞여있어서 그런지 localhost자체도 안됩니다

답변:

python run.py를 통해 실행하시면 Application startup complete 메시지가 나옵니다. 그 이후 localhost:8000/docs 경로로 이동하시면 swagger ui를 보실 수 있으실 겁니다.

맨 처음 실행하셨을 때는 데이터 수집이 좀 더 걸릴 수 있는데, 일반적으로는 금방 끝납니다. 해당 부분은 코드 다시 받아주시고 시간이 얼마나 걸리는지 다시 한번 확인 부탁드립니다!!

제공 드린 코드에서 .env, stock.py (9번째 줄 api_key) 만 수정하면 제가 강의에 수행한 것 처럼 정상 작동합니다.

혹시 몰라서 저도 방금 코드를 지우고, git repository에서 코드를 다시 받고, .env, stock.py (9번째 줄 api_key) 만 수정하여 테스트해본 결과 정상 작동합니다.

위에 이미지를 통해 말씀드렸던 개인 코드는 소스코드 실행에 영향을 미치지 않는 개인 코드입니다. 해당 코드는 현재는 제거해놨습니다~ 번거로우시겠지만 코드를 지우고 다시 받아서 실행 부탁 드리겠습니다~

 

  • run.py를 하기 위해 강의에서 한대로 cursor에 물어봤습니다. evn에먼저 api값을 넣었고 이걸 기준으로 다른 모든 코드들을 고쳐달라고 하였습니다. 그러나 데이터만 수집이 되는게 아니라 매수 매도까지 해버리네요 데이터 따로 / 매수 매도 따로 되게 하면 좋겠습니다.

답변:

방금 위 질문에 대해 답변 드린 것 처럼 .env 파일과, stock.py (9번째 줄 api_key) 부분만 수정하면 됩니다. 다른 부분은 코드를 수정하면 안 됩니다.  

시스템 실행 시 데이터 수집이 다 돌고나서 자동 매매가 실행되는 부분에 대해 말씀주신 것으로 파악됩니다. Swagger UI를 통해서 아래 이미지와 같이 자동 매수 / 자동 매도 스케줄러를 종료시킬 수 있습니다.

image.pngimage.png

만약 시스템 시작 시 스케줄러를 없애고 싶으시다면 app 폴더 하위에 main.py 코드를 보면 아래와 같은 코드가 있습니다. start_scheduler, start_sell_scheduler 함수 부분을 주석처리하시면 됩니다.

해당 부분도 강의를 이어서 보시면 설정하는 부분이 있으니 참고 부탁드립니다. ㅎㅎ

 

async def startup():
    # 시작 시 즉시 한 번 경제 데이터 수집 실행
    print("서비스 시작 시 경제 데이터 수집을 즉시 실행합니다...")
    await update_economic_data_in_background()
    print("초기 경제 데이터 수집이 완료되었습니다.")
    
    # 경제 데이터 업데이트 스케줄러 시작 (매일 한국시간 새벽 6시 5분에 실행)
    start_economic_data_scheduler()
    # 주식 자동매매 스케줄러 시작
    start_scheduler()
    start_sell_scheduler()
    print("경제 데이터 업데이트 스케줄러가 시작되었습니다. (매일 한국시간 새벽 6시 5분)")
    print("주식 자동매매 스케줄러가 시작되었습니다.")
    print("주식 자동매도 스케줄러가 시작되었습니다.")

 

 

  • 지금 제가 아직 다 본게 아니다보니 모르는걸수도있는데, 자동으로 매매 되는거 말고 주가 예측까지만 하는것도 되는것인지 저는 주가를 예측하게끔 하고싶습니다. 이것도 가능한지 궁금합니다 (이건 계속 강의를 봐봐야겠지만 확인차 먼저 글 남깁니다)

답변:

당연히 주가 예측까지만 하는 것도 가능합니다.

전체 프로세스는 아래와 같습니다.

  1. 시스템 실행 시 경제지표 및 주가 정보 수집 (현재 시점 기준으로 수집해야 될 데이터가 있을 경우에만 데이터를 수집하도록 구성 되어있음.)

  2. colab을 통해 ML 예측 코드를 실행하면 DB를 통해 예측 정보 (14일 후 주가)를 저장하게 됩니다.

  3. 아래 이미지의 generate-complete-analysis 함수를 실행하면, 주가 정보에 대해 기술적 분석을 수행하고, 뉴스 감정 분석을 수행하고, DB에 저장하게 됩니다.

image.png

 

방금 이전 답변에서 말씀드렸던 데로 start_scheduler(), start_sell_scheduler() 함수를 주석처리하시면 주가 예측만 할 수도 있습니다.

 

그리고 각 동작 수행마다 작동 방식을 어떻게 내 맘데로 변경하면 되는지에 대해서도 강의를 들으시는 분들이 지겨우실 정도로 많이 얘기해놨습니다 ^^

그 부분은 걱정하지 않으셔도 될 것 같습니다.

 

이 외에도 질문이 있으시다면 언제든 편하게 말씀 부탁 드립니다.

최대한 빠르게 답변 드리겠습니다.

감사합니다.

JY님의 프로필 이미지
JY

작성한 질문수

질문하기