예스스탁
예스스탁 답변
2015-10-20 15:43:37
안녕하세요
예스스탁입니다.
1.
해당 오류메세지는
타이머 이벤트가 한번 더 수행되어서
검색된 모든 종목에 대해서 차트를 생성하고
더이상 생성할 종목이 없는데 1회 더 타이머 이벤트가 수행됨으로써 발생하는 메세지입니다.
아래와 같이 수정하시면 발생하지 않습니다.
if (ReqCount == ListCnt)
Main.KillTimer(1);
부분을 타이머 이벤트에서 가장 하단으로 옮기시면 발생하지 않습니다.
if (ReqCount == ListCnt)
Main.KillTimer(1);
var List;
var ListCnt;
var ReqCount;
//스팟 첫 실행시
function Main_OnStart()
{
// 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청
Main.ReqPowerSearch("test Search")
}
//종목검색 완료되어 리스트(검색된 종목코드) 수신
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList(aItemList);
//검색된 종목코드를 저장
List = aItemList;
//검색된 종목수 저장
ListCnt = nCount;
Main.SetTimer(1,2000);//2 타이머
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
//2초 단위로 한종목씩 차트 생성
if (nEventID == 1)
{
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 : 연결선물,1분봉,5000개, 수정주가X, 갭보정X
var C1 = new ReqChartItem(List[ReqCount],1,CHART_PERIOD_DAILY,5000,CHART_REQCOUNT_BAR,false,false);
//시스템 설정
var S1 = new SystemInfo("Stochastics K_D");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
//요청이 검색된 종목수 만큼 되었으면 터이머 종료
if (ReqCount == ListCnt)
Main.KillTimer(1);
}
}
2
차트를 생성하면 숨김상태로 차트가 생성됩니다.
보고자 하시면 차트보기를 클릭하시면 나타납니다.
3
첨부하신 식은 스팟이 적용되고 최초 시작시점에서 1회만 검색이 됩니다.
주기적으로 계속 자동으로 종목검색을 실행하는 것은 아닙니다.
즐거운 하루되세요
> 만들레영토 님이 쓴 글입니다.
> 제목 : [질문]종목검색후 매매수식오류.조회대상아닙니다.
> 아래 수식은 "종목검색"이후 매매방식의 수식을 그대로 가져왔는데
Main.ReqChartEx(C1,S1); --> 여기서 오류가 나옵니다.
TypeError: "undefined"는 조회대상이 아닙니다
1. 무엇이 잘못되었나요?
2. 종목검색후 --> 차트생성에서 차트가 화면에 팝업?으로 나오는건지요? 아니면 차트보기를 클릭해야만 차트를 볼 수 있는건지요?
3. 파워종목검색의 경우 실시간으로 종목이 신규로 나오는 것이 아닌지요? 검색을 클릭하면 그때 다시 종목이 신규로 업데이트 됩니다. 무엇이 문제인가요?
참고로 위 오류가 뜨지만, 차트보기 누르면 주식 매수/매도 매매가 진행됩니다..
var List;
var ListCnt;
var ReqCount;
//스팟 첫 실행시
function Main_OnStart()
{
// 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청
Main.ReqPowerSearch("test Search")
}
//종목검색 완료되어 리스트(검색된 종목코드) 수신
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목코드를 저장
List = aItemList;
//검색된 종목수 저장
ListCnt = nCount;
Main.SetTimer(1,2000);//2 타이머
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
//2초 단위로 한종목씩 차트 생성
if (nEventID == 1)
{
//요청이 검색된 종목수 만큼 되었으면 터이머 종료
if (ReqCount == ListCnt)
Main.KillTimer(1);
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 : 연결선물,1분봉,5000개, 수정주가X, 갭보정X
var C1 = new ReqChartItem(List[ReqCount],1,CHART_PERIOD_DAILY,5000,CHART_REQCOUNT_BAR,false,false);
//시스템 설정
var S1 = new SystemInfo("Stochastics K_D");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
}
}
#생성된 차트에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생하면 매수주문
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1);
}
//청산신호 발생하면 매도주문
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1);
}
}