아래수식을 당일에 적용하도로 변경가능한가요
input: rangeStart(1), rangeEnd(10), priceStep(1), priceRange(100);
var: priceVolumeSum(0), maxVolume(0), POC(0);
var: i(0), j(0), tempPrice(0), tempVol(0), tempIdx(0);
array: volumeProfile[101](0) ; // 배열 크기를 101로 설정하고 초기값을 0으로 설정
// 볼륨 프로파일을 초기화
for i = 0 to 100 begin
volumeProfile[i] = 0;
end;
// 범위 내 각 봉에 대해 볼륨 프로파일을 계산
for i = rangeStart to rangeEnd
begin
tempPrice = Close[i];
tempVol = Volume[i];
tempIdx = int((tempPrice - Low[rangeEnd]) / priceStep);
if tempIdx >= 0 and tempIdx <= 100 then
Begin
volumeProfile[tempIdx] = volumeProfile[tempIdx] + tempVol;
end;
end;
// 최대 거래량이 발생한 가격(POC)을 찾음
for j = 0 to 100 begin
if volumeProfile[j] > maxVolume then begin
maxVolume = volumeProfile[j];
POC = Low[rangeEnd] + j * priceStep;
end;
end;
// POC를 차트에 라인으로 표시
if POC != 0 then
Plot1(POC,"POC Line", Yellow,Def, 2);
답변 1
예스스탁
예스스탁 답변
2024-09-12 17:11:33
안녕하세요
예스스탁입니다.
당일봉만을 대상으로 하게 변경했습니다.
아래식 참고하시기 바랍니다.
배열크기는 500으로 지정했습니다.
사용하시는 차트분봉이하 주기에서 당일 발생하는 봉갯수가
500봉 이상이면 크기도 늘리셔야 하고
for문의 499를 배열크기만큼 지정해 주셔야 합니다.
var: priceVolumeSum(0), maxVolume(0), POC(0);
var: i(0), j(0), tempPrice(0), tempVol(0), tempIdx(0),b(0);
array: volumeProfile[500](0),CC[500](0); // 배열 크기를 101로 설정하고 초기값을 0으로 설정
if Bdate != Bdate[1] Then
b = 0;
else
b = b+1;
// 볼륨 프로파일을 초기화
for i = 0 to 499
begin
volumeProfile[i] = 0;
CC[i] = 0;
end;
// 범위 내 각 봉에 대해 볼륨 프로파일을 계산
for i = 0 to b
begin
tempPrice = Close[i];
tempVol = Volume[i];
tempIdx = Round((tempPrice - DayLow) / PriceScale,0);
if tempIdx >= 0 and tempIdx <= 499 then
Begin
volumeProfile[tempIdx] = volumeProfile[tempIdx] + tempVol;
CC[tempIdx] = tempPrice;
end;
end;
// 최대 거래량이 발생한 가격(POC)을 찾음
maxVolume = 0;
POC = 0;
for j = 0 to 499
begin
if volumeProfile[j] > maxVolume then
begin
maxVolume = volumeProfile[j];
POC = CC[j];
end;
end;
//POC를 차트에 라인으로 표시
if POC != 0 then
Plot1(POC,"POC Line", Black,Def, 2);
풍성한 한가위 되시길 바랍니다.
> 레전드 님이 쓴 글입니다.
> 제목 : 문의
> 아래수식을 당일에 적용하도로 변경가능한가요
input: rangeStart(1), rangeEnd(10), priceStep(1), priceRange(100);
var: priceVolumeSum(0), maxVolume(0), POC(0);
var: i(0), j(0), tempPrice(0), tempVol(0), tempIdx(0);
array: volumeProfile[101](0) ; // 배열 크기를 101로 설정하고 초기값을 0으로 설정
// 볼륨 프로파일을 초기화
for i = 0 to 100 begin
volumeProfile[i] = 0;
end;
// 범위 내 각 봉에 대해 볼륨 프로파일을 계산
for i = rangeStart to rangeEnd
begin
tempPrice = Close[i];
tempVol = Volume[i];
tempIdx = int((tempPrice - Low[rangeEnd]) / priceStep);
if tempIdx >= 0 and tempIdx <= 100 then
Begin
volumeProfile[tempIdx] = volumeProfile[tempIdx] + tempVol;
end;
end;
// 최대 거래량이 발생한 가격(POC)을 찾음
for j = 0 to 100 begin
if volumeProfile[j] > maxVolume then begin
maxVolume = volumeProfile[j];
POC = Low[rangeEnd] + j * priceStep;
end;
end;
// POC를 차트에 라인으로 표시
if POC != 0 then
Plot1(POC,"POC Line", Yellow,Def, 2);