커뮤니티

시스템 수식 수정 문의

프로필 이미지
feel29na
2020-08-17 14:50:13
2316
글번호 225298
답변완료
0915시에 "분봉장중단타1.5" 파워검색 실시 후 나온 종목들에 대해 시스템을 실행하려고 합니다. 아래와 같이 코딩했는데... 어디가 문제인지 모르겠습니다. ㅜㅡ var List; var ListCnt; var ReqCount; var HHMMSS,HHMMSS1; //스팟 첫 실행시 function Main_OnStart() { Main.MessageLog("시작"); //시작 메세지 출력 Main.SetTimer(1,60000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 093000 && HHMMSS1 < 0930) // 0930시 파워검색 실시 { Main.ReqPowerSearch("분봉장중단타1.5"); Main.MessageLog("파워검색시작"); Main.KillTimer(1); } } } function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신 { List = aItemList; //검색된 종목코드를 저장 ListCnt = nCount; //검색된 종목수 저장 Main.SetTimer(2,2000);//2초 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { if (nEventID == 2) //2초 단위로 한종목씩 차트 생성 { if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료 Main.KillTimer(2); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 분봉, 조회건수 1500 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var S1 = new SystemInfo("feel29na_ver_1.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
프로필 이미지

예스스탁 예스스탁 답변

2020-09-17 15:48:04

안녕하세요 예스스탁입니다. 1 HHMMSS >= 093000 && HHMMSS1 < 0930 수시에서 HHMMSS이 시간을 6자리로 리턴합니다. HHMMSS1이 너무 작은값보다 작게 되어 있어 검색이 동작하지 않았습니다. 아래와 같이 6자리로 지정하셔야 합니다. HHMMSS >= 093000 && HHMMSS1 < 093000 2 수식에서 동일 이벤트는 하나만 사용하셔야 합니다. 작성하신 수식에 function Main_OnTimer(nEventID) 이벤트가 2번 사용되어 있습니다. 하나의 이벤트안에 내용을 모두 넣으셔야 합니다. 3 차트객체에서 종목코드를 가져오는 함수는 ChartEx.GetCode(1)입니다. 4 var List; var ListCnt; var ReqCount; var HHMMSS,HHMMSS1; //스팟 첫 실행시 function Main_OnStart() { Main.MessageLog("시작"); //시작 메세지 출력 Main.SetTimer(1,60000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.MessageLog(HHMMSS); if (HHMMSS >= 093000 && HHMMSS < 193000) // 0930시 파워검색 실시 { Main.ReqPowerSearch("분봉장중단타1.5"); Main.MessageList("파워검색시작"); Main.KillTimer(1); } } if (nEventID == 2) //2초 단위로 한종목씩 차트 생성 { if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료 Main.KillTimer(2); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 분봉, 조회건수 1500 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var S1 = new SystemInfo("feel29na_ver_1.0"); //C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성 Main.ReqChartEx(C1,S1); ReqCount = ReqCount+1;//요청횟수 1증가 } } function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신 { List = aItemList; //검색된 종목코드를 저장 ListCnt = nCount; //검색된 종목수 저장 Main.SetTimer(2,2000);//2초 타이머 ReqCount = 0; } //생성된 차트에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //신호완성 출력 Main.MessageLog("신호발생"); //매수신호 발생하면 매수주문 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); Main.MessageLog("매수"); } //청산신호 발생하면 매도주문 if (Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); Main.MessageLog("매수청산"); } } 즐거운 하루되세요 > feel29na 님이 쓴 글입니다. > 제목 : 시스템 수식 수정 문의 > 0915시에 "분봉장중단타1.5" 파워검색 실시 후 나온 종목들에 대해 시스템을 실행하려고 합니다. 아래와 같이 코딩했는데... 어디가 문제인지 모르겠습니다. ㅜㅡ var List; var ListCnt; var ReqCount; var HHMMSS,HHMMSS1; //스팟 첫 실행시 function Main_OnStart() { Main.MessageLog("시작"); //시작 메세지 출력 Main.SetTimer(1,60000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 093000 && HHMMSS1 < 0930) // 0930시 파워검색 실시 { Main.ReqPowerSearch("분봉장중단타1.5"); Main.MessageLog("파워검색시작"); Main.KillTimer(1); } } } function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신 { List = aItemList; //검색된 종목코드를 저장 ListCnt = nCount; //검색된 종목수 저장 Main.SetTimer(2,2000);//2초 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { if (nEventID == 2) //2초 단위로 한종목씩 차트 생성 { if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료 Main.KillTimer(2); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 분봉, 조회건수 1500 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var S1 = new SystemInfo("feel29na_ver_1.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("매수청산"); } }