예스스탁
예스스탁 답변
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]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다.
동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이
이해가 잘 되지 않는 부분입니다.
공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!!
항상 답변 감사드립니다.