[키움API를 사용한 국내주식 자동매매]-6월20일 추천종목

AI주식자동매매|2023. 6. 20. 06:19
반응형

안녕하세요? 

 

6월 20일 화요일 Gold Stock 추천종목입니다.

저의 개인적인 AI추천로직에 의한 추천이니, 참조만 하시기 바랍니다.

 

저의 미 보유 종목 추천종목은 3가지 종목입니다.


분석종목[6]:인선이엔티(060150) ['daily_ma_1', 'daily_ma_2'][102.0, 102.3], [102.0, 103.0], [103.3, 109.4], [104.7, 117.2], [101.1, 116.6])
분석종목[7]:유니셈(036200) ['daily_ma_b1']([102.6], [105.5], [111.5], [115.3], [0.0])
분석종목[8]:LG헬로비전(037560) ['daily_ma_b0', 'daily_ma_b1'][102.6, 102.6], [107.7, 105.5], [114.8, 111.5], [128.0, 115.3], [0.0, 0.0])

 

인선이엔티는 ['daily_ma_1', 'daily_ma_2']  두가지 전략에 의해 추천되었고, daily_ma_2 전략은 과거 추천분석결과 4주차에는 17%, 5주차에는 16% 평균상승율을 보이고 있습니다.

유니셈(036200)은 daily_ma_b1 전략에 의해 추천되었고, 이 전략은 4주차에는 15.3% 평균상승을 보이는 추천이네요.

LG헬로비전(037560)은 ['daily_ma_b0', 'daily_ma_b1'] 두가지 전략에 의해 추천되었고, daily_ma_b0 전략의 경우, 4주차에는 28%의 평균상승율을 보이는 전략입니다.

 

위 설명드린 것은 어떤 전략이 3가지 종목을 추천하였고, 각 추천전략은 평균 몇%의 평균상승율을 보이는지 보여주고 있습니다.

GoldStock 추천화면

이상입니다.

반응형

댓글()

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

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

 

안녕하세요?

 

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

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

 

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

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

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

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

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

 

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

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

그리고, 추가로,

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

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

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

 

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

 

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

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

반응형

댓글()

파이썬에서 텔레그램 챗봇 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%의 수익률을 낼 수 있다네요..  맞을까요? ㅎㅎ

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

 

이상입니다~~ 

반응형

댓글()

Python의 독립적인 가상 실행 환경(Environment)을 위한 Anaconda env 설정 방법

반응형

아나콘다 패키지로 설치한 후, conda 명령어를 이용해서 env를 생성/삭제 및 관리한다.

 

1. anaconda 64bit 설치

  https://www.anaconda.com/products/individual#download-section

 

Individual Edition | Anaconda

🐍 Open Source Anaconda Individual Edition is the world’s most popular Python distribution platform with over 20 million users worldwide. You can trust in our long-term commitment to supporting the Anaconda open-source ecosystem, the platform of choice

www.anaconda.com

 

python 3.7버젼 64bbit를 선택한다.

repo.anaconda.com/archive/Anaconda3-2020.02-Windows-x86_64.exe

주의: python 홈페이지에 가서 python을 다운받지 말자. Anaconda 설치를 하면 python이 자동으로 설치가 된다.

      이제 anaconda 홈페이지로 가서 다운을 받자. 64 bit 최신버전을 다운로드하도록 하자.

      https://youngjoongkwon.com/2018/01/26/windows-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-anaconda-tensorflow-%EC%84%A4%EC%B9%98%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-no-module-named-tensorflow-%EC%97%90%EB%9F%AC/

 

Windows 환경에서 Anaconda + Tensorflow 설치문제 해결하기 (No module named ‘tensorflow’ 에러 해결법)

python을 따로 설치한 다음 anaconda를 설치하고, tensorflow를 설치했다가 No module named ‘tensorflow’ 에러가 떴다. 물론 tensorflow는 실행할 수 없었다. 검색을 해보니 나와 비슷한 문제를 겪고있는 사람��

youngjoongkwon.com

 

2. Anaconda Prompt 실행

python version이 3.7.6임을 확인한다.

  tenserflow가 3.8버젼을 지원하지 않습니다. 3.7버젼도 3.7.6 안전한 검증된 버젼으로 설치를 권장합니다.

  (추가)

  anaconda 64bit 설치후, 제일 먼저 해주세요..
  >python -m pip install --upgrade pip

3. Python 3.8(최신) 버전의 ‘py38_32’라는 이름으로 32bit용 env를 생성합니다. 

   (키움과 같은 주식 API는 아직 32bit만 지원하므로, 32bit 가상환경을 별도로 만들어야 합니다.)

>set CONDA_FORCE_32BIT=1
>conda create -n py37_32 python=3.7 anaconda
>activate py37_32
>conda env list

4. 추가적으로 64bit용 가상환경도 별도설치하여 향후 64bit환경 개발시 사용하도록 한다.

>conda deactivate

>set CONDA_FORCE_64BIT=1
>conda create -n py38_64 python=3.8 anaconda
>activate py38_64

>pip install tensorflow  

   * Python을 anaconda에서 설치한 버젼과 달리, 별도로 설치할 경우,

     tensorflow가 설치되지 않습니다. 주의해 주세요~

5. Anaconda에서 생성한 env환경을 확인합니다. 

 

6. 가상환경 제거하기

>conda remove -n py37_32 --all

>conda remove -n py38_64 --all

 

7. 최신버젼의 tensorflow를 설치한다.

>pip install tensorflow
or 
>py -m pip install tensorflow
or
>python -m pip install --user --upgrade pip
반응형

댓글()

ValueError: invalid literal for int() with base 10

AI주식자동매매|2020. 5. 18. 10:06
반응형

파이썬 형변환에서 발생하는 오류입니다.

 

우리는 보통 형 변환시에는 하기 함수를 사용합니다.

문자형으로 바꿀 때는 str()

정수형으로 바꿀 때는 int()

실수형으로 바꿀 때는 float() 


문자열을 정수로 변환

>>> a = '10'

>>> int(a)

10

 

문자열을 실수로 변환

>>> b = '4.3'

>>> float(b)

4.3

 

정수를 문자열로 변환

>>> c = 7

>>> str(c)

'7'

 

실수를 문자열로 변환

>>> d = 2.71

>>> str(d)

'2.71'

 

문제 상황

 

하지만, 여기서 문제 상황은 조금 다릅니다.

>>> d = '51,800'

>>> int(d)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '51,800'

 

파이썬에서 다음 라인에서 에러가 걸렸습니다.

self.currentPrice = int(thirdColumnInRow.text()) 

 

thirdColumnInRow.text() 의 value가 '51,800'이기 때문에 바로 int()함수를 사용할 수 없기 때문입니다.

콤마(',')를 제거한 후 int()함수를 사용해야 합니다.

 

해결 방법

 

currentPrice = thirdColumnInRow.text().strip().replace(',', '')
self.currentPrice = int(currentPrice) 

 

이렇게 로직을 수정하니 깔끔하게 해결되었습니다.

반응형

댓글()