커뮤니티
[예스스팟] 파워종목검색 결과값(aValues)에 검색식 계산값을 싣는 방법 문의
안녕하세요. 예스스팟 스크립트로 자동매매 엔진을 운용 중입니다.
파워종목검색 결과를 스팟에서 받을 때, 검색식이 계산한 값을 함께 받는 방법을
찾지 못해 문의드립니다.
■ 목적
하나의 검색식 안에서 If ~ Else If 체인으로 Find(1) ~ Find(13)을 나눠 호출하고 있습니다. 스팟 엔진에서 "이 종목이 몇 번 조건으로 걸렸는지"를 알아야 종목별로 다른 매매 전략(진입 비중, 손절폭, 트레일링)을 적용할 수 있습니다.
■ 현재 구성
[3202] 파워종목검색 사용자검색조건 등록 내용
A. [순위 검색] 설정조건에서 [거래량] [상위] 순으로 [300] 종목검색
B. [순위 검색] 설정조건에서 [거래대금] [상위] 순으로 [300] 종목검색
C. [가격대별 주가] 가격대 [2,000] ~ [500,000]
E. [차트 Fire+ASGMA(...)] 검색어 ← 예스랭귀지로 작성한 지표 검색식
조합식 : (A or B) and C and E
■ 확인된 동작
스팟에서 Main_OnRcvItemList(aItemList, nCount, aValues)로 정상 수신됩니다.
(인자 3개 수신 확인, aValues.length == nCount 일치)
aValues[i] 가 "1,1,1,0" 형태의 쉼표 결합 문자열로 옵니다.
하루치 608건을 전수 확인한 결과 세 가지 패턴만 나왔습니다.
"1,1,1,0" 426건
"0,1,1,0" 125건
"1,0,1,0" 57건
앞 세 자리는 A, B, C 조건과 정확히 대응합니다.
· 세 번째 자리(C 가격대)는 항상 1
· 첫째·둘째(A, B) 중 최소 하나는 항상 1 — 조합식 (A or B)와 일치
· 둘 다 1인 경우가 다수, 한쪽만 1인 경우가 소수
그런데 네 번째 자리(E 지표 검색식)는 항상 0입니다.
조합식이 "and E" 이므로 E가 거짓이면 그 종목은 검색되지 않아야 하는데, 검색은 정상적으로 되면서 값만 0으로 옵니다.
■ 시도한 것
1) 검색식에 Var : FindTag(0); 를 선언하고 각 분기에서 값을 대입한 뒤
마지막 줄에 FindTag; 를 두었습니다. → aValues 해당 자리 계속 0
2) 변수 문제인지 확인하기 위해 마지막 줄을 상수 7; 로 바꿨습니다.
→ 조건 삭제 후 재등록, 엔진 재기동까지 하고 353건을 확인했으나 해당 자리는 여전히 0이었습니다.
즉 변수 값이나 대입 시점의 문제가 아니라, 지표 검색식이 계산한 값이 aValues로 전달되는 경로 자체가 없는 것으로 보입니다.
■ 질문
1) 지표 검색식(예스랭귀지)에서 계산한 숫자를 aValues로 내보내려면 어떤 문법을 써야 합니까?
(전용 함수가 있는지, 특정 변수명 규칙이 있는지,
또는 [3202] 탭 설정에서 결과값 컬럼을 지정해야 하는지)
2) aValues의 각 원소가 쉼표 결합 문자열인 것이 정상 규격입니까?
슬롯 순서는 조건 등록 순서(A, B, C, E)와 항상 일치합니까?
3) 위 방법이 없다면, 검색식에서 호출한 Find(n)의 n 값을 스팟에서 받을 수 있는 다른 방법이 있습니까?
(없다면 검색식을 조건별로 나눠 등록하는 방식 외에 권장하시는 구조가 있는지도 알려주시면 감사하겠습니다.)
[SEARCH_SHAPE] 검색콜백 원형 | argc:3 n:6 list[0] type:string val:036710
| values:있음 len:6 values[0] type:string val:1,1,1,0
감사합니다.
답변 3
예스스탁 예스스탁 답변
2026-09-02 16:00:48
megapro
2026-09-02 20:05:35
예스스탁 예스스탁 답변
2026-09-03 14:17:47