커뮤니티

아이디어 구현 가능성

프로필 이미지
연감자
2018-07-08 11:56:33
2198
글번호 224507
답변완료
안녕하세요? 예스스팟 강의를 듣고 예스스팟을 활용한 매매툴을 구현해보려고 하는데 혹시 구현이 가능할 지 궁금해서 여쭤봅니다. 1. 먼저 엑셀로 종목코드를 불러와서 리스트를 만듭니다. 2. 위의 리스트 종목들을 제가 만든 지표를 구합니다. 3-1. 종목들의 지표값을 통해 종목간 비중조절해서 주문을 내거나 3-2. 위의 기능이 예스스팟에서 불가능하면 엑셀로 지표값을 저장하고 제가 비중을 계산해서 목표가격이랑 목표수량을 입력합니다. 4. 위의 자료를 바탕으로 매매를 합니다. 혹시 이 단계의 프로세스가 예스스팟에서 구현이 가능할까요? 어제 예스스팟 교육을 듣고 왔는데 강의를 들을 때는 구현가능할 것 같았는데 막상 찾아보면서 하려니까 어려운데 혹시 참고할만한 자료가 있을까요? 좋은 시간 만들어주셔서 감사합니다!
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-20 10:56:23

안녕하세요 예스스탁입니다. 예스스팟에 엑셀객체가 있어 엑셀에서 값을 가져오거나 값을 출력할수 있습니다. 그러므로 엑셀에서 종목코드를 가져와 차트를 열고 지표값을 계산해 사용할수도 있습니다. 어떤 방식으로든 문의하신 내용은 구현이 가능합니다. 다만 올려주신 내용으로 어떤 지표를 이용하시는지 비중은 어떤 방식으로 산정하는지 불분명합니다. 아래 가이드 내용을 참고하셔서 수정보완해 식 완성하시기 바랍니다. 목표가격,목표수량은 내용을 알수 없으므로 계산에 필요한 데이터를 준비하는 내용까지만 작성해 드립니다. 엑셀과 연동되는 엑셀파일의 sheet1에 A2~An에 종목코드가 저장되어 있는 것으로 가정하고 작성했습니다. 스팟이 시작하면 지정한 엑셀에서 종목코드를 가져와 각 종목들의 차트객체와 종목객체를 만드는 내용입니다. 지표를 이용하신다고 언급하셔서 차트만들어질때 예스랭귀지로 만든 특정지표도 같이 적용되어 만들어 집니다. 수식에서 지표명 지정해 주시면 됩니다. 스크립트 설정화면에서 엑셀객체를 추가하시고 속성에서 객체명은 Excel1로 지정하고 연동되는 파일 지정해 주시면 됩니다. //엑셀에서 종모코드를 불러와 저장할 배열변수 var CodeList = []; //차트객체 저장할 변수 var ChartObjeect = []; //종목객체 저장할 변수 var MarketObject = []; //차트 지표값 저장할 배열변수 var IndValue = []; //비중 저장할 배열변수 var Weight = []; //목표가 저장할 배열변수 var TargetPrice = []; //목표수량 저장할 배열변수 var TargetVol = []; var reqChartCount = 0, reqMarketCount = 0; //스팟시작 function Main_OnStart() { //엑셀의 특정셀에서 가져오기 //엑셀의 값이 있는 열의 갯수 var num = Excel1.GetRowCount(1); Main.MessageList(num); //A2부터~An까지 값을 가져와 배열변수(CodeList)에 순서대로 저장 var ii = 0; for (var i = 2; i <= num; i++) { CodeList[ii] = Excel1.GetData(1,"A"+i); ii = ii+1; } Main.MessageList(CodeList); //지표값을 위해 차트 생성 if (CodeList.length > 0) { reqChartCount = 0; //차트설정 5분봉 5백개 var SetChart = new ReqChartItem(CodeList[reqChartCount], 5, CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 지표지정 var SetInd = new IndicatorInfo("예스랭귀지 지표명"); //차트생성 Main.ReqChartEx(SetChart,null,new Array(SetInd)); } } //차트객체 수신 function Main_OnRcvChartEx(ChartEx) { //수신된 차트객체의 종목코드와 요청한 종목코드 비교해 같음을 확인 if (ChartEx.GetCode(1) == CodeList[reqChartCount]) { //차트객체 저장 ChartObjeect[reqChartCount] = ChartEx; //생성된 차트에 적용된 지표의 차트 마지막봉 값을 저장 IndValue[reqChartCount] = ChartObjeect[reqChartCount].GetIndicatorData("예스랭귀지 지표명",1,0); //요청카운트 1증가 reqChartCount = reqChartCount +1; //요청카운트가 종목수보다 작으면 다음종목 요청 if (reqChartCount < CodeList.length) { //차트설정 5분봉 5백개 var SetChart = new ReqChartItem(CodeList[reqChartCount], 5, CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 지표지정 var SetInd = new IndicatorInfo("예스랭귀지 지표명"); //차트생성 var S = Main.ReqChartEx(SetChart,null,new Array(SetInd)); //객체생성 제한시간에 걸리면 20초 쉬고 다시 요청 if (S == -1) { Main.SetTimer(1, 20000); } } else//카운트가 종목수와 같으면 종료 { Main.MessageList("차트생성완료 --> 종목객체 생성시작"); reqMarketCount = 0; Main.ReqMarketData(CodeList[reqMarketCount], 0,0); } } } //종목객체 수신 function Main_OnRcvMarketData(MarketData) { //수신받은 종목객체와 요청산 종목코드 비교해 확인 if (MarketData.code == CodeList[reqMarketCount]) { //종목객체 저장 MarketObject[reqMarketCount] = MarketData; //요청 카운트 1증가 reqMarketCount = reqMarketCount+1; //요청 카운트가 종목수보다 작으면 다음봉목 요청 if (reqMarketCount < CodeList.length) { var S = Main.ReqMarketData(CodeList[reqMarketCount], 0,0); //객체요청 시간제한에 걸리면 20초 쉬고 다시 요청 if (S == -1) { Main.SetTimer(2, 20000); } } else { Main.MessageList("종목객체 생성완료"); //엑셀에서 종목코드를 가져와 각 종목의 차트객체,종목객체, 적용된 지표값이 //각 배열변수의 동일방번호에 저장되었으므로 //이후에는 목표가격, 목표수량등을 계산하느 로직이 여기에 들어가면 됩니다. } } } function Main_OnTimer(nEventID) { if (nEventID == 1) { var SetChart = new ReqChartItem(CodeList[reqChartCount], 5, CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR,false, false); var SetInd = new IndicatorInfo("예스랭귀지 지표명"); Main.ReqChartEx(SetChart,null,new Array(SetInd)); } if (nEventID == 2) { Main.ReqMarketData(CodeList[reqMarketCount], 0,0); } } 즐거운 하루되세요 > 연감자 님이 쓴 글입니다. > 제목 : 아이디어 구현 가능성 > 안녕하세요? 예스스팟 강의를 듣고 예스스팟을 활용한 매매툴을 구현해보려고 하는데 혹시 구현이 가능할 지 궁금해서 여쭤봅니다. 1. 먼저 엑셀로 종목코드를 불러와서 리스트를 만듭니다. 2. 위의 리스트 종목들을 제가 만든 지표를 구합니다. 3-1. 종목들의 지표값을 통해 종목간 비중조절해서 주문을 내거나 3-2. 위의 기능이 예스스팟에서 불가능하면 엑셀로 지표값을 저장하고 제가 비중을 계산해서 목표가격이랑 목표수량을 입력합니다. 4. 위의 자료를 바탕으로 매매를 합니다. 혹시 이 단계의 프로세스가 예스스팟에서 구현이 가능할까요? 어제 예스스팟 교육을 듣고 왔는데 강의를 들을 때는 구현가능할 것 같았는데 막상 찾아보면서 하려니까 어려운데 혹시 참고할만한 자료가 있을까요? 좋은 시간 만들어주셔서 감사합니다!