예스스탁
예스스탁 답변
2025-09-03 13:54:53
안녕하세요
예스스탁입니다.
해당식 저희 랭귀지의 수식이 아닙니다.
문법적으로만 오류가 없게 수정해 드립니다.
INPUT: len(300), // 분석할 봉 수
priceStep(100), // 가격 구간 크기
topN(3); // 상위 HVN/LVN 개수
VAR: i(0), j(0),
priceMin(0), priceMax(0),
level(0), maxVol(0), minVol(999999999),
pocLevel(0), pocPrice(0);
ARRAY: vap[1000](0), // 가격대별 거래량
hvnLevel[1000](0), hvnVol[1000](0),
lvnLevel[1000](0), lvnVol[1000](0);
#{ 1. 최소, 최대 가격 찾기 }
priceMin = Low;
priceMax = High;
FOR i = 1 TO len BEGIN
IF Low[i] < priceMin THEN priceMin = Low[i];
IF High[i] > priceMax THEN priceMax = High[i];
END;
#{ 2. vap 배열 초기화 }
FOR j = 0 TO 999 BEGIN
vap[j] = 0;
END;
#{ 3. 거래량 누적 }
FOR i = 0 TO len-1 BEGIN
level = IntPortion( (Close[i] - priceMin) / priceStep );
IF level >= 0 AND level < 1000 THEN
vap[level] = vap[level] + Volume[i];
END;
#{ 4. Top N HVN 찾기 }
FOR j = 1 TO topN BEGIN
maxVol = 0;
pocLevel = 0;
FOR i = 0 TO 999 BEGIN
IF vap[i] > maxVol THEN BEGIN
maxVol = vap[i];
pocLevel = i;
END;
END;
hvnLevel[j] = pocLevel;
hvnVol[j] = maxVol;
vap[pocLevel] = 0;
END;
#{ 5. Top N LVN 찾기 }
FOR j = 1 TO topN BEGIN
minVol = 999999999;
pocLevel = 0;
FOR i = 0 TO 999 BEGIN
IF vap[i] > 0 AND vap[i] < minVol THEN BEGIN
minVol = vap[i];
pocLevel = i;
END;
END;
lvnLevel[j] = pocLevel;
lvnVol[j] = minVol;
vap[pocLevel] = 999999999;
END;
#{ 6. HVN / LVN 출력 ? Plot 이름 고정 }
IF topN >= 1 THEN BEGIN
pocPrice = priceMin + hvnLevel[1] * priceStep;
PLOT1(pocPrice, "HVN1", RED);
pocPrice = priceMin + lvnLevel[1] * priceStep;
PLOT2(pocPrice, "LVN1", BLUE);
END;
IF topN >= 2 THEN BEGIN
pocPrice = priceMin + hvnLevel[2] * priceStep;
PLOT3(pocPrice, "HVN2", RED);
pocPrice = priceMin + lvnLevel[2] * priceStep;
PLOT4(pocPrice, "LVN2", BLUE);
END;
IF topN >= 3 THEN BEGIN
pocPrice = priceMin + hvnLevel[3] * priceStep;
PLOT5(pocPrice, "HVN3", RED);
pocPrice = priceMin + lvnLevel[3] * priceStep;
PLOT6(pocPrice, "LVN3", BLUE);
END;
즐거운 하루되세요
> 성공예견 님이 쓴 글입니다.
> 제목 : 지표문의
> 1.아래지표 수정 좀해주세요
검증이안됨
INPUT: len(300), // 분석할 봉 수
priceStep(100), // 가격 구간 크기
topN(3); // 상위 HVN/LVN 개수
VAR: i(0), j(0),
priceMin(0), priceMax(0),
level(0), maxVol(0), minVol(999999999),
pocLevel(0), pocPrice(0);
ARRAY: vap , // 가격대별 거래량
hvnLevel , hvnVol ,
lvnLevel , lvnVol ;
{ 1. 최소, 최대 가격 찾기 }
priceMin = Low;
priceMax = High;
FOR i = 1 TO len BEGIN
IF Low[i] < priceMin THEN priceMin = Low[i];
IF High[i] > priceMax THEN priceMax = High[i];
END;
{ 2. vap 배열 초기화 }
FOR j = 0 TO 999 BEGIN
vap[j] = 0;
END;
{ 3. 거래량 누적 }
FOR i = 0 TO len-1 BEGIN
level = INTPART( (Close[i] - priceMin) / priceStep );
IF level >= 0 AND level < 1000 THEN
vap[level] = vap[level] + Volume[i];
END;
{ 4. Top N HVN 찾기 }
FOR j = 1 TO topN BEGIN
maxVol = 0;
pocLevel = 0;
FOR i = 0 TO 999 BEGIN
IF vap[i] > maxVol THEN BEGIN
maxVol = vap[i];
pocLevel = i;
END;
END;
hvnLevel[j] = pocLevel;
hvnVol[j] = maxVol;
vap[pocLevel] = 0;
END;
{ 5. Top N LVN 찾기 }
FOR j = 1 TO topN BEGIN
minVol = 999999999;
pocLevel = 0;
FOR i = 0 TO 999 BEGIN
IF vap[i] > 0 AND vap[i] < minVol THEN BEGIN
minVol = vap[i];
pocLevel = i;
END;
END;
lvnLevel[j] = pocLevel;
lvnVol[j] = minVol;
vap[pocLevel] = 999999999;
END;
{ 6. HVN / LVN 출력 ? Plot 이름 고정 }
IF topN >= 1 THEN BEGIN
pocPrice = priceMin + hvnLevel[1] * priceStep;
PLOT(pocPrice, "HVN1", RED);
pocPrice = priceMin + lvnLevel[1] * priceStep;
PLOT(pocPrice, "LVN1", BLUE);
END;
IF topN >= 2 THEN BEGIN
pocPrice = priceMin + hvnLevel[2] * priceStep;
PLOT(pocPrice, "HVN2", RED);
pocPrice = priceMin + lvnLevel[2] * priceStep;
PLOT(pocPrice, "LVN2", BLUE);
END;
IF topN >= 3 THEN BEGIN
pocPrice = priceMin + hvnLevel[3] * priceStep;
PLOT(pocPrice, "HVN3", RED);
pocPrice = priceMin + lvnLevel[3] * priceStep;
PLOT(pocPrice, "LVN3", BLUE);
END;
그럼 수고하세요