예스스탁
예스스탁 답변
2024-02-27 17:23:53
안녕하세요
예스스탁입니다.
1
기존 답변식 주석입니다.
input : nday(10);
var : cnt(0);
Array : di[100](0), vi[2,300](0),sort[2,300](0),TL[300](0);
#영업일 변경
if Bdate != Bdate[1] Then
{
#최근 100일간의 일간 첫봉의 인덱스를 저장
#최근 nday로 지정한 일간의 값으로맨 for 루프를 돌리기 위한 배열변수
for cnt = 99 DownTo 1
{
di[cnt] = di[cnt-1];
}
di[0] = Index;
}
#아래는 매봉 최근 300개의 거래량과 봉번호를 2차원 배열변수에 저장하는 내용입니다.
#현재봉의 거래량은 [0,0], 전봉은 [0,1],전전봉은 [0,2]와 같이 저장
#현재봉의 봉번호는 [1,0], 전봉은 [1,1],전전봉은 [1,2]와 같이 저장
#새로운 봉이 생기면
#각 방의 값을 다음방(뒷방)으로 넘기고
For cnt = 299 DownTo 1
{
vi[0,cnt] = vi[0,cnt-1];
vi[1,cnt] = vi[1,cnt-1];
}
#0번방에 새로운 값을 저장
vi[0,0] = v;
vi[1,0] = Index;
#최근 10일치의 데이터가 확보되었으면
if di[nday] > 0 Then
{
#내림차순이나 오름차순으로 정렬을 위해
#vi 배열은 매봉 거래량과 봉번호의 원본이므로 정렬해서 훼손해서는 안되므로 sort배열로 모두 옮김
For cnt = 0 to Index-di[nday]
{
sort[0,cnt] = vi[0,cnt];
sort[1,cnt] = vi[1,cnt];
}
#정렬 sort배열의 최근 10일간의 값만 0행(거래량이 저장된행) 기준으로 내림차순으로 정렬됨
#0행기준으로 정렬되면서 1행도 0행따라 이동됨
Sort2DArray(sort,2,Index-di[nday],1);
#현재봉의 인덱스에서 정렬된 값을 기준으로 0(첫번째)~7(8번째값)번의 인덱스를 차감해서
#순위에 따른 이전봉갯수를 계산하고 이봉수로 이전봉 참조해서 종가를 가져와 8개를 그림
plot1(c[Index-sort[1,0]],"1",Red);
plot2(c[Index-sort[1,1]],"2",Red);
plot3(c[Index-sort[1,2]],"3",Red);
plot4(c[Index-sort[1,3]],"4",Red);
plot7(c[Index-sort[1,4]],"5",Blue);
plot8(c[Index-sort[1,5]],"6",Blue);
plot9(c[Index-sort[1,6]],"7",Blue);
plot10(c[Index-sort[1,7]],"8",Blue);
}
2
Sort2DArray(sort,2,Index-di[nday],-1);
작은순서는 정렬함수에서 기준 내림차순을 오름차순으로 변경만 하면 됩니다.
input : nday(10);
var : cnt(0);
Array : di[100](0), vi[2,300](0),sort[2,300](0),TL[300](0);
#영업일 변경
if Bdate != Bdate[1] Then
{
#최근 100일간의 일간 첫봉의 인덱스를 저장
#최근 nday로 지정한 일간의 값으로맨 for 루프를 돌리기 위한 배열변수
for cnt = 99 DownTo 1
{
di[cnt] = di[cnt-1];
}
di[0] = Index;
}
#아래는 매봉 최근 300개의 거래량과 봉번호를 2차원 배열변수에 저장하는 내용입니다.
#현재봉의 거래량은 [0,0], 전봉은 [0,1],전전봉은 [0,2]와 같이 저장
#현재봉의 봉번호는 [1,0], 전봉은 [1,1],전전봉은 [1,2]와 같이 저장
#새로운 봉이 생기면
#각 방의 값을 다음방(뒷방)으로 넘기고
For cnt = 299 DownTo 1
{
vi[0,cnt] = vi[0,cnt-1];
vi[1,cnt] = vi[1,cnt-1];
}
#0번방에 새로운 값을 저장
vi[0,0] = v;
vi[1,0] = Index;
#최근 10일치의 데이터가 확보되었으면
if di[nday] > 0 Then
{
#내림차순이나 오름차순으로 정렬을 위해
#vi 배열은 매봉 거래량과 봉번호의 원본이므로 정렬해서 훼손해서는 안되므로 sort배열로 모두 옮김
For cnt = 0 to Index-di[nday]
{
sort[0,cnt] = vi[0,cnt];
sort[1,cnt] = vi[1,cnt];
}
#정렬 sort배열의 최근 10일간의 값만 0행(거래량이 저장된행) 기준으로 오름차순으로 정렬됨
#0행기준으로 정렬되면서 1행도 0행따라 이동됨
Sort2DArray(sort,2,Index-di[nday],-1);
#현재봉의 인덱스에서 정렬된 값을 기준으로 0(첫번째)~7(8번째값)번의 인덱스를 차감해서
#순위에 따른 이전봉갯수를 계산하고 이봉수로 이전봉 참조해서 종가를 가져와 8개를 그림
plot1(c[Index-sort[1,0]],"1",Red);
plot2(c[Index-sort[1,1]],"2",Red);
plot3(c[Index-sort[1,2]],"3",Red);
plot4(c[Index-sort[1,3]],"4",Red);
plot7(c[Index-sort[1,4]],"5",Blue);
plot8(c[Index-sort[1,5]],"6",Blue);
plot9(c[Index-sort[1,6]],"7",Blue);
plot10(c[Index-sort[1,7]],"8",Blue);
}
즐거운 하루되세요
> jdavid 님이 쓴 글입니다.
> 제목 : 분봉거래량
> 감사합니다
오전 85979 답변 너무 잘 사용하고 있습니다.
아래는 오전에 올려주신 답변 내용입니다.
거래량이 가장 많은 순위에서부터 8번째 까지의 내용인데요.
이것을
거래량이 가장 적은 순위에서부터 8번째 까지로 바꾸고 싶습니다.
그리고 주석처리 부탁드립니다. 어떤 수식인지 알고싶네요.
다시 한 번 감사드립니다.
input : nday(10);
var : cnt(0);
Array : di[100](0), vi[2,300](0),sort[2,300](0),TL[300](0);
if Bdate != Bdate[1] Then
{
for cnt = 99 DownTo 1
{
di[cnt] = di[cnt-1];
}
di[0] = Index;
}
For cnt = 299 DownTo 1
{
vi[0,cnt] = vi[0,cnt-1];
vi[1,cnt] = vi[1,cnt-1];
TL_Delete(TL[cnt-1]);
}
vi[0,0] = v;
vi[1,0] = Index;
if di[nday] > 0 Then
{
For cnt = 0 to Index-di[nday]
{
sort[0,cnt] = vi[0,cnt];
sort[1,cnt] = vi[1,cnt];
}
Sort2DArray(sort,2,Index-di[nday],1);
plot1(c[Index-sort[1,0]],"1",Red);
plot2(c[Index-sort[1,1]],"2",Red);
plot3(c[Index-sort[1,2]],"3",Red);
plot4(c[Index-sort[1,3]],"4",Red);
plot7(c[Index-sort[1,4]],"5",Blue);
plot8(c[Index-sort[1,5]],"6",Blue);
plot9(c[Index-sort[1,6]],"7",Blue);
plot10(c[Index-sort[1,7]],"8",Blue);
}