커뮤니티

엑셀에 데이터를 매일 누적해서 쌓는 방법

프로필 이미지
퀀트드래곤
2019-05-07 20:10:42
3802
글번호 224852
답변완료
엑셀에 데이터를 누적해서 쌓으려 하는데 아래 rayen님 께서 질문하신 내용을 참고하니까 킨 순간부터 끌때까지의 당일 데이터는 누적으로 받아지나, 매일 9시 이전에 키고, 장 마감할때 꺼서 데이터를 매일 누적하고 싶은데 어떤식으로 해야할까요. rayan님처럼 하면 매일 엑셀데이터가 초기화 되네요 일단 이를 해결하기위해 Excel1.GetRowCount함수를 사용해서 현제 엑셀파일의 row를 읽은 후 +1을 해줘서 누적을 하려했는데, 잘 안되는거같네요 var Time; var S; //기초자산(현재가) var r; //무위험이자율 var K; //행사가 var T; //잔존만기 var xlRow; //엑셀의 행 function Main_OnStart() { xlRow =Excel1.GetRowCount(1) + 1; //2번째 행부터 시작 Time = getHHMMSSS(); S = MarketData1.current; //연결선물지수 현재가 r = Option1.RiskFreeRate; K = Option1.GetExercisePrice(0, 0); T = Option1.GetRemainDays(0, 0)/252; Main.SetTimer(1, 5000) } function Main_OnTimer(nEventID) { Time = getHHMMSSS(); S = MarketData1.current; //연결선물지수 현재가 r = Option1.RiskFreeRate; K = Option1.GetExercisePrice(0, 0); T = Option1.GetRemainDays(0, 0)/252; Excel1.SetRowData(1, "A"+xlRow, Time); Excel1.SetRowData(1, "B"+xlRow, S); Excel1.SetRowData(1, "C"+xlRow, K); Excel1.SetRowData(1, "D"+xlRow, Option1.GetCurrent(0, 1)); Excel1.SetRowData(1, "E"+xlRow, Option1.GetCurrent(1, -1)); Excel1.SetRowData(1, "F"+xlRow, Option1.GetRemainDays(0,0)); Excel1.SetRowData(1, "G"+xlRow, Option1.RiskFreeRate); xlRow = xlRow + 1; 에러 메세지가 4개가 뜨는데 1. 엑셀을 정상적으로 호출할 수 없습니다 2. excel1:객체를 생성할 수 없습니다. 3. 엑셀파일에 연결되지 않았습니다. 4. 엑셀을 정상적으로 호출할 수 없습니다. 이렇게 뜨네요
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-05-16 10:21:11

안녕하세요 예스스탁입니다. 1 사용하시는 엑셀 파일의 1열에 셀중에 하나라도 값이 있는 상태라면 해당 수식에 문제가 없습니다. 다만 1열이 모두 공백이면 Excel1.GetRowCount(1)가 값이 있는 열의 숫자만 리턴하므로 재적용시에 기존 엑셀의 마지막 열에 새로운 값이 적혀지게 됩니다. 1열이 공백이시면 아래와 같이 xlRow의 초기값을 변경하시면 됩니다. function Main_OnStart() { if (Excel1.GetRowCount(1) == 1) xlRow =Excel1.GetRowCount(1) + 1; else xlRow =Excel1.GetRowCount(1) + 2; Time = getHHMMSSS(); S = MarketData1.current; //연결선물지수 현재가 r = Option1.RiskFreeRate; K = Option1.GetExercisePrice(0, 0); T = Option1.GetRemainDays(0, 0)/252; Main.SetTimer(1, 5000) } 2 스팟수식에서 사용하는 엑셀파일은 스팟수식이 실행되면 해당 엑셀파일도 자동으로 실행되고 스팟수식을 종료하면 자동으로 엑셀파일도 종료됩니다. 실행중에 임의로 엑셀파일을 종료하시면 해당 엑셀프로세스는 계속 살아있게 되므로 다음에 여실때 해당 엑셀파일이 실행이 되지 않습니다. 프로그램을 재접속해주셔야 합니다. 스팟에서 엑셀파일을 사용하실 때는 해당 스팟수식을 실행/종료로 엑셀파일도 같이 실행/종료되게 하셔야 합니다. 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 엑셀에 데이터를 매일 누적해서 쌓는 방법 > 엑셀에 데이터를 누적해서 쌓으려 하는데 아래 rayen님 께서 질문하신 내용을 참고하니까 킨 순간부터 끌때까지의 당일 데이터는 누적으로 받아지나, 매일 9시 이전에 키고, 장 마감할때 꺼서 데이터를 매일 누적하고 싶은데 어떤식으로 해야할까요. rayan님처럼 하면 매일 엑셀데이터가 초기화 되네요 일단 이를 해결하기위해 Excel1.GetRowCount함수를 사용해서 현제 엑셀파일의 row를 읽은 후 +1을 해줘서 누적을 하려했는데, 잘 안되는거같네요 var Time; var S; //기초자산(현재가) var r; //무위험이자율 var K; //행사가 var T; //잔존만기 var xlRow; //엑셀의 행 function Main_OnStart() { xlRow =Excel1.GetRowCount(1) + 1; //2번째 행부터 시작 Time = getHHMMSSS(); S = MarketData1.current; //연결선물지수 현재가 r = Option1.RiskFreeRate; K = Option1.GetExercisePrice(0, 0); T = Option1.GetRemainDays(0, 0)/252; Main.SetTimer(1, 5000) } function Main_OnTimer(nEventID) { Time = getHHMMSSS(); S = MarketData1.current; //연결선물지수 현재가 r = Option1.RiskFreeRate; K = Option1.GetExercisePrice(0, 0); T = Option1.GetRemainDays(0, 0)/252; Excel1.SetRowData(1, "A"+xlRow, Time); Excel1.SetRowData(1, "B"+xlRow, S); Excel1.SetRowData(1, "C"+xlRow, K); Excel1.SetRowData(1, "D"+xlRow, Option1.GetCurrent(0, 1)); Excel1.SetRowData(1, "E"+xlRow, Option1.GetCurrent(1, -1)); Excel1.SetRowData(1, "F"+xlRow, Option1.GetRemainDays(0,0)); Excel1.SetRowData(1, "G"+xlRow, Option1.RiskFreeRate); xlRow = xlRow + 1; 에러 메세지가 4개가 뜨는데 1. 엑셀을 정상적으로 호출할 수 없습니다 2. excel1:객체를 생성할 수 없습니다. 3. 엑셀파일에 연결되지 않았습니다. 4. 엑셀을 정상적으로 호출할 수 없습니다. 이렇게 뜨네요