커뮤니티

엑셀파일에서 종목코드를 읽어와서 사용할수 있나요?

프로필 이미지
sahajata
2018-10-19 16:59:46
2994
글번호 224633
답변완료
제3의 외부 프로그램에서, 매수/매도신호가 발생했을때, 해당 종목코드명,수량 등을 엑셀파일에 입력하도록 프로그램한 뒤에, 예스스팟에서 그 엑셀파일을 읽어서 종목코드 등을 가져와서 주문을 낼 수 있는지요..? 가능하다면 간단한 예제를 보여주시면 감사하겠습니다~ ----- var 코드; 코드 = Excel1.GetData(1, "A1"); Main.ReqMarketData(코드,0); A1.OrderBuy(MarketData.code, 1, 0, 1);
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-07 14:50:54

안녕하세요 예스스탁입니다. 스팟은 자바스크립트 언어 기반으로 이벤트가 중심이 됩니다. 스팟에서 지정한 엑셀파일에서 값을 가져오고나 쓰실수는 있지만 엑셀객체 자체에 이벤트가 별도로 있지 않아 특정셀에 값이 새로 적어졌는지 여부를 알수가 없습니다. 그러므로 아래수식은 타이머을 이용해 1초단위로 지정한 셀을 읽어와 주문내는 내용으로 작성해 드립니다. 다만 현재 지정한 셀에 적혀진 값이 이전에 주문을 집행했는지 여부를 알수 없으므로 제3의 프로그램에서 엑셀에 값을 적을때 별도로 시간을 같이 엑셀의 지정한 셀에 출력하셔야 합니다. 아래수식은 엑셀의 A1,A2,A3,A4 셀에 시간과 주문구문,종목코드,수량이 적히는 것으로 간주하고 작성했습니다. 시간은 HHMMSS타입으로 주문구분은 매수면 1, 매도면 -1로. 종목코드는 엑셀의 해당 필드가 텍스트(문자)이어야 합니다. 기본설정이면 005930인 종목코드면 5930으로 찍히고 스팟에서 가져오면 5930으로만 가져와 주문시 에러가 나게 됩니다. 내용 참고하셔서 수정보완해 사용하시기 바랍니다. var 시간 = 0, 직전시간 = 0; var 구분,코드,수량; function Main_OnStart() { Main.SetTimer(1,1000); if (V1 == 0) { Main.MessageList("null") } } function Main_OnTimer(nEventID) { if (nEventID == 1) { 직전시간 = 시간; 시간 = Excel1.GetData(1, "A1"); 구분 = Excel1.GetData(1, "A2"); 코드 = Excel1.GetData(1, "A3"); 수량 = Excel1.GetData(1, "A4"); if (시간 != 직전시간 && 시간 > 0) { if (구분 == 1) { Account1.OrderBuy(코드,수량,0,1); } if (구분 == -1) { Account1.OrderSell(코드,수량,0,1); } } } } 즐거운 하루되세요 > sahajata 님이 쓴 글입니다. > 제목 : 엑셀파일에서 종목코드를 읽어와서 사용할수 있나요? > 제3의 외부 프로그램에서, 매수/매도신호가 발생했을때, 해당 종목코드명,수량 등을 엑셀파일에 입력하도록 프로그램한 뒤에, 예스스팟에서 그 엑셀파일을 읽어서 종목코드 등을 가져와서 주문을 낼 수 있는지요..? 가능하다면 간단한 예제를 보여주시면 감사하겠습니다~ ----- var 코드; 코드 = Excel1.GetData(1, "A1"); Main.ReqMarketData(코드,0); A1.OrderBuy(MarketData.code, 1, 0, 1);