커뮤니티
죄송합니다만 함수식으로 여쭤봅니다.
2019-01-16 18:40:07
200
글번호 125336
죄송합니다. 이베스트증권은 표준오차밴드를 함수식으로 등록해 놓고 사용하는 터라 수식이 차이가 있는듯 싶습니다.
다음과 같은 형태로 표준오차밴드를 구한다고 합니다.
-----------------------------------
표준오차밴드 함수식
상한선 : StdErrBand_Hi(가격,승수,기간);
중심선 : StdErrBand_Mid(가격,승수,기간);
하한선 : StdErrBand_Lo(가격,승수,기간);
-----------------------------------------------
예스트레이더의 사용자 함수에 상기 함수를 등록할 수 있도록
함수식을 각각 적어주시면 정말 감사하겠습니다.
바쁘신데 수고를 끼쳐서 매우 죄송합니다. 부탁 드리겠습니다~
감사합니다~
답변 1
예스스탁 예스스탁 답변
2019-01-17 10:25:09
안녕하세요
예스스탁입니다.
기존수식은 승수를 계산할떄의 기간값이 또 별로로 지정되어 있었습니다.
지정하신 외부변수가 가격, 승수, 기간이므로
LRL의 기간을 공통으로 사용하게 작성해 드립니다.
1
함수명 StdErrBand_Hi
INPUTS: Price(Numeric),dv(Numeric),LENGTH(Numeric);
VARS: LINREGY(0), X(0), STDERR(0), LINREGS(0), SERR(0),calcB(0),calcA(0);
LINREGY = LRL(Price, LENGTH);
X = INDEX;
Value11 = AccumN(X * Price, Length) - (Length * Average(X, Length) *Average(Close, Length));
Value12 = AccumN(Square(X), Length) - (Length * Square(Average(X, Length)));
calcB = Value11/Value12;
calcA = ma(Price, Length) - (calcB * ma(X, Length));
IF INDEX > LENGTH THEN
BEGIN
VALUE1 = (ACCUMN(Price^2, LENGTH)) - ((CALCA * ACCUMN(Price, LENGTH))) -
((CALCB * ACCUMN(X * Price, LENGTH)));
VALUE2 = LENGTH - 2;
VALUE3 = (VALUE1 / VALUE2);
IF VALUE3 > 0 THEN
STDERR = SQRT(VALUE1 / VALUE2);
ELSE
STDERR = STDERR[1];
LINREGS = MA(LINREGY, LENGTH);
SERR = dv * MA(STDERR, LENGTH);
StdErrBand_Hi = LINREGS + SERR;
END;
2
함수명 StdErrBand_Mid
INPUTS: Price(Numeric),dv(Numeric),LENGTH(Numeric);
VARS: LINREGY(0), X(0), STDERR(0), LINREGS(0), SERR(0),calcB(0),calcA(0);
LINREGY = LRL(Price, LENGTH);
X = INDEX;
Value11 = AccumN(X * Price, Length) - (Length * Average(X, Length) *Average(Close, Length));
Value12 = AccumN(Square(X), Length) - (Length * Square(Average(X, Length)));
calcB = Value11/Value12;
calcA = ma(Price, Length) - (calcB * ma(X, Length));
IF INDEX > LENGTH THEN
BEGIN
VALUE1 = (ACCUMN(Price^2, LENGTH)) - ((CALCA * ACCUMN(Price, LENGTH))) -
((CALCB * ACCUMN(X * Price, LENGTH)));
VALUE2 = LENGTH - 2;
VALUE3 = (VALUE1 / VALUE2);
IF VALUE3 > 0 THEN
STDERR = SQRT(VALUE1 / VALUE2);
ELSE
STDERR = STDERR[1];
LINREGS = MA(LINREGY, LENGTH);
SERR = dv * MA(STDERR, LENGTH);
StdErrBand_Mid = LINREGS;
END;
3
함수명 StdErrBand_Lo
INPUTS: Price(Numeric),dv(Numeric),LENGTH(Numeric);
VARS: LINREGY(0), X(0), STDERR(0), LINREGS(0), SERR(0),calcB(0),calcA(0);
LINREGY = LRL(Price, LENGTH);
X = INDEX;
Value11 = AccumN(X * Price, Length) - (Length * Average(X, Length) *Average(Close, Length));
Value12 = AccumN(Square(X), Length) - (Length * Square(Average(X, Length)));
calcB = Value11/Value12;
calcA = ma(Price, Length) - (calcB * ma(X, Length));
IF INDEX > LENGTH THEN
BEGIN
VALUE1 = (ACCUMN(Price^2, LENGTH)) - ((CALCA * ACCUMN(Price, LENGTH))) -
((CALCB * ACCUMN(X * Price, LENGTH)));
VALUE2 = LENGTH - 2;
VALUE3 = (VALUE1 / VALUE2);
IF VALUE3 > 0 THEN
STDERR = SQRT(VALUE1 / VALUE2);
ELSE
STDERR = STDERR[1];
LINREGS = MA(LINREGY, LENGTH);
SERR = dv * MA(STDERR, LENGTH);
StdErrBand_Lo = LINREGS - SERR;
END;
즐거운 하루되세요
> 스테디어드밴서 님이 쓴 글입니다.
> 제목 : 죄송합니다만 함수식으로 여쭤봅니다.
> 죄송합니다. 이베스트증권은 표준오차밴드를 함수식으로 등록해 놓고 사용하는 터라 수식이 차이가 있는듯 싶습니다.
다음과 같은 형태로 표준오차밴드를 구한다고 합니다.
-----------------------------------
표준오차밴드 함수식
상한선 : StdErrBand_Hi(가격,승수,기간);
중심선 : StdErrBand_Mid(가격,승수,기간);
하한선 : StdErrBand_Lo(가격,승수,기간);
-----------------------------------------------
예스트레이더의 사용자 함수에 상기 함수를 등록할 수 있도록
함수식을 각각 적어주시면 정말 감사하겠습니다.
바쁘신데 수고를 끼쳐서 매우 죄송합니다. 부탁 드리겠습니다~
감사합니다~
다음글
이전글