캔버스 검색은 그림판(캔버스)에 그린 선 모양과 유사한 패턴을 보이는 종목을 찾는 화면으로,
구성은 다음 [그림 1]과 같습니다.
캔버스 검색의 두드러진 특징은, 그림의 일부분만을 그리고 나머지 부분을 비움으로써 중요 포인트만을 고려하여 더 정확하고 많은 검색결과를 쉽게 찾을 수 있다는 점입니다.

캔버스 와
펜 모드
- 그림을 그리거나 수정하는 영역입니다. [2. 펜 모드]에서 [그리기]를 선택하면 그림을 그리는 상태가, [수정하기] 또는 [부분 지우기]를 선택하면 기존 그림의 일부분을 지우는 상태가 됩니다.
그림을 그릴 때에는, 캔버스 영역에 마우스를 옮기고 마우스 오른쪽 버튼을 누른 상태에서 마우스를 움직입니다.
기존 그림을 수정할 때에는, [그림 2]와 같이 기존 그림 위에다 새로운 그림을 그리 듯이 다시 그리면, 새로 그려진 부분만 다시 그려집니다.

- 그림 2). 그림 그리기와 수정하기

- 그림 3). 그림 부분 지우기
- [2. 펜 모드]에서 [부분 지우기](혹은 [수정하기])를 선택하면, 캔버스의 그림이 [그림 3]과 같이 지울 수 있는 상태로 바뀝니다.
마우스 오른쪽 버튼을 누른 상태에서 [그림 3]의 선 위에 있는 점을 따라 움직이면 해당 부분이 지워집니다.
이렇게 지운 부분을 그대로 놓은 상태에서, [8. 검색 방법]의 [검색] 버튼을 눌러서 검색을 수행해도 되며, 이 때에 비워진 부분에 대한 데이터는 특수하게 처리됩니다.
이에 대해서는 [7. 데이터 설정] 부분에서 자세히 설명합니다.
[2. 펜 모드]의 [비우기] 또는 [전체 지우기] 버튼은 캔버스에 그려진 그림을 모두 지웁니다.
검색종목 그리드
- [3. 검색종목 그리드]에는 검색된 종목들을 보여줍니다. 검색된 종목의 가장 왼쪽에 있는 체크박스를 선택하고, [9. 확장메뉴]에 있는 버튼들을 눌러 해당 기능을 호출할 수 있습니다.
패턴 관리
- [기본패턴 불러오기] 버튼은 시스템이 기본적으로 제공하는 기본 패턴을 선택할 수 있는 [그림 4]의 다이얼로그를 보여줍니다. 이 다이얼로그에서 원하는 패턴을 선택하면 [1. 캔버스]에 해당 패턴이 그려집니다.

- 그림 4). 기본패턴 불러오기
- [패턴 저장하기]와 [저장패턴 불러오기] 버튼은 사용자가 그린 패턴을 별도로 저장하고 저장된 패턴을 불러올 때 사용합니다.

- 그림 5). 패턴 저장하기

- 그림 6). 저장패턴 불러오기
기준 일자
- ‘몇 봉 전’ 기준을 의미하며, 몇 봉 전 데이터를 ‘최신의 데이터’인 것으로 간주하는 것으로 검색의 시점을 과거로 옮기는 효과를 보입니다.
가령, 5일 전 시점에 캔버스 상에 그린 그림과 비슷한 패턴을 보인 종목을 찾고자 한다면, [7. 데이터 설정]의 [데이터 설정] 버튼을 누르면 나오는 다이얼로그에서 ‘일봉’을 선택한 다음에 [5. 기준일]을 ‘5’로 설정합니다.
이 기준일자는 데이터의 종류에 따라 달리 해석해야 합니다. 즉, 일봉일 때는 기준일자로, 주봉은 기준주간으로, 월봉은 기준월로, 분봉일 때는 ‘몇 봉 전 기준‘으로 보면 됩니다.
기간
- 캔버스에 그린 그림이 ‘몇 봉 간’에 걸친 기간을 나타내는 것인지를 의미합니다. 다른 말로, 캔버스의 가로축(X축)의 범위 내에 몇 개의 캔들(candle)이 들어가는가를 의미합니다.
앞서 [5. 기준 일자]에서 살펴보았듯이, 선택한 ‘데이터의 종류’에 따라 기간은 달리 해석됩니다.
즉, 일봉을 때는 ‘몇 일간’, 주봉은 ‘몇 주간’, 월봉을 ‘몇 개월간’, 분봉은 ‘몇 봉 간’이 됩니다.
데이터 설정
- [대상 설정] 버튼을 누르면 나타나는 다이얼로그에서 검색 대상을 보다 세밀하게 설정하실 수 있습니다.
즉, 거래소/코스닥/전체 포함 여부, 관리/감리종목 제외 여부, 가격대 범위, 거래량 범위 등에 대해 상세히 설정할 수 있고, 또한 검색과 출력의 순서를 설정하실 수 있습니다.

- 그림 7). [데이터 설정] 다이얼로그
- [데이터 설정] 버튼을 누르면, [그림 7]과 같이 검색할 종목의 데이터를 선택할 수 있는 다이얼로그가 나타납니다.
- 데이터 주기
- 어떤 시간 주기의 시세데이터를 갖고 캔버스의 그림과 유사한지를 판단할 것인가를 결정합니다. 일봉, 일봉, 월봉, 분봉( 5/10/15/30/60분 ) 중 하나를 선택합니다.
- 데이터 타입
- 어떤 종류의 시세데이터를 갖고 캔버스의 그림과 유사한지를 판단할 것인가를 결정합니다. 종가, 거래량, 시가, 고가, 저가, 중위값(median, (고가+저가)/2), 대표값(typical price, (시가+고가+저가)/3) 중 하나를 선택합니다.
- 이평(moving average)
- [② 데이터 타입]에서 선택한 데이터의 이평값을 갖고 그림을 비교를 하고자 하는 경우 선택합니다.
검색하는 기간이 길면 큰 이평 기간을 적용함으로써 장기추세를 제대로 잡아낼 수 있습니다.
반면 단기간의 변동폭을 중심으로 검색하고자 하는 경우, 이평을 적용하지 않거나 작은 이평기간을 선택하는 것이 원하는 패턴을 찾는 데 유용합니다.
- 캔버스의 그림은 실제 시세데이터보다 완만한(완곡한, smoothed) 형태를 취하고, 기간이 길수록 이러한 완만한 정도는 커지는 게 일반적입니다. 캔버스의 그림이 완만한 형태를 갖는 데 반해 비교가 되는 종목의 데이터가 그리는 그림이 완만하지 않다면, 이 둘 사이의 유사도(정확도, similarity)는 매우 낮아질 것입니다.
따라서 시세데이터의 급격한 변동을 제거하고 결국 시세의 흐름을 완만하게 하기(smoothing operation) 위해 이동평균을 적용합니다.
이동평균이 급격한 시세의 흐름을 완만하게 하는 smoothing operation의 하나입니다.
- 허용오차폭
- 허용오차폭(tolerance)는 0% ~ 50% 사이의 값을 가집니다. 허용오차폭이 커서 50%에 가까울수록 정확도가 낮은 종목을 포함하여 더 많은 검색결과를 얻을 수 있으며, 0%에 가까울수록 더 높은 정확도를 갖는 소수의 종목을 찾을 수 있습니다.
- 일반적으로 검색기간이 길수록, 캔버스의 그림이 복잡할수록(굴곡이 많을수록) 검색종목이 적습니다.
30% 수준의 허용오차폭이 기본값이며, 검색결과가 적을 경우에는 허용오차를 키우고, 반대의 경우 허용오차를 적절히 줄입니다.
- 데이터 최소 등락률
- [그림 1]에서 [6. 기간]이 캔버스의 가로축(X축)의 크기를 결정하고, [⑤ 데이터 최소 등락률]은 캔버스의 세로축(Y축)의 범위를 결정합니다.
캔버스의 그림 중 가장 작은 Y값과 가장 큰 Y값의 변화폭이 몇 % 이상인지를 의미하며, 최소값은 0%, 최대값은 무한대입니다. 등락률(혹은 변화폭)의 계산식은 ‘(최대값 - 최소값) / 최소값 * 100%’ 입니다.
- 빈 데이터의 Y축값 범위
- [빈(비워진) 데이터]는 [그리기] 상태에서 그린 그림 중 [부분 지우기] 상태에서 지운 부분을 말합니다.
[그림 8]에서 푸른 색 그리기 선이 제거된, 붉은 두 선 사이의 부분입니다.

- 그림 8). [빈 데이터]
- [빈 데이터]는 지워진(빈) 부분에 대해 종목의 시세데이터가 어떠한 흐름을 보였는지 고려하지 않을 경우에 적용합니다.
즉, [빈 데이터] 부분에서 종목의 시세데이터가 어떻게 움직였는지 고려하지 않고, 다만 [빈 데이터] 이전과 이후 부분만을 고려하고자 하는 경우에 적용합니다.
- 장기 추세의 경우나, ‘N자형 상승패턴’과 같이 복잡한 추세의 경우, 원하는 검색결과를 충분히 얻을 수 없는 경우가 많습니다.
이러한 경우, [빈 데이터]를 적절히 반영하여, 중간과정을 무시하고 ‘중요한 지점 몇 곳’만을 그림으로써 의도하는 패턴을 검색할 수 있습니다.
[그림 9]는 ‘N자형 상승패턴’을 검색할 때 스킵 데이터를 적용한 예입니다.

- 그림 9). [빈 데이터]를 이용한 ‘N자형 상승패턴’
- [빈 데이터]에 대해서도 어느 정도의 데이터 범위를 지정할 수 있습니다.
즉, [빈 데이터]가 지닐 수 있는 최대값과 최저값의 범위(Y축 값의 범위)를 선택할 수 있으며, 그것이 각각 [① 추세내], [② 최대/최소내], [③ 무제한]입니다.
- [빈 데이터] 부분에 대한 Y축값의 범위를 보면, [① 추세내]는 [빈 데이터] 앞뒤의 그림 사이에, [② 최대/최소내]는 전체 그림 중 최고점과 최저점 사이에 놓여야 함을, [③ 무제한]은 아무 값이나 올 수 있음을 의미하며, [그림 10]과 같습니다.

- 그림 10). [빈 데이터]의 ‘Y축값’ 범위
- 다만, [그림 10]과 같이 하나의 캔버스에 각기 다른 범위를 적용할 수는 없고, 전체 [빈 데이터]에 대해 하나의 처리방법만을 지정할 수 있습니다.
검색되는 종목의 수는, 일반적으로, [③ 무제한], [② 최대/최소내], [① 추세내]의 순입니다.
- 또한, 그림의 ‘시작부분과 끝부분에 나오는 [빈 데이터]’(leading/tailing skipped data))는, 무조건 무시되어, [③ 무제한]의 경우와 유사합니다. 이렇게 그림의 시작과 끝 부분을 비움으로써, [6. 기간]의 검색기간이 10일이지만, 앞뒤의 5일간에 대해서만 검색을 수행할 수 있습니다.

- 그림 11). leading and tailing skipped data
- 더 많은 검색결과를 얻으려면
- 무엇보다도 허용오차폭을 키웁니다. 즉, 50%에 가깝게 합니다.
- 이동평균을 적용합니다.
- 이동평균을 적용한 상태라면, 이평 기간을 늘려서, 선을 부드럽게 합니다.
- 중간과정에 해당하는 부분을 지웁니다. 즉, [빈 데이터] 구간을 만듭니다.
- [빈 데이터] 구간이 충분히 크다면, [③ 무제한], [② 최대/최소내], [① 추세내] 순으로 선택합니다.
검색 방법
- 검색방법에는 [일반 검색]과 [결과내 검색], [결과외 검색]의 세 가지가 있으며, 검색방법에 따라 검색 대상을 선정하는 방법이 달라집니다.
- [일반 검색]은 [7. 데이터 설정] 부분의 [대상 설정]을 통해 선정한 종목에 대해, [결과내 검색]은 [3. 검색종목 그리드]에 등록된 종목들에 대해 검색을 수행합니다. [결과외 검색]은 [일반 검색]의 종목에서 [결과내 검색]의 종목을 뺀 여집합([일반검색] - [결과내 검색] = [결과외 검색])에 대해 검색을 수행합니다.
- [결과내 검색]과 [결과외 검색]의 경우, [10. 목록탭]에 새로운 탭 항목을 만들어서 검색결과를 보여줍니다.
즉, 기존 검색결과를 지우지 않고, 그대로 보존합니다.
확장 메뉴
- [초기화] 버튼은 캔버스를 비우고 [3. 검색종목 그리드]를 비우는 등, 기존의 검색내용을 말끔히 지웁니다.
[저장] 버튼과 [불러오기] 버튼을 통해, [3. 검색종목 그리드]에 있는 종목들을 별도의 이름으로 저장하거나, 저장된 내용을 불러올 수 있습니다.
또한, 여러 [10. 목록 탭]이 있을 경우, 이들 목록들을 대상으로 합성작업을 통해 교집합, 합집합, 여집합(intersection set, union set, difference set)을 만들 수 있습니다.
- [차트로] 버튼을 통해, [3. 검색종목 그리드]에 있는 종목들을 ‘종합차트’의 해당 메뉴로 전송합니다.
[관심종목] 버튼은 [관심종목 등록 다이얼로그]를 보여줍니다. 이 다이얼로그를 통해, [3. 검색종목 그리드]에서 선택된 종목들을 관심종목으로 등록할 수 있습니다.
[연속] 버튼은 [3. 검색종목 그리드]에서 선택된 종목을 대상으로 ‘연속/연속보기’ 기능을 수행할 수 있는 다이얼로그를 띄웁니다.
목록 탭
- [8. 검색방법]이 [결과내 검색]과 [결과외 검색]의 경우, [10. 목록탭]에 새로운 탭 항목을 만들어서 검색결과를 보여줍니다. 즉, 기존 검색결과를 지우지 않고, 그대로 보존합니다. ‘일반검색’일 때는 기존 목록들을 모두 비우고, 하나를 새롭게 만듭니다.
- [9. 확장메뉴]의 [저장] 버튼과 [불러오기] 버튼을 통해, 새로운 목록을 합성하는 경우에도, 새로운 탭 항목을 만들어서 검색결과를 보여줍니다. 여러 목록을 모두 지우려면, [9. 확장메뉴]의 [초기화] 버튼을 누르거나, [8. 검색방법] 중 [일반 검색]을 수행하면 됩니다.
진행 상태
- 검색에 대한 상태를 간략하게 알려줍니다.
[조회] 버튼을 누를 때 0%로 초기화된 진행상태 막대가 100%에 도달하면 검색이 완료된 것을 의미합니다.
‘검색대상 종목’과 ‘조건만족 종목’은 총 몇 개의 종목 가운데 몇 개의 종목이 검색되었음을 말합니다.