sharebook-kr / book-cryptocurrency

Apache License 2.0
170 stars 135 forks source link

위키 독스 수정 사항 제보 드립니다. #5

Open ghost opened 2 years ago

ghost commented 2 years ago

[1] 10-4 챕터 orderbook_0.py에 import sys가 두번 나옵니다. 분명히 이유가 없는 코드고, 이유가 있다고 해도 초보자들이 모를게 확실한 부분인데 설명이 아무것도 없어 문의 드립니다..

10-6 챕터에도 역시 import sys를 두번 사용한 부분이 나옵니다.

[2] 10-2장 chart_widget_4.py에 curr price가 curr pirce 로 나옵니다. 변수명 오타로 보이는데 수정하는 것이 좋을 것 같습니다.

[3] 챕터 10-6 깃허브 코드에는 변수 이름이 PrevClosePrice인데 위키독스에는 prevClosePrice라고 적혀있어서 혼동 가능할 것 같습니다.

[4] 10-6 챕터 코드에서 QThread를 사용하지만 위에 import 구문은 생략돼있습니다. 코드에 "from PyQt5.QtCore import QThread,pyqtSignal" 구문을 적어줘야하는데 그 코드가 없어서 이전 페이지까지 가서 확인해야합니다. 숙련자는 상관 없고 저도 금방 찾았지만 초보자에게는 큰 헤맬 수 있는 부분이 될 수 있을 것 같습니다.

[5] 10-4챕터를 그대로 따라서 입력했을 뿐인데 프로그램 상의 전일 고가가 빗썸 홈페이지와 다르게 나옵니다.

코드를 바꾸지도 않았는데 지금은 똑같게 나오고요, 여기서 사진 첨부 기능을 지원하지 않아서 사진은 못 올리겠네요.

잘 안될때 print(int(data['content']['highPrice'])) 해보았더니 전일 고가가 홈페이지랑 다르게 나옵니다.

낮 12시가 지나지 않은 상태에서 하면 원래 다르게 나오는 건가요?

[6] 10-4 챕터를 보면 깃허브에 완성된 코드가 있다는 말이나 깃허브 링크가 마지막에 확실히 있었으면 좋겠고(orderbook_4.py를 보라는 말만 있습니다.)

깃허브에 있는 코드도 추가된 부분에 추가됐다고 주석은 있는데 추가되었다는 것을 말하기 전엔 알기 힘들고

orderbook_3.py에 수정이라고 주석 친 부분이 사실 위키독스랑 같은 부분입니다. 현재 위키독스에 반영이 된건지 안된건지 계속 봐야하는데 수정이라는 말은 위키독스랑 다를때 쓰면 좋을 것 같습니다.

[7] 06-3 챕터 "변동성 돌파 + 상승장 투자 전략 구현" 부분을 보면 위키독스에는 전체 코드가 나와있지 않고 깃허브에만 코드가 나와있습니다. 이 부분에 연결 링크가 있었으면 좋겠습니다. target_price나 ma_5를 계산하는 부분이 코드 사이사이에 산재해있고 없어졌다가 생겼다가 해서 따라하다가 놓치기 쉽습니다.


다른 것들은 사소한 내용이지만,

가장 중요한 건 1번,5번 같습니다.

여기에 제보를 하게 된 이유고 전일 고가가 다르게 나오는 이유와

import sys가 두번 나오는 이유가 궁금합니다.

인터넷에서 물어보았지만 딱히 제대로 대답해주는 분도 안 계셨고

분명 두번이나 나와서 실수로는 안 보이는데 의도가 궁금합니다.

ghost commented 2 years ago

사진을 첨부 못하는데, 20220806 오후 3시 12분 현재도

빗썸 api에는 당일 고가가 30946000원으로 나오지만 빗썸 홈페이지에는 30862000원으로 나옵니다.

ghost commented 2 years ago

그리고 10-7 코드에서 버튼 이름을 button으로 설정해야 코드가 정상적으로 작동하는데(기본값은 pushButton임) 이 부분도 반영되어있지 않으며, 코드에서 self.b = Bithumb(apiKey,secKey) 부분도 from pybithumb import *을 미리 써야하는데 10-7장에는 해당 내용이 언급되어있지 않아 쌩초보자들에게 헷갈림을 줄 수 있는 부분입니다.

또한 해당 위키독스 코드를 그대로 배끼면

Traceback (most recent call last): File "C:/Users/xxxxxx/PycharmProjects/auto_buying/main.py", line 34, in clickBtn self.textEdit.append(f"보유 현금 : {self.balance[2]} 원") AttributeError: 'MainWindow' object has no attribute 'balance'

라고 에러가 나올 수 밖에 없습니다.

왜냐하면 코드 자체가 스코프 문제로 실행이 되지 않는 코드이기 때문입니다. 깃허브 코드에는 self.balance라는 변수를 써서 해결이 되어있지만 위키독스에서는 그냥 balance라는 변수를 썼기에 코드가 실행이 될 수 없습니다.

ghost commented 2 years ago

하지만 빗썸의 시장가 API는 수수료 이외에도 30%의 여유가 존재해야 주문이 가능합니다. 그러므로 해당 코드에는 문제가 있는 것 같습니다.

ghost commented 2 years ago

또, 10-7장 volatility.py 를 만들때 그것을 다른 곳에서 쓰려면 from volatility import *를 사용해야한다는 말이 없습니다. 깃허브 코드를 뒤져봐야 알 수 있는 부분입니다. 물론 파이썬에 대해 기초가 있는 사람에게는 상관 없겠지만 쌩초보가 따라할때 힘든 부분으로 보입니다.

스스로 공부해서 따라하면 되는데 뭐가 문제냐 라고 하실 수도 있겠지만, 이렇게 github랑 위키독스가 코드가 하나하나 다르다보면 코드를 작성한 학생이 위키독스를 믿지 못하게 되고 깃허브 들어가서 하나하나 다 맞는지 확인하게 되는 신뢰성의 문제가 생기게 됩니다.

이게 그냥 일반적인 프로그램이 아니고 돈이 달린 프로그램인데 스트레스와 피곤함을 주는 요소가 될 것이라고 생각합니다.

ghost commented 2 years ago

또한 위키독스 10-7 챕터 마지막 코드에 unexpected indent가 있습니다.

초보자에겐 혼돈을 일으킬 수 있는 부분이므로 수정 바랍니다.

ghost commented 2 years ago

또한 위키독스 10-7챕터에서 코드가 제대로 작동하려면 from pybithumb import Bithumb 라는 구문이 있어야함에도 불구하고 위키독스에는 그런 내용이 나와있지 않습니다.

ghost commented 2 years ago

그리고 이 부분은 완전 엉터리 같은데 위키독스 10-7챕터의 click_btn 코드를 보면 self.b = Bithumb(apiKey,secKey)라고 돼있고 그 이후에 click_btn의 이 부분 코드를 수정해주는 부분은 없습니다. self.b.get_balance(self.ticker)역시 self.bithumb.get.balance(self.ticker)로 변경되어야합니다.

하지만 깃허브 코드를 보면 self.bithumb = Bithumb(apiKey,secKey)라고 돼있습니다.

변수 이름이 자꾸 바뀌는게 문제 같네요.

이 정도로 관리가 안될 거면 차라리 깃허브 코드를 보고 안 맞는 부분이 있으면 수정하라고 깃허브 링크를 걸어놓던가 해야할 것 같습니다.

ghost commented 2 years ago

또한 10-7 챕터의 main_4.py를 보면 위키독스에는 receiveTradingSingal을 정의하는 부분에 indent가 있습니다.

github 코드에는 없습니다. 이것은 명백한 오타로 초보자에게 혼란을 줄 수 있어서 제보 드립니다.

또한 chart.py와 orderbook.py의 스레드 부분에 self.dataSent.emit(data) 이라는 코드가 있는데 잘은 모르겠지만 여기에 if data != None이라는 조건이 붙어야할 것 같습니다.

왜냐하면 네트워크가 핸드폰 핫스팟 써서 불안정할때인 것 같은데 TypeError를 뜨게 합니다. data가 None이 됩니다.

ghost commented 2 years ago

드론이든, 자동매매 프로그램이든, 프로그램이 잘못되면 실제 물리적인 피해가 일어날 수 있어서 섬세하고 예민한 부분인데 코드가 정확하고 신뢰성이 있어야한다고 생각합니다. 일반 지도에다가 정보 표시하는 프로그램 같은 건 프로그램 오류가 나도 문제가 없지만, 이것은 실제로 존재하는 것들을 다루기 때문에 문제가 된다고 생각합니다.

ghost commented 2 years ago

그리고 orderbook.py 코드에 대해서도 의견 드립니다.

위키독스에서 orderbook.py를 초기화할때는 init(parent=None)과 같이 인수를 붙여서 초기화하고, 깃허브에서는init()을 합니다.

그런데 깃허브 쪽 코드를 따라서 init()을 사용하면 gui가 엉망이 됩니다. 실행도 안되고 오류가 생깁니다. ticker를 이상한 것으로 받아옵니다.

chart.py와 overview.py는 전부 init에 Parent가 인수로 들어가는데 왜 orderbook.py는 깃허브에 아무 인수가 들어가있지 않은 코드가 올라와있을까요?