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

AI주식자동매매|2022. 2. 6. 11:00
반응형

 

안녕하세요?

 

요즘 미국 중앙은행(Fed)의 긴축 강도가 높아질것이라는 우려와 '러 우크라' 침공 임박 소식에 급락하고 있습니다.

오늘은 록히드마틴 등 방산株 올랐다는 [뉴욕증시브리핑]이 있었습니다.

 

역시나 저의 美 증시 투자현황도 꼴이 말이 아닙니다. T.T

오늘은 종목분석시간에는 실 거래가 아닌, 매수세와 바닥세를 분석만 하도록 기능을 보완했습니다.

(종목자동매매 시스템과 다시 통합했습니다.)

여기에, ..님께서 미국 ETF도 거래 가능한지 문의가 있어서 해당 ETF도 거래 가능하다는것을 보여드리기 위해서

해당 종목 화면을 캡쳐했습니다. 참조하시기 바랍니다.

 

그리고, 방산업체의 대표주인 록히드마틴 종목을 보니, 역시나 뉴스에 날때는 팔아야 하는가 봅니다.

이미 오를때까지 올랐네요.

그리고, 추가로,

이 미국주식 자동매매는 일정시간이 되면, 자동 실행하고, 자동종료하도록 하기와 같이 설정했습니다.

매일 밤 9시30분에 자동 실행되고, 12시간이 지나면 자동으로 실행은 종료됩니다.

작업스케쥴러의 속성-일반
작업스케쥴러의 속성-트리거

 

작업스케쥴러의 속성-동작

 

작업스케쥴러의 속성-설정

오늘은 여기까지 입니다. 감사합니다.

반응형

댓글()

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

AI주식자동매매|2022. 2. 2. 20:34
반응형

안녕하세요?

 

업그레이드 된 미국주식 자동매매 프로그램을 어제부터 시작했습니다.

업그레이드 한 방법은 대상 종목을 찾는 프로그램과 주식자동매매 프로그램을 

분리시켰습니다.

 

대상종목을 찾는방법은 최근거래량이 급증한 종목이면서, 가격이 바닥에 가깝다가 판단된

종목만을 선별해서 매수대상 종목으로 하도록 했습니다.

일명 "세력지수"와 "바닥지수"를 계산해 내는 방식입니다.

1. 세력지수

일봉차트에서 30일 이내 가장 최근의 일일 거래량과 5일이평, 10일이평, 20일이평 거래량을 비교하여 일 거래량이 이평 거래량을 초과하는 시점에 장대양봉이 형성된 날부터 거래량을 +, -하여 해당 거래량을 세력지수로 표현합니다.

2. 바닥지수

위 화면의 일봉차트(가운데 차트)에서 현재가가 최고가선과 최저가선이 얼마나 최저가선에 가까운지, 그리고, 저항선과 지지선에서 얼마나 지지선에 가까운지를 감안하여 바닥지수로 표현합니다.

 

위의 미국주식 투자종목찾기 프로그램은 세력지수와 바닥지수만을 종목별로 계속 재계산하여 

종목별 세력지수 바닥지수 DB에 저장하는 역할만 합니다.

 

이렇게 DB에 저장된 세력지수와 바닥지수를 다음의 프로그램에서는 

지정된 값의 범위에 해당되는 종목만을 매수추천대상 목록으로 띄웁니다.

위에서 설정항목으로 보여지는 세력지수가 0보다 크고, 바닥지수는 300보다 큰 종목만을 매수추천대상으로 불러오는

조건을 보실 수 있습니다.

 

이상입니다.

반응형

댓글()

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%의 수익률을 낼 수 있다네요..  맞을까요? ㅎㅎ

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

 

이상입니다~~ 

반응형

댓글()