커뮤니티

예스스팟 스크립트에서 차트 객체의 종목을 변경하는 명령어가 무엇인가요?

프로필 이미지
강심장
2026-01-22 12:12:30
59
글번호 229985
답변완료

안녕하세요. 예스스팟에서 스크립트 객체로 '차트'를 추가했습니다. 스크립트 상에서 특정 조건이 되면 이 차트의 종목을 다른 옵션 종목으로 변경하고 싶은데, ChangeCode나 SetCode를 써보니 has no method 에러가 발생합니다. 현재 제가 사용하는 버전의 차트 객체에서 종목 코드를 강제로 변경하는 메서드 명칭이 무엇인지 알고 싶습니다. (참고로 메서드 목록에 GetCode는 보이는데 변경 관련 명령어는 찾기가 어렵네요.)

답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-30 15:02:56

안녕하세요 예스스탁입니다. 모든 차트객체는 생성 후 종목변경이 가능하지 않습니다. 종목들을 고정해서 사용하는 경우가 아니라면
수식에서 Main.ReqChartEx로 확장차트 요청해서 사용하셔야 합니다. 수식에서 생성하는 확장차트객체는 갯수의 제한이 없습니다.
필요한 만큼 생성해 사용할 수 있습니다.
아래 내용을 참고하시기 바랍니다. 아래 예제에는 처음 삼성전자 차트에 특정 시스템을 걸어 생성한 다음에 10초 뒤 삭제하고 SK하이닉스 차트로 새로 생성하게 됩니다. 이때 차트객체는 CT변수에 저장해 수식에서 동일변수로 객체를 사용하게 됩니다.

동일변수로 객체를 이용하실 필요가 없으시면
Main.ReqChartEx로 요청시마다 배열변수나 다른 이름의 변수에 저장해 사용하시면 됩니다. function Main_OnStart() { //기본종목셋팅(삼성전자,5분 5000개, 갭보정안함, 수정주가처리 안함) var ChartSet = new ReqChartItem("005930",5,CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //시스템 셋팅 var SysSet = new SystemInfo("Stochastics K_D",YL_TYPE_NORMAL); Main.ReqChartEx(ChartSet, SysSet); Main.SetTimer(1, 10000); } function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == "005930") { CT = ChartEx; } if (ChartEx.GetCode(1) == "005930") { CT = ChartEx; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { //기존 CT 차트객체 삭제 Main.RemoveObject(CT); //기본종목셋팅(SK하이닉스,5분 5000개, 갭보정안함, 수정주가처리 안함) var ChartSet = new ReqChartItem("000660",5,CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //시스템 셋팅 var SysSet = new SystemInfo("Stochastics K_D",YL_TYPE_NORMAL); Main.ReqChartEx(ChartSet, SysSet); } } 즐거운 하루되세요