커뮤니티

죄송합니다만 함수식으로 여쭤봅니다.

프로필 이미지
스테디어드밴서
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(가격,승수,기간); ----------------------------------------------- 예스트레이더의 사용자 함수에 상기 함수를 등록할 수 있도록 함수식을 각각 적어주시면 정말 감사하겠습니다. 바쁘신데 수고를 끼쳐서 매우 죄송합니다. 부탁 드리겠습니다~ 감사합니다~