커뮤니티
함수식 오류가 있는듯 싶습니다
2019-01-21 19:40:59
300
글번호 125459
선생님, 말씀해주신 함수식으로 그래프를 그려보았습니다.
그랬더니 확실히 오류가 있는듯 싶습니다.
어디에서 오류가 발생했는지는 잘 모르겠습니다만, 키움이나 이베스트증권의 표준오차밴드는 수치는 다를지언정 모양은 수축, 팽창이 있고 비슷합니다.
[ 차트 캡쳐한 것들을 파일로 첨부합니다 ]
그런데 말씀해주신 수식으로 만든 예스트레이더의 표준오차밴드는 전혀 수축, 팽창이 없고 계속 밋밋한 모습입니다.
제가 만든 함수식과 지표는 선생님께서 말씀해주신 함수식을 그대로 복사해와서 저장을 하였습니다. 함수의 명칭만 바꿨습니다.
그 함수식과, 혹시나 해서 저장되어 있는 LRL함수식도 같이 아래에 복사해서 붙여넣기 하였습니다. 죄송하오나 어디서 잘못된 것인지 봐주시면 매우 감사하겠습니다.
건승하세요~
-----------------------
LRL함수식
Input : Value(NumericSeries), Period(NumericSimple);
Var : value1(0), value2(0), AccumValue(0);
AccumValue = accum(1);
value1 = ma(AccumValue, Period);
value2 = ma(Value, Period);
LRL = (ma(Value * AccumValue, Period) - value1 * value2) /
(ma(AccumValue^2, Period) - (ma(AccumValue, Period)^2)) * (AccumValue - value1) + value2;
---------------------------------------------
SEBM 표준오차밴드 중심선의 함수식
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);
SEBM = LINREGS;
END;
-------------------------------------------------
SEBH 표준오차밴드 상한선의 함수식
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);
SEBH = LINREGS + SERR;
END;
----------------------------------------
지표식 - 종가 C, 승수 2, 기간 10
var:sh(0),sm(0),sl(0),ash(0),asm(0),asl(0);
sh=SEBH(c,2,10);
sl=SEBL(c,2,10);
sm=SEBM(c,2,10);
Plot1(sm, "이평");
Plot2(sh, "상단밴드");
Plot3(sl, "하단밴드");
-----------------------------------
캡쳐한 차트들을 첨부파일로 첨부합니다.
- 1. 표준오차밴드_차트_비교.zip (0.10 MB)
답변 1
예스스탁 예스스탁 답변
2019-01-22 12:48:40
안녕하세요
예스스탁입니다.
문의하신 내용은 타사의 랭귀지로 작성한 수식을 올려주셔야 할것 같습니다.
완전히 풀어서 작성한 수식으로 올려주시면
저희 랭귀지로 변경해 드리겠습니다.
즐거운 하루되세요
> 스테디어드밴서 님이 쓴 글입니다.
> 제목 : 함수식 오류가 있는듯 싶습니다
> 선생님, 말씀해주신 함수식으로 그래프를 그려보았습니다.
그랬더니 확실히 오류가 있는듯 싶습니다.
어디에서 오류가 발생했는지는 잘 모르겠습니다만, 키움이나 이베스트증권의 표준오차밴드는 수치는 다를지언정 모양은 수축, 팽창이 있고 비슷합니다.
[ 차트 캡쳐한 것들을 파일로 첨부합니다 ]
그런데 말씀해주신 수식으로 만든 예스트레이더의 표준오차밴드는 전혀 수축, 팽창이 없고 계속 밋밋한 모습입니다.
제가 만든 함수식과 지표는 선생님께서 말씀해주신 함수식을 그대로 복사해와서 저장을 하였습니다. 함수의 명칭만 바꿨습니다.
그 함수식과, 혹시나 해서 저장되어 있는 LRL함수식도 같이 아래에 복사해서 붙여넣기 하였습니다. 죄송하오나 어디서 잘못된 것인지 봐주시면 매우 감사하겠습니다.
건승하세요~
-----------------------
LRL함수식
Input : Value(NumericSeries), Period(NumericSimple);
Var : value1(0), value2(0), AccumValue(0);
AccumValue = accum(1);
value1 = ma(AccumValue, Period);
value2 = ma(Value, Period);
LRL = (ma(Value * AccumValue, Period) - value1 * value2) /
(ma(AccumValue^2, Period) - (ma(AccumValue, Period)^2)) * (AccumValue - value1) + value2;
---------------------------------------------
SEBM 표준오차밴드 중심선의 함수식
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);
SEBM = LINREGS;
END;
-------------------------------------------------
SEBH 표준오차밴드 상한선의 함수식
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);
SEBH = LINREGS + SERR;
END;
----------------------------------------
지표식 - 종가 C, 승수 2, 기간 10
var:sh(0),sm(0),sl(0),ash(0),asm(0),asl(0);
sh=SEBH(c,2,10);
sl=SEBL(c,2,10);
sm=SEBM(c,2,10);
Plot1(sm, "이평");
Plot2(sh, "상단밴드");
Plot3(sl, "하단밴드");
-----------------------------------
캡쳐한 차트들을 첨부파일로 첨부합니다.
다음글
이전글