안녕하세요
검색식을 잘쓰고 있습니다. 그런데 아래와 같이 당일고가와 같은 고가가 나오는 종목을 찾으려고 하는데, 잘안되네요
// '▼' 텍스트 표시를 위한 변수
Var : tx(0);
Var : conditionMet(false); // 최종 조건 만족 여부 플래그
Var : dayIndex(0); // 이전 날짜를 순회할 루프 인덱스
Var : matchCount(0); // DayHigh(0)와 일치하는 날짜 개수 카운터
// --- 조건 확인 로직: DayHigh(0)의 고가가 DayHigh(0)~DayHigh(99) 내에서 2번 이상 출현하는가? ---
// (즉, 현재 날짜 고가가 과거 99 거래일 이내에서 한 번이라도 동일하게 출현하는가?)
// 1. DayHigh(0) 고가가 전체 100 거래일(DayHigh(0) ~ DayHigh(99)) 내에서 몇 번 나타나는지 셉니다.
// (주의: DayHigh(0) 자기 자신도 카운트되므로, 2번 이상 나타나야 과거 출현을 의미)
matchCount = 0; // 카운트 초기화
For dayIndex = 0 to 99 Begin // 스캔 범위를 0부터 99까지 100 거래일로 설정
// 현재 스캔 중인 거래일의 고가가 DayHigh(0)의 고가와 정확히 같은지 확인
if (DayHigh(dayIndex) == DayHigh(0)) Then {
matchCount = matchCount + 1; // 같으면 카운트 증가
}
End; // --- 100 거래일 스캔 루프 끝 ---
// 2. 'matchCount'가 2 이상인지 확인합니다.
// (이는 DayHigh(0) 고가가 자기 자신 외에 과거 거래일에서 최소 한 번 더 나타났음을 의미)
if (matchCount >= 2) Then {
// 조건 만족: DayHigh(0) 고가가 과거 99 거래일 내에서 최소 한 번 이상 반복됨
conditionMet = true;
}
// --- 최종 판단 ---
if (conditionMet) Then
{
// '▼' 텍스트를 차트에 표시합니다. 위치는 오픈가 기준 위쪽입니다.
// (분봉 차트에서 사용 시, 해당 봉의 위치에 표시됩니다)
tx = Text_New_Self(sDate,sTime,O+PriceScale*15,"▼");
// 스타일 및 색상 설정
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Black);
}
상기와 같은 식을 만들었는데 식을 작동시키면 모든 봉에 표시가 됩니다.혹시 확인가능하신지요 감사합니다.
답변 1
예스스탁
예스스탁 답변
2025-05-19 17:57:57
안녕하세요
예스스탁입니다.
if (matchCount >= 2) Then
{
conditionMet = true;
}
변수는 값이 한번 저장되면 다음에 변경전까지 그 값이 유지됩니다.
조건만족하지 않으면 false가 되게 작성하셔야 합니다.
수정한 식입니다.
Var : tx(0);
Var : conditionMet(false); // 최종 조건 만족 여부 플래그
Var : dayIndex(0); // 이전 날짜를 순회할 루프 인덱스
Var : matchCount(0); // DayHigh(0)와 일치하는 날짜 개수 카운터
// --- 조건 확인 로직: DayHigh(0)의 고가가 DayHigh(0)~DayHigh(99) 내에서 2번 이상 출현하는가? ---
// (즉, 현재 날짜 고가가 과거 99 거래일 이내에서 한 번이라도 동일하게 출현하는가?)
// 1. DayHigh(0) 고가가 전체 100 거래일(DayHigh(0) ~ DayHigh(99)) 내에서 몇 번 나타나는지 셉니다.
// (주의: DayHigh(0) 자기 자신도 카운트되므로, 2번 이상 나타나야 과거 출현을 의미)
matchCount = 0; // 카운트 초기화
For dayIndex = 0 to 99 Begin // 스캔 범위를 0부터 99까지 100 거래일로 설정
// 현재 스캔 중인 거래일의 고가가 DayHigh(0)의 고가와 정확히 같은지 확인
if (DayHigh(dayIndex) == DayHigh(0)) Then {
matchCount = matchCount + 1; // 같으면 카운트 증가
}
End; // --- 100 거래일 스캔 루프 끝 ---
// 2. 'matchCount'가 2 이상인지 확인합니다.
// (이는 DayHigh(0) 고가가 자기 자신 외에 과거 거래일에서 최소 한 번 더 나타났음을 의미)
if (matchCount >= 2) Then {
// 조건 만족: DayHigh(0) 고가가 과거 99 거래일 내에서 최소 한 번 이상 반복됨
conditionMet = true;
}
Else
conditionMet = False;
// --- 최종 판단 ---
if (conditionMet) Then
{
// '▼' 텍스트를 차트에 표시합니다. 위치는 오픈가 기준 위쪽입니다.
// (분봉 차트에서 사용 시, 해당 봉의 위치에 표시됩니다)
tx = Text_New_self(sDate,sTime,O+PriceScale*15,"▼");
// 스타일 및 색상 설정
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Black);
}
즐거운 하루되세요
> 풍요 님이 쓴 글입니다.
> 제목 : 수식요청
> 안녕하세요
검색식을 잘쓰고 있습니다. 그런데 아래와 같이 당일고가와 같은 고가가 나오는 종목을 찾으려고 하는데, 잘안되네요
// '▼' 텍스트 표시를 위한 변수
Var : tx(0);
Var : conditionMet(false); // 최종 조건 만족 여부 플래그
Var : dayIndex(0); // 이전 날짜를 순회할 루프 인덱스
Var : matchCount(0); // DayHigh(0)와 일치하는 날짜 개수 카운터
// --- 조건 확인 로직: DayHigh(0)의 고가가 DayHigh(0)~DayHigh(99) 내에서 2번 이상 출현하는가? ---
// (즉, 현재 날짜 고가가 과거 99 거래일 이내에서 한 번이라도 동일하게 출현하는가?)
// 1. DayHigh(0) 고가가 전체 100 거래일(DayHigh(0) ~ DayHigh(99)) 내에서 몇 번 나타나는지 셉니다.
// (주의: DayHigh(0) 자기 자신도 카운트되므로, 2번 이상 나타나야 과거 출현을 의미)
matchCount = 0; // 카운트 초기화
For dayIndex = 0 to 99 Begin // 스캔 범위를 0부터 99까지 100 거래일로 설정
// 현재 스캔 중인 거래일의 고가가 DayHigh(0)의 고가와 정확히 같은지 확인
if (DayHigh(dayIndex) == DayHigh(0)) Then {
matchCount = matchCount + 1; // 같으면 카운트 증가
}
End; // --- 100 거래일 스캔 루프 끝 ---
// 2. 'matchCount'가 2 이상인지 확인합니다.
// (이는 DayHigh(0) 고가가 자기 자신 외에 과거 거래일에서 최소 한 번 더 나타났음을 의미)
if (matchCount >= 2) Then {
// 조건 만족: DayHigh(0) 고가가 과거 99 거래일 내에서 최소 한 번 이상 반복됨
conditionMet = true;
}
// --- 최종 판단 ---
if (conditionMet) Then
{
// '▼' 텍스트를 차트에 표시합니다. 위치는 오픈가 기준 위쪽입니다.
// (분봉 차트에서 사용 시, 해당 봉의 위치에 표시됩니다)
tx = Text_New_Self(sDate,sTime,O+PriceScale*15,"▼");
// 스타일 및 색상 설정
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Black);
}
상기와 같은 식을 만들었는데 식을 작동시키면 모든 봉에 표시가 됩니다.혹시 확인가능하신지요 감사합니다.