본문 바로가기
공부/파이썬 Python

파이썬으로 윈도우 주식 가격 알람 로봇 생성하기 (winotify, python)

by 혼밥맨 2022. 6. 3.
반응형

파이썬으로 윈도우 주식 가격 알람 로봇 생성하기

 

라이브러리 설치

1
pip install winotify
cs

 

winotify 이란, 윈도우즈 10에서 알림 토스트를 표시하는 순수 파이썬 모듈입니다. 종속성이나 요구 사항 없이 PowerShell을 시스템에 설치하기만 하면 됩니다.

https://pypi.org/project/winotify/

 

winotify

Show notification toast on Windows 10

pypi.org

 

라이브러리 import

1
2
3
4
import os
import time
import pandas_datareader as web
from winotify import Notification, audio
cs

 

알림 설정 원하는 주식들의 티커와 주가 리밋

1
2
3
4
tickers = ['NVDA''FB']
 
upper_limits = [240220]
lower_limits = [140130]
cs

 

엔비디아의 주가가 $240 혹은 $140에 닿으면,

페이스북의 주가가 $220 혹은 $130에 닿으면, 윈도우 알림이 생성된다.

 

주식의 현재 가격 불러오기 using yahoo finance

1
2
while True:
    last_prices = [web.DataReader(ticker, "yahoo")["Adj Close"][-1for ticker in tickers]
cs

 

 

Alert Image 알람 이미지

sell png
buy png

상한 리밋에 도달하면 sell png가 알람에 보여지고

하한 리밋에 도달하면 buy png가 알람에 보여집니다.

 

 

어퍼 리밋 (Upper Limit) 닿을 때 알람 설정

1
2
3
4
5
6
7
8
9
10
11
for i in range(len(tickers)):
        if last_prices[i] > upper_limits[i]:
            toast = Notification(app_id = "Honbob Stock Alarm Bot",
                                 title = "Price Alert For " + tickers[i],
                                 msg = f"{tickers[i]} has reached a price of {last_prices[i]}. You might want to sell."
                                 icon = os.path.join(os.getcwd(), "sell.png"),
                                 duration = "long"
                                )
            toast.add_actions(label="Go To Stockbrocker", launch="https://Honbob.com/")
            toast.set_audio(audio.LoopingAlarm6, loop=True)
            toast.show()
cs

현재 가격이 설정한 어퍼 리밋 가격을 초과하면, 윈도우 알림 (Windows Notification)을 띄웁니다.

윈도우 알림은 Winotify 라는 라이브러리 모듈에 기능들이 정의되어 있습니다.

 

로워 리밋 (Lower Limit) 닿을 때 알람 설정

1
2
3
4
5
6
7
8
9
10
        elif last_prices[i] < lower_limits[i]:
            toast = Notification(app_id = "Honbob  Stock Alarm Bot",
                                 title = "Price Alert For " + tickers[i],
                                 msg = f"{tickers[i]} has reached a price of {last_prices[i]}. You might want to buy."
                                 icon = os.path.join(os.getcwd(), "buy.png"),
                                 duration = "long"
                                )
            toast.add_actions(label="Go To Stockbrocker", launch="https://Honbob.com/")
            toast.set_audio(audio.LoopingAlarm8, loop=True)
            toast.show()
cs

Full Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import os
import time
import pandas_datareader as web
from winotify import Notification, audio
 
 
tickers = ['NVDA''FB']
 
upper_limits = [240220]
lower_limits = [140130]
 
 
while True:
    last_prices = [web.DataReader(ticker, "yahoo")["Adj Close"][-1for ticker in tickers]
    print(last_prices)
    time.sleep(2)
    for i in range(len(tickers)):
        if last_prices[i] > upper_limits[i]:
            toast = Notification(app_id = "Honbob Stock Alarm Bot",
                                 title = "Price Alert For " + tickers[i],
                                 msg = f"{tickers[i]} has reached a price of {last_prices[i]}. You might want to sell."
                                 icon = os.path.join(os.getcwd(), "sell.png"),
                                 duration = "long"
                                )
            toast.add_actions(label="Go To Stockbrocker", launch="https://Honbob.com/")
            toast.set_audio(audio.LoopingAlarm6, loop=True)
            toast.show()
 
        elif last_prices[i] < lower_limits[i]:
            toast = Notification(app_id = "Honbob Stock Alarm Bot",
                                 title = "Price Alert For " + tickers[i],
                                 msg = f"{tickers[i]} has reached a price of {last_prices[i]}. You might want to buy."
                                 icon = os.path.join(os.getcwd(), "buy.png"),
                                 duration = "long"
                                )
            toast.add_actions(label="Go To Stockbrocker", launch="https://Honbob.com/")
            toast.set_audio(audio.LoopingAlarm8, loop=True)
            toast.show()
        time.sleep(1)
 
 
 
 
cs

 

결과

 

 

즉 게임을 하다가도 본인이 설정한 주식 가격 알림을 받아볼 수 있습니다.

물론 알림을 할 필요 없다고 하실 수도 있습니다. MTS나 HTS에 이미 조건 매매 기능이 빌드된 경우가 많기 때문이지요.

반응형

댓글