커뮤니티

배열의 활용

프로필 이미지
기사단장
2022-11-07 23:27:09
1455
글번호 163599
답변완료
담당자님 안녕하세요. 고생이 많으십니다. 제가 만들고자 하는 수식은 1)특정 조건에 맞는 데이터를 찾아 2) 배열에 저장한 후 3) 통계분석을 하는 것 입니다. 아래 예제는 전일특정 상승률(GrowthRate: 10%)를 보였을 때, 당일 최대 하락률(CL_DL)을 배열(DL[100])에 저장한 후 통계분석 하고자 작성하였습니다. 1. 특정 조건의 값을 배열에 저장하는 방식으로 아래 수식이 최적일지, 오류가 있다면 수정 부탁드립니다. 2. 얼마나 많은 데이터가 저장될지 모르는데 배열의 size를 임의로 설정할 수 밖에 없을까요? (For문에서도 1 to 99로 하드코딩할수밖에 없는지) 3. 통계함수의 표본수를 배열의 전체 size (여기서는 100)으로 하기 떄문에 배열에 값이 저장이 몇개 되지 않을떄는 통계가 왜곡되는 문제가 있습니다. 배열의 size를 실제 데이터의 값으로 해서 Plot이 표현될 수 있도록 수식 수정 부탁드립니다. ========================================================= Input: GrowthRate(10); var: CL_DL(0), n(0); Array: DL[100](0); #1. 통계 조건 If ((DayClose[1]-DayClose[2])/DayClose[2])*100 >= GrowthRate Then{ CL_DL=((daylow-DayClose[1])/DayClose[1])*100; DL[n]=CL_DL; For n = 1 to 99{ DL[n] = DL[n-1][1]; } }; Plot1(DL[n],"배열"); plot2(AverageArray(DL,n),"배열평균"); plot3(AvgDeviationArray(DL,n),"배열분산"); plot4(NormalDensityArray(DL,n),"배열정규분포");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-11-08 14:07:33

안녕하세요 예스스탁입니다. 1 DayClose,dayopen,dayhigh,daylow함수는()안에 이전일의 인덱스를 지정합니다.(0)은 생략가능합니다. dayclose[1]은 전일종가가 아니고 dayclose(0)[1]에서 (0)이 생략된 형태로 한봉전종가를 의미합니다. 2 예스랭귀지에서는 배열 사이즈를 가변으로 지정하실 수 없습니다. 고정으로 사용하셔야 합니다. 배열사이즈를 크게 지정해서 사용하시면 됩니다. 3 아래의 n과 같이 조건만족시 마다 1씩 증가시켜 값이 저장되는 갯수를 체크하시면 됩니다. 0번부터 저장되므로 기간을 지정하는 함수에는 n+1로 지정하시면 됩니다. 4 Input: GrowthRate(10); var: CL_DL(0),n(0),ii(0); Array: DL[500](0); #초기화 For ii = 1 to 499 { DL[ii] = 0; } n = 0; For ii = 1 to 499 { If (DayClose(ii)-DayClose(ii+1))/DayClose(ii+1)*100 >= GrowthRate Then { CL_DL = (daylow(ii-1)-DayClose(ii))/DayClose(ii)*100; DL[n] = CL_DL; n = n+1; } } Plot1(DL[0],"배열"); plot2(AverageArray(DL,n+1),"배열평균"); plot3(AvgDeviationArray(DL,n+1),"배열분산"); plot4(NormalDensityArray(DL,n+1),"배열정규분포"); 즐거운 하루되세요 > 기사단장 님이 쓴 글입니다. > 제목 : 배열의 활용 > 담당자님 안녕하세요. 고생이 많으십니다. 제가 만들고자 하는 수식은 1)특정 조건에 맞는 데이터를 찾아 2) 배열에 저장한 후 3) 통계분석을 하는 것 입니다. 아래 예제는 전일특정 상승률(GrowthRate: 10%)를 보였을 때, 당일 최대 하락률(CL_DL)을 배열(DL[100])에 저장한 후 통계분석 하고자 작성하였습니다. 1. 특정 조건의 값을 배열에 저장하는 방식으로 아래 수식이 최적일지, 오류가 있다면 수정 부탁드립니다. 2. 얼마나 많은 데이터가 저장될지 모르는데 배열의 size를 임의로 설정할 수 밖에 없을까요? (For문에서도 1 to 99로 하드코딩할수밖에 없는지) 3. 통계함수의 표본수를 배열의 전체 size (여기서는 100)으로 하기 떄문에 배열에 값이 저장이 몇개 되지 않을떄는 통계가 왜곡되는 문제가 있습니다. 배열의 size를 실제 데이터의 값으로 해서 Plot이 표현될 수 있도록 수식 수정 부탁드립니다. ========================================================= Input: GrowthRate(10); var: CL_DL(0), n(0); Array: DL[100](0); #1. 통계 조건 If ((DayClose[1]-DayClose[2])/DayClose[2])*100 >= GrowthRate Then{ CL_DL=((daylow-DayClose[1])/DayClose[1])*100; DL[n]=CL_DL; For n = 1 to 99{ DL[n] = DL[n-1][1]; } }; Plot1(DL[n],"배열"); plot2(AverageArray(DL,n),"배열평균"); plot3(AvgDeviationArray(DL,n),"배열분산"); plot4(NormalDensityArray(DL,n),"배열정규분포");