커뮤니티

차트 여러개에 반복 작업하는 경우

프로필 이미지
doit
2023-01-03 12:36:21.0
1231
글번호 225757
답변완료
초보적인 질문 같은데,어떻게 하는지 감이 안 오네요. 차트1~차트50 : 예스트레이더에 50개의 차트가 있고, 차트객체 생성후 아이디 연결했을경우, 신호 발생시에 아래와 같이, 각각 동일작업을 수행하려 합니다. 이벤트에 같은 코드에 차트이름만 바꿔서 50번 붙여넣기 안 하고 한개만 수정해도 다 적용되게 하는 방법이 있을까요? function Chart1_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart1.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart1.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart1.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart1.GetClose(1,0));//신호가격 } function Chart2_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart2.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart2.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart2.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart2.GetClose(1,0));//신호가격 } . . . . . . . . . . . . . function Chart50_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart50.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart50.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart50.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart50.GetClose(1,0));//신호가격 }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-01-03 19:30:45.0

안녕하세요 예스스탁입니다. 1 일반차트객체로 아이디 지정해 연결하신 경우이므로 별도로 방법이 없습니다. 올리신 내용과 같이 나열해서 작성하셔야 합니다. 일반차트객체는 객체별로 완성신호 이벤트가 동작하게 되어 있습니다. 2 Main.ReqChartEx(ReqChartItem, SystemInfo, IndicatorInfo, ReqRefItem) 만약 수식안에서 위 함수로 확장차트객체로 시스템을 적용한 50개 차트를 여시면 메인객체의 완성신호 이벤트가 발생합니다. 해당 이벤트는 생성된 확장차트로 만들어진 모든 차트에서 신호가 발생하면 단일 이벤트로 모두 받게 됩니다. 아래는 간단히 3개의 차트를 확장차트로 여는 예제입니다. 식작성에 참고하시기 바랍니다. var SymBol= ["005930","005940","017390"];//종목코드 순서대로 나열 var SystemName = ["RSI","BinaryWave","이격도"]; // 적용할 시스템명 순서대로 나열 var CT = []; var req; function Main_OnStart() { req = 0; if (SymBol.length > 0) { //차트설정정보 종목코드, 3분봉, 5000개,수정주가적용안함,갭보정안함 var ChartSet = new ReqChartItem(SymBol[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false); //시스템 설정정보 var SystemSet = new SystemInfo(SystemName[req], YL_TYPE_NORMAL, null, null,null); Main.ReqChartEx(ChartSet,SystemSet); } } function Main_OnRcvChartEx(ChartEx) { CT[req] = ChartEx; req = req+1; if (req < SymBol.length) { //차트설정정보 시스템명, 3분봉, 5000개,수정주가적용안함,갭보정안함 var ChartSet = new ReqChartItem(SymBol[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false); //시스템 설정정보 var SystemSet = new SystemInfo(SystemName[req], YL_TYPE_NORMAL, null, null,null); Main.ReqChartEx(ChartSet,SystemSet); } else { Main.MessageList("차트생성완료"); } } function Main_OnRiseSignal(ChartEx, Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart1.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart1.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart1.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart1.GetClose(1,0));//신호가격 } 새해 복 많이 받으시고 즐거운 하루되세요 > doit 님이 쓴 글입니다. > 제목 : 차트 여러개에 반복 작업하는 경우 > 초보적인 질문 같은데,어떻게 하는지 감이 안 오네요. 차트1~차트50 : 예스트레이더에 50개의 차트가 있고, 차트객체 생성후 아이디 연결했을경우, 신호 발생시에 아래와 같이, 각각 동일작업을 수행하려 합니다. 이벤트에 같은 코드에 차트이름만 바꿔서 50번 붙여넣기 안 하고 한개만 수정해도 다 적용되게 하는 방법이 있을까요? function Chart1_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart1.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart1.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart1.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart1.GetClose(1,0));//신호가격 } function Chart2_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart2.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart2.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart2.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart2.GetClose(1,0));//신호가격 } . . . . . . . . . . . . . function Chart50_OnRiseSignal(Signal) { rowNum = Excel1.GetRowCount(1)+1; //엑셀 새 행번호 Excel1.SetData(1, "A"+rowNum, Chart50.GetSDate(1,0)); //신호날짜 Excel1.SetData(1, "B"+rowNum, Chart50.GetSTime(1,0));//신호시간 Excel1.SetData(1, "C"+rowNum, Chart50.GetCode(1));//신호코드 Excel1.SetData(1, "D"+rowNum, Chart50.GetClose(1,0));//신호가격 }