커뮤니티

아래의 두개의 결과가 다른 이유

프로필 이미지
로움
2012-05-17 00:36:15
367
글번호 51070
답변완료
1)input : P1(5),P2(20); var : sumV1(0), sumV2(0), sumV3(0), maV1(0), maV2(0), maV3(0), count(0), count1(0); sumV1 = 0.0; sumV2 = 0.0; for count = 1 to P1{ sumV1 = sumV1 + DayClose(count); } for count1 = 1 to P2{ sumV2 = sumV2 + DayClose(count); } maV1 = sumV1 / P1; maV2 = sumV2 / P2; MessageLog(" sumv2 = %.f", sumv2); plot1(maV1); plot2(maV2); 2)input : P1(5),P2(20); var : sumV1(0),maV1(0),count(0),sumV2(0), maV2(0),sumV3(0), maV3(0); sumV1 = 0.0; sumV2 = 0.0; for count = 1 to P2{ if count <= P1 Then sumV1 = sumV1 + DayClose(count); if count <= P2 Then sumV2 = sumV2 + DayClose(count); } maV1 = sumV1 / P1; maV2 = sumV2 / P2; MessageLog(" sumv2 = %.f", sumv2); plot1(mav1); plot2(mav2); 1)번의 2012-5-16 sumv2 = 5238 2012-5-16 sumv2 = 5251 2012-5-16 sumv2 = 5264 ..... 2)번의 2012-5-16 sumv2 = 5238 2012-5-16 sumv2 = 5291 2012-5-16 sumv2 = 5300 ..... 로 서로 결과가 다릅니다. 왜일까요? 일반적인 프로그램 상으로는 결과가 같아야 합니다. 그리고 원하는 결과는 2번의 것입니다. 1)번은 day 데이타가 아니라 분 데이타를 불러오는 것 같이 20일선이 더 급격하게 움직입니다. 왜 이런 결과가 나오나요? for 문을 분리하여 다르게 한 것뿐이 없는데, 아무래도 dayclose함수가 동작을 다르게 하는 것 같습니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-05-17 10:02:59

안녕하세요 예스스탁입니다. for count = 1 to P1{ sumV1 = sumV1 + DayClose(count); } for count1 = 1 to P2{ sumV2 = sumV2 + DayClose(count); } 1번식에서 for문에 각각 count,count1이라는 변수를 사용하셨는데 실행문에는 count변수만 사용되었습니다. 아래와 같이 수정하시면 됩니다. for count = 1 to P1{ sumV1 = sumV1 + DayClose(count); } for count1 = 1 to P2{ sumV2 = sumV2 + DayClose(count1); } 즐거운 하루되세요 > 로움 님이 쓴 글입니다. > 제목 : 아래의 두개의 결과가 다른 이유 > 1)input : P1(5),P2(20); var : sumV1(0), sumV2(0), sumV3(0), maV1(0), maV2(0), maV3(0), count(0), count1(0); sumV1 = 0.0; sumV2 = 0.0; for count = 1 to P1{ sumV1 = sumV1 + DayClose(count); } for count1 = 1 to P2{ sumV2 = sumV2 + DayClose(count); } maV1 = sumV1 / P1; maV2 = sumV2 / P2; MessageLog(" sumv2 = %.f", sumv2); plot1(maV1); plot2(maV2); 2)input : P1(5),P2(20); var : sumV1(0),maV1(0),count(0),sumV2(0), maV2(0),sumV3(0), maV3(0); sumV1 = 0.0; sumV2 = 0.0; for count = 1 to P2{ if count <= P1 Then sumV1 = sumV1 + DayClose(count); if count <= P2 Then sumV2 = sumV2 + DayClose(count); } maV1 = sumV1 / P1; maV2 = sumV2 / P2; MessageLog(" sumv2 = %.f", sumv2); plot1(mav1); plot2(mav2); 1)번의 2012-5-16 sumv2 = 5238 2012-5-16 sumv2 = 5251 2012-5-16 sumv2 = 5264 ..... 2)번의 2012-5-16 sumv2 = 5238 2012-5-16 sumv2 = 5291 2012-5-16 sumv2 = 5300 ..... 로 서로 결과가 다릅니다. 왜일까요? 일반적인 프로그램 상으로는 결과가 같아야 합니다. 그리고 원하는 결과는 2번의 것입니다. 1)번은 day 데이타가 아니라 분 데이타를 불러오는 것 같이 20일선이 더 급격하게 움직입니다. 왜 이런 결과가 나오나요? for 문을 분리하여 다르게 한 것뿐이 없는데, 아무래도 dayclose함수가 동작을 다르게 하는 것 같습니다.