커뮤니티

for문 2개이면 종목검색 안됩니다

프로필 이미지
행복충전
2019-11-21 15:20:36
208
글번호 133822
답변완료
아래 두가지의 경우 모두 종목검색이 안됩니다. 해결 방법이 있나요? 1) for문 하나에 sumP와 sumV를 같이 구함 var : sumP(0), sumV(0), mavP(0), mavV(0), cnt(0); sumP = 0; sumV = 0; for cnt = 1 to 60 { sumP = sumP + abs(DayClose(cnt)-DayOpen(cnt)); // 일봉 캔들 60개 합 sumV = sumV + DayVolume(cnt); // 일봉 거래량 60개 합 } mavP = sumP/60; // 일봉 캔들 60이평 mavV = sumV/60; // 일봉 거래량 60이평 If (C-O)/O*100 >= 1 Then find((C-O)/O*100); =================================================== 2) for문 두 개 사용 var : sumP(0), sumV(0), mavP(0), mavV(0), cnt(0); sumP = 0; sumV = 0; for cnt = 1 to 60 { sumP = sumP + abs(DayClose(cnt)-DayOpen(cnt)); // 일봉 캔들 60개 합 } mavP = sumP/60; // 일봉 캔들 60이평 for cnt = 1 to 60 { sumV = sumV + DayVolume(cnt); // 일봉 거래량 60개 합 } mavV = sumV/60; // 일봉 거래량 60이평 If (C-O)/O*100 >= 1 Then find((C-O)/O*100);
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-11-21 15:53:22

안녕하세요 예스스탁입니다. 1 for문의 갯수에 제한이 있지는 않습니다. for문 1개로 처리될 내용을 2개로 나누어 처리를 하시면 봉당 60회로 끝날 계산이 2배가 되어 120회를 루프를 돌면서 계산하게 됩니다. 종목검색 속성에서 검색에 필요한 최소기간에 100봉을 지정했다면 한종목을 찾기위해 12,000번의 계산을 하게 되어 연산이 두배가 되게 됩니다. 검색에 필요한 최소기간에 설정하지 않으셔도 내부적으로 필요한 봉갯수를 산정해서 처리가 됩니다. 올려주신 수식도 검색에 필요한 최소기간을 최대한 작게 지정하시면 2개 모두 검색이 됩니다. 2 종목검색은 많은 사용자분들이 공용으로 사용하기에 검색에 일정시간이상 소요되는 걸리는 수식은 서버 부하문데로 검색에서 제외되므로 최대한 연산을 작게 하는 방향으로 수식을 작성하셔야 하니다. 3 작성하신 수식이 분봉에서 검색하시는 내용이면 1번 수식과 같이 작성하시는 방법뿐이 없습니다. 일봉에서 검색하는 내용이면 for문을 사용할 필요가 없습니다. 아래와 같이 작성해 사용하시면 됩니다. var : mavP(0),mavV(0); mavP = ma(abs(C-O),60); mavV = ma(V,60); If (C-O)/O*100 >= 1 Then find((C-O)/O*100); 4 종목검색에서 주기를 여러개 썩어 검색할 경우에는 각 주기별로 따로 종목검색식을 만들어서 검색하셔야 합니다. 예스트레이더의 [3202] 파워종목검색화면이나 NH트레이더의 [5202] 종목검색화면에서는 하나의 검색식을 주기를 달리해 지정해 검색하거나 검색식을 여러개 지정해 기간을 달리지정해 조합해서 검색할수 있습니다. 프로그램 사용법 도움말에서 각 화면 도움말 참고하시기 바랍니다. 즐거운 하루되세요 > 행복충전 님이 쓴 글입니다. > 제목 : for문 2개이면 종목검색 안됩니다 > 아래 두가지의 경우 모두 종목검색이 안됩니다. 해결 방법이 있나요? 1) for문 하나에 sumP와 sumV를 같이 구함 var : sumP(0), sumV(0), mavP(0), mavV(0), cnt(0); sumP = 0; sumV = 0; for cnt = 1 to 60 { sumP = sumP + abs(DayClose(cnt)-DayOpen(cnt)); // 일봉 캔들 60개 합 sumV = sumV + DayVolume(cnt); // 일봉 거래량 60개 합 } mavP = sumP/60; // 일봉 캔들 60이평 mavV = sumV/60; // 일봉 거래량 60이평 If (C-O)/O*100 >= 1 Then find((C-O)/O*100); =================================================== 2) for문 두 개 사용 var : sumP(0), sumV(0), mavP(0), mavV(0), cnt(0); sumP = 0; sumV = 0; for cnt = 1 to 60 { sumP = sumP + abs(DayClose(cnt)-DayOpen(cnt)); // 일봉 캔들 60개 합 } mavP = sumP/60; // 일봉 캔들 60이평 for cnt = 1 to 60 { sumV = sumV + DayVolume(cnt); // 일봉 거래량 60개 합 } mavV = sumV/60; // 일봉 거래량 60이평 If (C-O)/O*100 >= 1 Then find((C-O)/O*100);