INVESTAR / StockAnalysisInPython

456 stars 412 forks source link

Backtrader_RSI 실행시 plot() 이 제대로 안되는 듯 합니다. 에러가 납니다. #49

Open sugarijoo opened 3 years ago

sugarijoo commented 3 years ago

실행은 잘 되는 듯한데... 마지막에 그림이 plot이 안되는 것 같습니다.

1

INVESTAR commented 3 years ago

우선 제 PC에서는 아래 코드가 정상적으로 돌아가는 것을 확인했습니다. https://github.com/INVESTAR/StockAnalysisInPython/blob/master/07_Django_and_Automation/ch07_08_Backtrader_RSI.py

보내주신 에러 메시지만 봐서는 정확한 파악이 어려우나 저도 예전에 날짜 데이터 자료형이 맞지 않을 때 matplotlib에서 plot()을 못했던 기억이 어렴풋이 납니다. https://jsp-dev.tistory.com/104

Anaconda로 설치했을 때 워낙 설치되는 라이브러리가 많다보니 내부적으로 한 번 꼬이면 바로잡기가 힘든 문제점이 있습니다. 만일 날짜 데이터 문제가 아니라면 matplotlib만이라도 제거했다가 다시 설치해 보시기 바랍니다.

sugarijoo commented 3 years ago

답변 감사드립니다.

에러 메세지의 맨 아래 부분이 의심이 되서 "c:\Anaconda3\lib\site-packages\backtrader\plot\locator.py" 의 35 line에 찾아가서 아래와 같이 warings을 포함을 안시키니 정상적으로 그래프 출력이 됩니다.

[Before] from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN, MONTHS_PER_YEAR, DAYS_PER_WEEK, SEC_PER_HOUR, SEC_PER_DAY, num2date, rrulewrapper, YearLocator, MicrosecondLocator, warnings)

[After] from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN, MONTHS_PER_YEAR, DAYS_PER_WEEK, SEC_PER_HOUR, SEC_PER_DAY, num2date, rrulewrapper, YearLocator, MicrosecondLocator) #, warnings) #으로 warings부분 제외시킴

INVESTAR commented 3 years ago

정확한 이유는 모르겠지만 제가 가진 클라우드 PC에서도 동일한 현상이 확인되었습니다. backtrader 최신 버전(1.9.76.123)에서 뭔가 형상 변화가 있었던 것 같습니다. lib\site-packages\backtrader\plot\locator.py의 35번째 줄의 warnings를 제거하니 plot이 가능하네요.

locator

junmarques commented 3 years ago

matplotlib가 버전이 높아서 그럴 수 있다는 첩보가.. 버전을 낮춰서 시도해보시기 바랍니다.^^

pip uninstall matplotlib # or conda pip install matplotlib==3.2.2