커뮤니티

문의

프로필 이미지
레전드
2024-09-12 04:54:59
510
글번호 183395
답변완료
아래수식을 당일에 적용하도로 변경가능한가요 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);