2020/06/01 - [Google Suite] - 주식 봇 만들기 #1 주식정보가져오기
주식 정보를 알아보는 법을 알았으니 매매 타이밍과 장시작 시점과 장 종료 되는 시점에 알람을 보내는 방법을 알아보겠습니다.
주식 정보를 Push 알람을 받기 위해서는 알람을 받을수 있는 API 를 제공하는 메신져가 필요한데 제가 GAS 에서 테스트 해본건 텔레그램, Slack, MS Teams 에 대해서 가능합니다. 여기서는 Slack 앱을 사용하였습니다.
Slack 을 사용했던 이유는 Slack 메신져가 앱만 설치하면 다른 서비스들과의 연계가 쉽게 됩니다. 예를 들자면 Google Calender 앱을 설치하면 일정이되면 Slack 메신져로 특정 채널로 알람을 보내서 같이 협업하는 사람들과 확인이 가능하거나 Google sheet 내용이 변경되었을 때 알람을 받을수가 있습니다.
IFTTT 라는 서비스를 이용을 하면 좀더 많은 장치들과의 연계도 가능한데 Slack 에 나의 상태 표시해주는 게 있는데 휴대폰에서 위치정보를 받아와서 회사 근처에 있으면 회사로 표시하고 근처를 벗어나면 회사가 아니라고 표시도 가능합니다.
이번 기능은 순수 GAS을 이용했는데 Google App Script의 약자 로써 엑셀에서 VBA 와 같은 거라고 보시면 됩니다. 구글 시트 혹은 구글 플렛폼에서 제공되는 기능으로만으로 부족할 프로그래밍을 통해 기능을 확장 시킬수가 기능인데 구글 시트를 사용해서 데이터를 가져온만큼 GAS 를 사용하여 간편하게? 처리해주었습니다.
Slack 에서 사용자 Custome Bot 만들기는 여기서 설명은 생략하고 링크로 대체합니다.
www.theteams.kr/teams/253107/post/71147
Google Apps Script를 활용한 Slack Bot 만들기 by (주) 스퀘어랩
G Suite과 Slack은 스타트업에서 필수로 사용하는 서비스라 해도 과언이 아닙니다. G Suite의 다양한 기능과 쉽게 연동이 가능한 Google Apps Script로 Slack Bot을 만들면 반복작업을 자동화하고 업무효율을
www.theteams.kr
주식 봇 GAS 코드는 자동으로 매일 9시-10시 사이에 StockCheck 함수가 실행되도록 설정해놓았습니다.
StockCheck 함수는 매매 타이밍을 확인하는 SendToSlack 함수를 5분마다 자동으로 실행하게해주고, 주식장이 시작되었다는 메세지와 함께 현재 가격정보를 전송해줍니다.
//장시작과함께 타이머 생성
function StockCheck()
{
//매매 타이밍 알람을 위해서 5분단위로 실행을 위한 타이머 생성함
ScriptApp.newTrigger('SendToSlack')
.timeBased()
.everyMinutes(5)
.create();
//주시작 시작을 알림과 동시에 현재 가격 메세지 보내기
SendMessage("주식장 시작");
SendMessage(SendAllInfo());
}
SendToSlack 함수는 5분단위로 매도가, 혹은 매수가에 가까워 왔는지 확인해서 매세지를 보내주고 (5분마다 계속 보냄, 귀찮지만 잊지 않을수 있습니다.) 시장 종료되는 시점인 3시 30분에는 자동으로 봇을 멈춰주는 역활을 합니다.
function SendToSlack() {
var curHour = new Date().getHours();
var curMinute= new Date().getMinutes();
//SendMessage(MakeMessage());
if (curHour > 15 ) {
if (curMinute>30){
Logger.log("Stock market hours stopping");
SendMessage ("주식장 종료 전 칼퇴근합니다.");
SendAllInfo();
CheckCompleted();
}
}
else
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("index");
var datarange = sheet.getDataRange();
var numRows = datarange.getNumRows();
for (var i=2; i <= numRows; i++)
{
var curPrice =sheet.getRange(i, 3).getValue()
var targetPrice =sheet.getRange(i, 4).getValue()
var targetSellPrice =sheet.getRange(i, 5).getValue()
var TolPrice=sheet.getRange(i, 7).getValue()
var diffPrice=(curPrice-targetPrice);
Logger.log ( "현재가격 : "+curPrice + " 알람목표가격 : "+(targetPrice+TolPrice));
if (curPrice< (targetPrice+TolPrice)) {
SendMessage(MakeMessage(i,false));
}
else if (curPrice> (targetSellPrice-TolPrice)) {
SendMessage(MakeMessage(i,true));
}
else
{
Logger.log ( "알람 목표가에 도달안함 : "+curPrice + " > "+(targetPrice+TolPrice));
}
}
}
GAS 는 강력함 때문에 사용하긴 하지만.. 문제는 작성한 나조차도 시간이 흐르면 코드 내용을 까먹곤 해서 요즘에는 코딩 없이 프로그래밍을 할수 있는 MS Power Automation (=마이크소프트 플로우) 을 즐겨 사용하고 있습니다. (MS 주식을 구매한이유)
blog.naver.com/gowit_sps/221506099757
파워앱스와 마이크로소프트 플로우를 알아봅시다
지난주 영업부 부장님과 전반적인 시장 분위기에 대해 얘기를 나눌 기회가 있었는데요, 최근 파워앱스(Pow...
blog.naver.com
참고용 자료 구글 시트와 GAS 를 이용하면 이런것도 가능합니다.
Google Apps Script( + spreadsheets)를 이용한 slack webhooking
구글 앱 스크립트를 하여, 다양한 구글앱 및 외부 앱과의 연동으로 업무 자동화를 할 수 있다. 아래 예제는 스프레드시트에서 데이터를 읽은 후, 슬랙으로 메세지를 보내는 간단한 샘플 코드이��
055055.tistory.com
'Google Suite' 카테고리의 다른 글
가상주식 투자 시스템 만들기 #4/7 (주식종목별 수익률 계산하기) (0) | 2020.07.16 |
---|---|
가상주식 투자 시스템 만들기 #3/7 (회원들로 부터 추천 주식 입력받기) (0) | 2020.07.01 |
가상주식 투자 시스템 만들기 #2/7 (플랫폼선정) (0) | 2020.06.03 |
가상주식 투자 시스템 만들기 #1/7 (프롤로그) (0) | 2020.06.02 |
주식 봇 만들기 #1/2 주식정보가져오기 (0) | 2020.06.01 |