커뮤니티

수식변경요청

프로필 이미지
풍요
2025-06-08 13:56:38
180
글번호 191493
답변완료
안녕하세요 빠른 답변에 감사드립니다. 다름이 아니라 아래검색식은 일봉에서 작동을 하는데 주봉, 월봉에서는 제대로 종목을 검색하지 못하여서 혹시 주봉이나 월봉에서 검색할 수 있게 수정가능한가 해세요 미리 감사드립니다. Var : conditionMet(false); // 최종 조건 만족 여부 플래그 Var : dayIndex(0); // 이전 날짜를 순회할 루프 인덱스 Var : matchCount(0); // 조건 만족 일 개수 카운터 Var : highestHigh10Days(0); // '최근 10일간의 최고가'를 저장할 변수 var : MA5(0),MA20(0),MA60(0),MA120(0),MA240(0); // 이동평균선 변수 // 이동평균선 계산 MA5 = ma(C,5); MA20 = ma(C,20); MA60 = ma(C,60); MA120 = ma(C,120); MA240 = ma(C,240); // 최근 10일간의 최고가 계산 highestHigh10Days = max(DayHigh(0), DayHigh(1), DayHigh(2), DayHigh(3), DayHigh(4),DayHigh(5), DayHigh(6),DayHigh(7),DayHigh(8),DayHigh(9),DayHigh(10)); // 현재 10일간의 최고가가 5일선, 20일선 위에 있고, 모든 이동평균선이 정배열일 때 if (highestHigh10Days > MA5 && highestHigh10Days > MA20 && MA5 > MA20 && MA20 > MA60 && MA60 > MA120 && MA60 > MA240) Then { // === 2단계: 1단계 조건 만족 시 과거 240일을 스캔 === matchCount = 0; For dayIndex = 0 to 380// 0부터 239까지, 총 240일 스캔 { // 스캔하는 각 날짜의 고가가 10일간의 최고가와 같고, 해당 시점의 이동평균선이 정배열인지 확인 if (DayHigh(dayIndex) == highestHigh10Days && MA5[dayIndex] > MA20[dayIndex] && MA20[dayIndex] > MA60[dayIndex] && MA60[dayIndex] > MA120[dayIndex]) Then { matchCount = matchCount + 1; // 조건이 모두 만족하면 카운트 증가 } } // 과거 조건 만족 횟수가 2회 이상이면 최종 조건 만족 if (matchCount >= 2) Then conditionMet = true; Else conditionMet = False; } Else // 1단계 조건이 만족되지 않으면 { conditionMet = False; } // 최종 조건이 만족하면 종목 검색 if (conditionMet) Then Find(1);
검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-06-09 16:49:49

안녕하세요 예스스탁입니다. DayHigh와 같은 함수가 일봉이하의 주기에서만 의미가 있습니다. 봉의 고가를 사용하게 변경해 드립니다. Var : conditionMet(false); // 최종 조건 만족 여부 플래그 Var : ii(0); // 이전 날짜를 순회할 루프 인덱스 Var : matchCount(0); // 조건 만족 일 개수 카운터 Var : highestHigh10Days(0); // '최근 10일간의 최고가'를 저장할 변수 var : MA5(0),MA20(0),MA60(0),MA120(0),MA240(0); // 이동평균선 변수 // 이동평균선 계산 MA5 = ma(C,5); MA20 = ma(C,20); MA60 = ma(C,60); MA120 = ma(C,120); MA240 = ma(C,240); // 최근 10일간의 최고가 계산 highestHigh10Days = highest(H,11); // 현재 10일간의 최고가가 5일선, 20일선 위에 있고, 모든 이동평균선이 정배열일 때 if (highestHigh10Days > MA5 && highestHigh10Days > MA20 && MA5 > MA20 && MA20 > MA60 && MA60 > MA120 && MA60 > MA240) Then { // === 2단계: 1단계 조건 만족 시 과거 240일을 스캔 === matchCount = 0; For ii = 0 to 380// 0부터 239까지, 총 240일 스캔 { // 스캔하는 각 날짜의 고가가 10일간의 최고가와 같고, 해당 시점의 이동평균선이 정배열인지 확인 if (H[ii] == highestHigh10Days && MA5[ii] > MA20[ii] && MA20[ii] > MA60[ii] && MA60[ii] > MA120[ii]) Then { matchCount = matchCount + 1; // 조건이 모두 만족하면 카운트 증가 } } // 과거 조건 만족 횟수가 2회 이상이면 최종 조건 만족 if (matchCount >= 2) Then conditionMet = true; Else conditionMet = False; } Else // 1단계 조건이 만족되지 않으면 { conditionMet = False; } // 최종 조건이 만족하면 종목 검색 if (conditionMet) Then Find(1); 즐거운 하루되세요 > 풍요 님이 쓴 글입니다. > 제목 : 수식변경요청 > 안녕하세요 빠른 답변에 감사드립니다. 다름이 아니라 아래검색식은 일봉에서 작동을 하는데 주봉, 월봉에서는 제대로 종목을 검색하지 못하여서 혹시 주봉이나 월봉에서 검색할 수 있게 수정가능한가 해세요 미리 감사드립니다. Var : conditionMet(false); // 최종 조건 만족 여부 플래그 Var : dayIndex(0); // 이전 날짜를 순회할 루프 인덱스 Var : matchCount(0); // 조건 만족 일 개수 카운터 Var : highestHigh10Days(0); // '최근 10일간의 최고가'를 저장할 변수 var : MA5(0),MA20(0),MA60(0),MA120(0),MA240(0); // 이동평균선 변수 // 이동평균선 계산 MA5 = ma(C,5); MA20 = ma(C,20); MA60 = ma(C,60); MA120 = ma(C,120); MA240 = ma(C,240); // 최근 10일간의 최고가 계산 highestHigh10Days = max(DayHigh(0), DayHigh(1), DayHigh(2), DayHigh(3), DayHigh(4),DayHigh(5), DayHigh(6),DayHigh(7),DayHigh(8),DayHigh(9),DayHigh(10)); // 현재 10일간의 최고가가 5일선, 20일선 위에 있고, 모든 이동평균선이 정배열일 때 if (highestHigh10Days > MA5 && highestHigh10Days > MA20 && MA5 > MA20 && MA20 > MA60 && MA60 > MA120 && MA60 > MA240) Then { // === 2단계: 1단계 조건 만족 시 과거 240일을 스캔 === matchCount = 0; For dayIndex = 0 to 380// 0부터 239까지, 총 240일 스캔 { // 스캔하는 각 날짜의 고가가 10일간의 최고가와 같고, 해당 시점의 이동평균선이 정배열인지 확인 if (DayHigh(dayIndex) == highestHigh10Days && MA5[dayIndex] > MA20[dayIndex] && MA20[dayIndex] > MA60[dayIndex] && MA60[dayIndex] > MA120[dayIndex]) Then { matchCount = matchCount + 1; // 조건이 모두 만족하면 카운트 증가 } } // 과거 조건 만족 횟수가 2회 이상이면 최종 조건 만족 if (matchCount >= 2) Then conditionMet = true; Else conditionMet = False; } Else // 1단계 조건이 만족되지 않으면 { conditionMet = False; } // 최종 조건이 만족하면 종목 검색 if (conditionMet) Then Find(1);