커뮤니티

부탁드립니다.

프로필 이미지
yes
2019-07-06 22:50:23
453
글번호 130103
답변완료

첨부 이미지

그림과 같이 부탁 드립니다. Input:기간(100),매물대개수(10),선두께(1); Var:j(0),k(0),구간최고가(0),구간최저가(0),가격단위(0), 총거래량(0),최대거래량(0),최대매물대(0),비중(0),TL1(0); Array:매물대[30,3](0); // 열번호 1:가격이상,2:가격미만,3:수량 //============= 매물대 계산 =======================// 구간최고가 = Highest(H,기간); 구간최저가 = Lowest(L,기간); If !(구간최고가[1] == 구간최고가 and 구간최저가[1] == 구간최저가) Then { 가격단위 = (구간최고가 - 구간최저가)/매물대개수; 매물대[1,1] = 구간최저가; 매물대[1,2] = 매물대[1,1] + 가격단위; 매물대[1,3] = 0; For j = 2 To 매물대개수 { 매물대[j,1] = 매물대[j-1,1] + 가격단위; 매물대[j,2] = 매물대[j-1,2] + 가격단위; 매물대[j,3] = 0; } 총거래량 = 0; For k = 0 To 기간 - 1 { 총거래량 = 총거래량 + V[k]; For j = 1 To 매물대개수 { If 매물대[j,1] <= C[k] and C[k] < 매물대[j,2] Then { 매물대[j,3] = 매물대[j,3] + V[k]; j = 매물대개수; } } } } Else { 총거래량 = 총거래량 + V; For j = 1 To 매물대개수 { If 매물대[j,1] <= C and C < 매물대[j,2] Then { 매물대[j,3] = 매물대[j,3] + V; j = 매물대개수; } } } 최대거래량 = 0; 최대매물대 = 0; For j = 1 To 매물대개수 { If 최대거래량 < 매물대[j,3] Then { 최대거래량 = 매물대[j,3]; 최대매물대 = j; // 값이 큰 행의 번호 } } //============= 매물벽 출력 =======================// If 최대매물대 > 0 Then { TL1 = TL_New(sDate[1],sTime[1],매물대[최대매물대,1],sDate,sTime,매물대[최대매물대,2]); TL_SetSize(TL1,선두께); 비중 = int(최대거래량 / 총거래량 * 200); TL_SetColor(TL1,RGB(200 - 비중, 200 - 비중, 200 - 비중)); // 비중이 클수록 더 진해집니다. }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-08 09:06:41

안녕하세요 예스스탁입니다. 수식으로 별도로 수정해 드릴만한 부분이 없습니다. Input:기간(100),매물대개수(10),선두께(1); 해당폭은 가격입니다. 매물대개수를 크게하시면 좁아지게 됩니다. 즐거운 하루되세요 > yes 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 그림과 같이 부탁 드립니다. Input:기간(100),매물대개수(10),선두께(1); Var:j(0),k(0),구간최고가(0),구간최저가(0),가격단위(0), 총거래량(0),최대거래량(0),최대매물대(0),비중(0),TL1(0); Array:매물대[30,3](0); // 열번호 1:가격이상,2:가격미만,3:수량 //============= 매물대 계산 =======================// 구간최고가 = Highest(H,기간); 구간최저가 = Lowest(L,기간); If !(구간최고가[1] == 구간최고가 and 구간최저가[1] == 구간최저가) Then { 가격단위 = (구간최고가 - 구간최저가)/매물대개수; 매물대[1,1] = 구간최저가; 매물대[1,2] = 매물대[1,1] + 가격단위; 매물대[1,3] = 0; For j = 2 To 매물대개수 { 매물대[j,1] = 매물대[j-1,1] + 가격단위; 매물대[j,2] = 매물대[j-1,2] + 가격단위; 매물대[j,3] = 0; } 총거래량 = 0; For k = 0 To 기간 - 1 { 총거래량 = 총거래량 + V[k]; For j = 1 To 매물대개수 { If 매물대[j,1] <= C[k] and C[k] < 매물대[j,2] Then { 매물대[j,3] = 매물대[j,3] + V[k]; j = 매물대개수; } } } } Else { 총거래량 = 총거래량 + V; For j = 1 To 매물대개수 { If 매물대[j,1] <= C and C < 매물대[j,2] Then { 매물대[j,3] = 매물대[j,3] + V; j = 매물대개수; } } } 최대거래량 = 0; 최대매물대 = 0; For j = 1 To 매물대개수 { If 최대거래량 < 매물대[j,3] Then { 최대거래량 = 매물대[j,3]; 최대매물대 = j; // 값이 큰 행의 번호 } } //============= 매물벽 출력 =======================// If 최대매물대 > 0 Then { TL1 = TL_New(sDate[1],sTime[1],매물대[최대매물대,1],sDate,sTime,매물대[최대매물대,2]); TL_SetSize(TL1,선두께); 비중 = int(최대거래량 / 총거래량 * 200); TL_SetColor(TL1,RGB(200 - 비중, 200 - 비중, 200 - 비중)); // 비중이 클수록 더 진해집니다. }