커뮤니티

답변주신 내용중 공부상 질문

프로필 이미지
oni
2025-05-19 23:22:56
180
글번호 190974
답변완료
안녕하세요 아래에 같이 지난 요청에 수식을 작성해주셨는데요. input : N(1); var : x(0),y(0); Array : VV[2,20](0),box[20](0); For x = 19 DownTo 1 { VV[0,x] = VV[0,x-1]; VV[1,x] = VV[1,x-1]; } VV[0,0] = v; VV[1,0] = Index; var1 = Sort2DArray(VV,2,20,1); For x = 0 to N-1 { Box_Delete(box[x]); var1 = H[index-vv[1,x]]; var2 = L[index-vv[1,x]]; box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2); Box_SetColor(box[x],Red); Box_SetFill(box[x],true); } 위 코드에서 var1 = Sort2DArray(VV,2,20,1); 부분과 for문 내부에서 var1 = H[index-vv[1,x]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다. 동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이 이해가 잘 되지 않는 부분입니다. 공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!! 항상 답변 감사드립니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-20 11:13:13

안녕하세요 예스스탁입니다. input : N(1); var : x(0),y(0); Array : VV[2,20](0),box[20](0); #VV배열 각 열의 0번행에는 거래량, 1번행에는 봉번호 저장 #x열의 0번행에는 x-1열의 0번행값을 저장 #x열의 1번행에는 x-1열의 1번행값을 저장 #즉 직전열의 값을 가져와 동일 행에 저장 #x가 19이면 19번열 0행에 18번열 0행값저장, 19번열 1행에 18번열 1행값저장 #x가 18이면 18번열 0행에 17번열 0행값저장, 18번열 1행에 17번열 1행값저장 #x가 17이면 17번열 0행에 16번열 0행값저장, 17번열 1행에 16번열 1행값저장 #..... #x가 1이면 1번열 0행에 0번열 0행값저장, 1번열 1행에 0번열 1행값저장 For x = 19 DownTo 1 { VV[0,x] = VV[0,x-1]; VV[1,x] = VV[1,x-1]; } #값을 먼저 다음열로 이동 후에 현재봉 값을 0번열에 저장 #0행0열에 거래량 저장 #1행0열에 봉번호 저장 VV[0,0] = v; VV[1,0] = Index; #2차원 배열을 내림차순으로 정렬 #2차원 배열에서 각열의 0번행의 값으로 정렬이 되고 1번행은 정렬된 값을 따라갑니다. var1 = Sort2DArray(VV,2,20,1); #내림차순으로 정렬했으므로 0번열부터 N번째가지 거래량순으로 출력 For x = 0 to N-1 { #기준박스 삭제 Box_Delete(box[x]); #index-vv[1,x]는 현재봉 봉번호에서 x번째 거래량이 높은 봉의 봉번호를 빼서 #현재로부터 몇봉전인지 계산하는 식입니다. #즉 x번째 거래량이 높은 봉의 고가,저가,날짜,시간을 이전봉 참조로 가져오기 위함입니다. var1 = H[index-vv[1,x]];#index-vv[1,x]봉전의 고가를 var1에 저장 var2 = L[index-vv[1,x]];#index-vv[1,x]봉전의 저가를 var1에 저장 #박스출력 #박스의 시작시점은 index-vv[1,x]봉전의 날짜/시간으로 지정하고 시작가격은 index-vv[1,x]봉전의 고가로 지정 #박스의 종료시점은 차트 마지막봉의 날짜/시간,가격은 index-vv[1,x]봉전의 저가로 지정 box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2); #박스색 Box_SetColor(box[x],Red); #박스채우기 Box_SetFill(box[x],true); } 즐거운 하루되세요 > oni 님이 쓴 글입니다. > 제목 : 답변주신 내용중 공부상 질문 > 안녕하세요 아래에 같이 지난 요청에 수식을 작성해주셨는데요. input : N(1); var : x(0),y(0); Array : VV[2,20](0),box[20](0); For x = 19 DownTo 1 { VV[0,x] = VV[0,x-1]; VV[1,x] = VV[1,x-1]; } VV[0,0] = v; VV[1,0] = Index; var1 = Sort2DArray(VV,2,20,1); For x = 0 to N-1 { Box_Delete(box[x]); var1 = H[index-vv[1,x]]; var2 = L[index-vv[1,x]]; box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2); Box_SetColor(box[x],Red); Box_SetFill(box[x],true); } 위 코드에서 var1 = Sort2DArray(VV,2,20,1); 부분과 for문 내부에서 var1 = H[index-vv[1,x]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다. 동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이 이해가 잘 되지 않는 부분입니다. 공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!! 항상 답변 감사드립니다.