커뮤니티

종목 검색 후 시스템 적용

프로필 이미지
feel29na
2019-09-08 14:13:44
3311
글번호 224985
답변완료
"바닥지지" 종목 검색 후 결과 종목들에 대해서 "우드스탁_주식_매매신호_Ver7.0"을 적용하라는 예스스팟 수식을 작성해 봤습니다. 예스스팟을 실행하면, 1분 정도 후에 프로그램이 꺼져 버리는데.. 수식이 잘못된 건지 아니면, 시스템 수식이 복잡하다보니(10000줄정도 됩니다.) 프로그램이 터지는 건지 궁금합니다. (실제로 수동으로 시스템 돌릴 때 4개 이상 차트에 시스템을 적용하면 프로그램이 꺼집니다.) 그리고, 아래 주어진 식을 보면 검색으로 나온 모든 종목들을 각각 시스템을 돌리는데, 그렇게 하지 않고 하나의 차트에 종목이 순서대로 적용되고, 시스템에서 매수 신호가 발생할 경우만 새로운 차트를 만들게 하고 싶습니다. 조언 부탁드립니다. var List; var ListCnt; var ReqCount; //스팟 첫 실행시 function Main_OnStart() { //시작 메세지 출력 Main.MessageLog("시작"); // 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청 Main.ReqPowerSearch("바닥지지") } //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; Main.SetTimer(1,2000);//2 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { //2초 단위로 한종목씩 차트 생성 if (nEventID == 1) { //요청이 검색된 종목수 만큼 되었으면 터이머 종료 if (ReqCount == ListCnt) Main.KillTimer(1); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 1, 일간, 조회건수 400 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_DAILY, 400, CHART_REQCOUNT_DAILY, false,false); //시스템 설정 var S1 = new SystemInfo("우드스탁_주식_매매신호_Ver7.0"); //C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성 Main.ReqChartEx(C1,S1); ReqCount = ReqCount+1;//요청횟수 1증가 } } //생성된 차트에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //신호완성 출력 Main.MessageLog("신호완성"); //매수신호 발생하면 매수주문 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수"); } //청산신호 발생하면 매도주문 if (Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수청산"); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-09-25 16:41:34

안녕하세요 예스스탁입니다. 1 현재 저희 프로그램이 32비트 환경입니다. 프로그램이 약 1.4기가이상 메모리를 사용하게 되면 윈도우에서 프로그램을 종료하게 됩니다. 작성하신 수식이 복잡해서 메모리를 많이 사용하게 되어 발생되는 내용입니다. 2 예스스팟에 Main.RemoveObject(Object)함수가 제공되어 차트객체를 삭제할수는 있습니다. 다만 올려주신 내용은 해당 함수를 사용해서 해결이 되지 않습니다. 종목검색 후 각 종목에서 매수신호가 발생하는 것을 알기 위해서는 해당 종목들의 차트에 모두 시스템이 적용되어 실시간으로 실행되고 있어야 합니다. 올려주신 내용은 수정해 드릴방법이 없을것 같습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > feel29na 님이 쓴 글입니다. > 제목 : 종목 검색 후 시스템 적용 > "바닥지지" 종목 검색 후 결과 종목들에 대해서 "우드스탁_주식_매매신호_Ver7.0"을 적용하라는 예스스팟 수식을 작성해 봤습니다. 예스스팟을 실행하면, 1분 정도 후에 프로그램이 꺼져 버리는데.. 수식이 잘못된 건지 아니면, 시스템 수식이 복잡하다보니(10000줄정도 됩니다.) 프로그램이 터지는 건지 궁금합니다. (실제로 수동으로 시스템 돌릴 때 4개 이상 차트에 시스템을 적용하면 프로그램이 꺼집니다.) 그리고, 아래 주어진 식을 보면 검색으로 나온 모든 종목들을 각각 시스템을 돌리는데, 그렇게 하지 않고 하나의 차트에 종목이 순서대로 적용되고, 시스템에서 매수 신호가 발생할 경우만 새로운 차트를 만들게 하고 싶습니다. 조언 부탁드립니다. var List; var ListCnt; var ReqCount; //스팟 첫 실행시 function Main_OnStart() { //시작 메세지 출력 Main.MessageLog("시작"); // 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청 Main.ReqPowerSearch("바닥지지") } //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; Main.SetTimer(1,2000);//2 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { //2초 단위로 한종목씩 차트 생성 if (nEventID == 1) { //요청이 검색된 종목수 만큼 되었으면 터이머 종료 if (ReqCount == ListCnt) Main.KillTimer(1); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 1, 일간, 조회건수 400 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_DAILY, 400, CHART_REQCOUNT_DAILY, false,false); //시스템 설정 var S1 = new SystemInfo("우드스탁_주식_매매신호_Ver7.0"); //C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성 Main.ReqChartEx(C1,S1); ReqCount = ReqCount+1;//요청횟수 1증가 } } //생성된 차트에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //신호완성 출력 Main.MessageLog("신호완성"); //매수신호 발생하면 매수주문 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수"); } //청산신호 발생하면 매도주문 if (Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수청산"); } }