커뮤니티
함수질문드립니다.
2018-06-29 01:22:35
227
글번호 120158
1. 함수이름 pivotlowvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN begin
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR >= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR > PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTLOWVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTLOWVSBAR = -1;
////////
2. pivothighvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN BEGIN
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR <= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR < PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTHIGHVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTHIGHVSBAR = -1;
3. volatility
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then {
If CurrentBar == 1 Then <----- currentbar = 1 이다를 표현하고 싶은데 안되네요...
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
}
1 2 3의 경우 수식을 모두 숫자형으로 해야하는지요? 감사합니다.
답변 1
예스스탁 예스스탁 답변
2018-06-29 09:39:27
안녕하세요
예스스탁입니다.
반환값형은 모두 숫자형입니다.
예스랭귀지에서 같다는 == 입니다.
3번과 같은 경우에는 그대로 사용하시면 됩니다.
1. pivotlowvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN
begin
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1
BEGIN
IF SHBAR >= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN
BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN
BEGIN
IF SHBAR > PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN
BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTLOWVSBAR = CURRENTBAR - PVTBAR;
ELSE
PIVOTLOWVSBAR = -1;
2. pivothighvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN
BEGIN
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1
BEGIN
IF SHBAR <= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN
BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN
BEGIN
IF SHBAR < PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN
BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTHIGHVSBAR = CURRENTBAR - PVTBAR;
ELSE
PIVOTHIGHVSBAR = -1;
3.volatility
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then
{
If CurrentBar == 1 Then
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
}
즐거운 하루되세요
> stockric 님이 쓴 글입니다.
> 제목 : 함수질문드립니다.
> 1. 함수이름 pivotlowvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN begin
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR >= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR > PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTLOWVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTLOWVSBAR = -1;
////////
2. pivothighvsbar
INPUTS: PRICE(NUMERICSERIES), LSTREN(NUMERICSIMPLE), RSTREN(NUMERICSIMPLE), LENGTH(NUMERIC);
VARS: SHBAR(0), MAINLOOP(0), PREPVT(0), PVTBAR(0);
PREPVT = 0;
FOR MAINLOOP = LENGTH-1 DOWNTO RSTREN BEGIN
CONDITION1 = TRUE;
CONDITION2 = TRUE;
SHBAR = PRICE[MAINLOOP];
FOR VALUE1 = MAINLOOP - RSTREN TO MAINLOOP -1 BEGIN
IF SHBAR <= PRICE[VALUE1] THEN
CONDITION1 = FALSE;
END;
IF CONDITION1 THEN BEGIN
FOR VALUE1 = MAINLOOP + 1 TO MAINLOOP + LSTREN BEGIN
IF SHBAR < PRICE[VALUE1] THEN
CONDITION2 = FALSE;
END;
END;
IF CONDITION1 AND CONDITION2 THEN BEGIN
PREPVT = MAINLOOP;
PVTBAR = CURRENTBAR - MAINLOOP;
END;
END;
IF PREPVT <> 0 THEN
PIVOTHIGHVSBAR = CURRENTBAR - PVTBAR
ELSE
PIVOTHIGHVSBAR = -1;
3. volatility
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then {
If CurrentBar == 1 Then <----- currentbar = 1 이다를 표현하고 싶은데 안되네요...
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
}
1 2 3의 경우 수식을 모두 숫자형으로 해야하는지요? 감사합니다.
다음글
이전글