module 'telegram' has no attribute 'Bot'

AI주식자동매매|2022. 1. 16. 21:37
반응형

다음과 같은 에러가 계속 발생할때...

 

AttributeError: module 'telegram' has no attribute 'Bot'

 

다음과 같이 해 주면 됩니다.

 

pip uninstall python-telegram-bot telegram

pip install python-telegram-bot

반응형

댓글()

미국주식 자동매매 시작하기-3

AI주식자동매매|2021. 12. 25. 07:20
반응형

오늘은 미국주식 자동매매 실제 구동되는 모습을 영상으로 담아서 유튜브에 올렸습니다.

 

12월 21일 미국시간 09:30분부터 약 30분간 구동되는 모습입니다.

 

아직 수정하고 보완해야 할 부분은 많지만, 

매수, 매도는 되는 버젼이라 올려봤습니다.

보시고, 많은 개선의견 부탁드리겠습니다~^^;;

 

https://youtu.be/pgR1zqPqU0g

 

반응형

댓글()

미국주식 자동매매 시작하기-2

AI주식자동매매|2021. 11. 17. 22:21
반응형

안녕하세요?

 

오늘은 제가 한국투자증권에서 제공하는 API를 이용하여 미국주식을 매수하는 소스를 공유하고자 합니다.

한국투자증권을 통해서 쉽게 미국주식도 자동매매가 가능합니다.

 

다음은 지정가로 지정한 수량 및 단가로 매수 주문하는 Python 소스입니다.

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QAxContainer import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("한국투자증권-API")
        self.setGeometry(300, 300, 800, 500)

        self.text_edit = QTextEdit(self)
        self.text_edit.setGeometry(10, 20, 780, 450)
        # self.text_edit.setEnabled(False)

        # 주문 입력 및 전송
        self.tran_os_us_buy = QAxWidget("ITGExpertCtl.ITGExpertCtlCtrl.1")
        self.tran_os_us_buy.SetSingleData(0, "00000000") #계좌일련번호[8], GetAccount() 함수 이용(앞 8자리)
        self.tran_os_us_buy.SetSingleData(1, "00") #계좌 상품코드, GetAccount() 함수 이용(뒤 2자리)
        self.tran_os_us_buy.SetSingleData(2, self.tran_os_us_buy.GetEncryptPassword("0000")) #계좌비밀번호(반드시 암호화 처리 필요)
        self.tran_os_us_buy.SetSingleData(3, "NASD") #거래소코드
        self.tran_os_us_buy.SetSingleData(4, "VMD") #종목코드
        self.tran_os_us_buy.SetSingleData(5, "1") #주문수량
        self.tran_os_us_buy.SetSingleData(6, "6.11") #주문가격
        self.tran_os_us_buy.SetSingleData(7, "") #전화번호
        self.tran_os_us_buy.SetSingleData(8, "") #운용사지정주문번호
        self.tran_os_us_buy.SetSingleData(9, "0") #주문서버구분코드
        self.tran_os_us_buy.SetSingleData(10, "00") # 주문구분, 00: 지정가, 01: 시장가

        self.tran_os_us_buy.RequestData("OS_US_BUY")
        self.text_edit.append("미국 매수주문 전송 [" + str(self.tran_os_us_buy.GetSendRqID()) + "] ")
        self.tran_os_us_buy.ReceiveData.connect(self.tran_os_us_buy_receivedata) #이벤트 연결

    def tran_os_us_buy_receivedata(self):
        # 주문응답 이벤트
        self.text_edit.append("미국 매수주문 응답 [" + str(self.tran_os_us_buy.GetSendRqID()) + "] ")

        #결과 메세지
        self.text_edit.append("[" + str(
        self.tran_os_us_buy.GetSendRqID()) + "] " + self.tran_os_us_buy.GetReqMsgCode() + " " + self.tran_os_us_buy.GetReqMessage())

        self.text_edit.append("주문번호 : " + self.tran_os_us_buy.GetSingleData(1, 0))
        self.text_edit.append("주문시간 : " + self.tran_os_us_buy.GetSingleData(2, 0))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

참조하셔서 사용하시기 바랍니다.

반응형

댓글()

미국주식 자동매매 시작하기-1

AI주식자동매매|2021. 11. 4. 07:37
반응형

안녕하세요?

최근에 한국투자중권 API를 이용해서 미국주식거래를 자동화 하기 위해서 테스트 중입니다.

 

기존 키움증권API 자동매매프로그램을 이용해서 화면구성은 동일하게 했고,

미국 USD 금액처리를 위한 소숫점 처리, 그다음 중요한 미국시간기준으로 내부 시간처리했고,

Invensting.com의 주식차트를 웹크롤링하여 월봉, 일봉, 5분봉정보를 실시간으로 가져와서

화면에 띄우고, 매수매도 싯점을 잡는데까지 처리를 했습니다.

 

아직 자동매수매도 처리까지는 못했고, 

화면에 보이는 미국주식은 eFriend Export API를 통해서 현재계좌 잔고를 보여주는 부분입니다.

 

자동매수매도까지 처리하면 포스팅 올리겠습니다.

반응형

댓글()

종목정보 파악에 유용한 사이트 모음

AI주식자동매매|2021. 5. 8. 14:07
반응형

안녕하세요?

 

주식 자동매매할때, 내가 선택한 종목이 괜찬은 투자할만한 종목인지,

기관에서는 추천하고 있는 종목인지 비교해 보기 위해서는 종목정보를 분석할 필요가 있습니다.

 

이때, 유용한 사이트를 모아봤습니다.

 

1. 컴퍼니가이드(CompanyGuide)

    http://comp.fnguide.com 

 

삼성전자(A005930) | Snapshot | 기업정보 | Company Guide

삼성전자 005930 | 홈페이지 홈페이지http://www.samsung.com/sec 전화번호 전화번호031-200-1114 | IR 담당자 02)2255-9000 주소 주소경기도 수원시 영통구 삼성로 129 (매탄동) KSE  코스피 전기,

comp.fnguide.com

경쟁사와 비교정보, 향후 2~3년 실적전망정보까지 기업투자 판단에 꼭 필요한 정보들이 모두 제공됩니다.

 

2. finviz.com/

 

FINVIZ.com - Stock Screener

× Ever heard of Finviz*Elite? Our premium service offers you real-time quotes, advanced visualizations, technical studies, and much more. Become Elite and make informed financial decisions. Find out more --> Upgrade your FINVIZ experience Join thousands o

finviz.com

해외 미국주식 정보를 종합적으로 보여줍니다. 

3. thinkpool

www.thinkpool.com/itemanal/i/tpreport/tpreport_item.jsp?code=000970

 

한국주철관(000970) > 리포트 :: 씽크풀

 

www.thinkpool.com

 

반응형

댓글()

파이썬에서 텔레그램 챗봇 API를 통한 주식매매정보 보내기

AI주식자동매매|2021. 1. 24. 11:03
반응형

안녕하세요?

주식자동매매 프로그램을 만들고 나면, 추천종목정보나 체결정보를 메신저로 받아보고 싶으실텐데,

Slack이나 텔레그램봇을 이용하여 쉽게 구현이 가능했습니다.

 

이번에는 가장 쉬운, 텔레그램챗봇을 만들어서 추천종목을 공유하는 방법을 정리해 보겠습니다.

자동매매프로그램에서 텔레그램에 정보를 보내기 위해서 꼭 필요로 하는 정보는 Bot Token 및 Chat Id 입니다.

Telegram API 를 이용하여 Bot Token(발신인) 이 Chat Id(수신인) 으로 메시지를 보내는 개념입니다.

 

 

1. 모바일 텔레그램의 대화방 탭에서 BotFather를 검색합니다.

   

2. BotFather를 선택하면 안내문이 나타납니다.  대충 내용 확인하시고, /start를 입력해 줍니다.

   

3. 대화창에서 /newbot 를 입력하여 새로운 봇을 만듭니다.

3. name 과 username 을 입력합니다.

  이때 name 은 말 그대로 봇을 부르는 이름으로 내가 알아보기 쉽게 지으면 됩니다.

   (나중에 /setname 명령으로 수정할 수도 있으니 name은 가볍게 지으시면 됩니다.)

   username 은 일종의 id 와 같은 개념으로 반드시 bot 으로 끝나야하며(TetrisBot or tetris_bot), 기존에 텔레그램에 등     록되어있는 username 은 사용할 수 없으므로 신중히 생각해서 입력하시기 바랍니다. 중복되면 안됩니다.

저는 name과 username을 똑 같이 입력해 버렸네요. 귀찮아서.. ㅎㅎ

username까지 입력하면, 다음과 같이 HTTP API정보를 보내줍니다. 숫자:알파벳 내용으로 되어 있습니다.

이 값이 Token입니다. 보안을 유의해서 잘 보관해 둡니다. 

4. 이제 메시지의 발신인이 될 봇을 만들고 봇의 Token 값을 알았으니,

   메시지의 수신인이 될 나의 Chat Id 를 확인하셔야 합니다.

   브라우저 주소 입력창에 https://api.telegram.org/bot봇Token값/getUpdates 를 입력합니다.

   "봇Token값" 위치에 3번에서 확인받은 Token값을 모두 full로 입력합니다.

  그러면, 그림이 너무 작긴 하지만, ,"chat":{"id": 뒤의 숫자정보가 본인의 chat_id입니다.

 

5. 이제 대화를 시작해야 할 수 있습니다.

   앞서 봇을 만들었던 BotFather 와의 대화창에서 t.me/??????bot 를 누르면 아래와 같은 대화창이 뜨고

   여기서 반드시 START(또는 시작) 를 눌러 텔레그램봇과의 대화를 시작할 수 있습니다.

6. 이제 파이썬 프로그램에서 token정보와 chat id를 이용해서 주식정보를 보내보겠습니다.

   보안때문에 token정보와 chat id는 가상의 정보이니 참고 바랍니다.

   하기는 소스의 해당 부분만을 적었습니다.

   추천종목정보의 종목코드(종목명), 현재가, 목표가, 목표가 매매시 예상수익률 관련 정보와

   해당 주봉, 일봉, 5분봉 정보 chart를 보내는 예제입니다. 

import telegram
.
.
class 
Kiwoom(QAxWidget, metaclass=Singleton):
   def __init__(self, parent=None, **kwargs):
        super().__init__(parent, **kwargs)
        .
        .
 
        self
.token = "219999999:AAZZZZZZZzzzzzzzzzZZZZZZ9UI"
        self.bot = telegram.Bot(self.token)
   
   def call_show_canvas(self):
        .
        .
        .
        try:
            self.bot.sendMessage(chat_id=218888888, text="(%s)기준 매수추천 종목입니다. 실제 매수여부는 각자가 판단하셔 
                                                                           야 합니다
." % (recomm_interval))
            self.bot.sendMessage(chat_id=218888888, text="%s(%s) %s, 현재가:%s, 목표가:%s(%s프로)" %           
                                             (stockName
, stockCode, market_status, current_price, target_sell_price, target_sell_rate))
       except:
            self.logging.logger.debug('chat_id: {}; error: {}'.format('1440986979', 'Error while sending notification'))

       .
       .
       .
      try:
           self.bot.send_photo(chat_id=218888888, photo=open(pic, 'rb')) #
      except:
           pass

 

실제 프로그램을 실행시켜보면, 다음과 같이 정상적으로 텔레그램봇이 주식정보를 받는 모습을 확인하실 수 있습니다.

1월 24일 기준으로 효성첨단소재 종목을 매수하라고 하네요. 

187,000원에 매입하면, 목표가 233,000원에 매도하여 24.3%의 수익률을 낼 수 있다네요..  맞을까요? ㅎㅎ

(무조건 따라 하시면 안됩니다.. 아래 메세지 경고문 참조하시구요.. ^^)

 

이상입니다~~ 

반응형

댓글()

KOA Studio실행시 OpenAPI OCX 오류

AI주식자동매매|2020. 6. 28. 23:32
반응형

opstarter

"버전처리를 받으시려면 현재 실행중인 OpenAPI OCX를 탑재한 그로그램을 종료하신 후 확인버튼을 눌러주시기 바랍니다. 그대로 진행시 버전처리가 정상적으로 실행되지 않습니다."

 

그다름 메세지는..

 

[c:\OpenAPI\khopenapi.ocx] 파일 삭제 실패 [183]

[c:\OpenAPI\opcomms.dll] 파일 삭제 실패 [183]

 

업그래이드확인

새로운 버젼으로 업그레드 되었습니다.

프로그램을 재시작해 주세요

 

c:\OpenAPI를 삭제하고 다시 설치해도 마찬가지입니다.

왜그럴까요?

 

결국 해결방법을 찾았습니다...

C:\OpenAPI\opversionup.exe 를 실행한 후

KOAStudioSA.exe 를 다시 실행하니 되네요.. 허

반응형

댓글()

AttributeError: module 'time' has no attribute 'clock' in Python 3.8

AI주식자동매매|2020. 6. 8. 00:05
반응형

 

파이썬 3.7에서는 문제 없이 잘 쓰던 기능이 3.8에서는 사용할 수 없다고 나옵니다.원인을 찾아보니..

 

https://stackoverflow.com/questions/58569361/attributeerror-module-time-has-no-attribute-clock-in-python-3-8

 

AttributeError: module 'time' has no attribute 'clock' in Python 3.8

I have written code to generate public and private keys. It works great at Python 3.7 but it fails in Python 3.8. I don't know how it fails in the latest version. Help me with some solutions. Her...

stackoverflow.com

 

time.clock() 함수는 Python 3.3 이후 버젼에서는 더이상 사용하지 않으니, time.perf_counter() 또는 time.process_time() 함수를 써야 한다고 한다.

(Contributed by Matthias Bussonnier in bpo-36895.)

 

결국, system.clock() 부분을 system.perf_counter()로 다음과 같이 고쳤습니다.

참조하세요~

반응형

댓글()