커뮤니티

수식작성 문의

프로필 이미지
텔스
2019-07-16 16:25:23
196
글번호 130387
답변완료

첨부 이미지

안녕하세요 함수를 아래와 같이 작성하여 지표를 만들었는데 제대로 계산이 안되어 문의드립니다. -------------------------------------------------------------------------------- Input : Price(NumericSeries), Length(NumericSimple); Var : slope(0), b(0), x(0), y(0), xx(0), xy(0), Counter(0); For Counter = 0 To Length - 1 Begin x = x + Counter; y = y + Price[Counter]; xx = xx + Counter * Counter; xy = xy + Counter * Price[Length - 1 - Counter]; End; slope = (Length * xy - x * y) / (Length * xx - x * x); b = (y - slope * x) / Length; LSA = slope * (Length - 1) + b; -------------------------------------------------------------------------------- Input : Length(34); value1 = LSA(c,Length); plot1(value1,"플롯1"); -------------------------------------------------------------------------------- 혹시 잘못 된 것이 있는지 검토부탁드립니다.
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-17 10:19:30

안녕하세요 예스스탁입니다. 1 수식에서 필요한 봉개수(Length) 이전에 계산되면 각 변수에 NAN(Not a Number)이 저장됩니다. 변수에 NAN이 저장되면 이후에 숫자가 추가되어도 숫자값으로 계산이 되지 않습니다. 2 구현하고자 하시는 내용에서 x,y,xx,xy 변수는 매봉 0으로 초기화가 이루어 져야 합니다. var선언은 최초 변수의 타입과 기초값을 지정하는 내용입니다. 매봉 0으로 초기화 되는 내용이 필요하므로 사용자함수에 해당 내용 추가해 드립니다. 3 Input : Price(NumericSeries), Length(NumericSimple); Var : slope(0), b(0), x(0), y(0), xx(0), xy(0), Counter(0); if CurrentBar >= 1 then { X = 0; Y = 0; XX = 0; XY = 0; For Counter = 0 To Length - 1 Begin x = x + Counter; y = y + Price[Counter]; xx = xx + Counter * Counter; xy = xy + Counter * Price[Length - 1 - Counter]; End; slope = (Length * xy - x * y) / (Length * xx - x * x); b = (y - slope * x) / Length; LSA = slope * (Length - 1) + b; } 즐거운 하루되세요 > 텔스 님이 쓴 글입니다. > 제목 : 수식작성 문의 > 안녕하세요 함수를 아래와 같이 작성하여 지표를 만들었는데 제대로 계산이 안되어 문의드립니다. -------------------------------------------------------------------------------- Input : Price(NumericSeries), Length(NumericSimple); Var : slope(0), b(0), x(0), y(0), xx(0), xy(0), Counter(0); For Counter = 0 To Length - 1 Begin x = x + Counter; y = y + Price[Counter]; xx = xx + Counter * Counter; xy = xy + Counter * Price[Length - 1 - Counter]; End; slope = (Length * xy - x * y) / (Length * xx - x * x); b = (y - slope * x) / Length; LSA = slope * (Length - 1) + b; -------------------------------------------------------------------------------- Input : Length(34); value1 = LSA(c,Length); plot1(value1,"플롯1"); -------------------------------------------------------------------------------- 혹시 잘못 된 것이 있는지 검토부탁드립니다.