예스스탁
예스스탁 답변
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);