커뮤니티

수식의뢰

프로필 이미지
knoll
2017-02-21 11:43:14
122
글번호 107063
답변완료
안녕하세요 시그널메이커의 LinearReg라는 사용자함수의 수식입니다 예스랭귀지로 변환할 수 있을는지요 Params : Price( NumSeries ), Period( NumSimple ), Gradient( NumRef ), Yintercept( NumRef ), Angle( NumRef ); Vars : ii( 0 ), X( 0 ), Xsum( 0 ), Ysum( 0 ), XYSum( 0 ), Xsquare_sum( 0 ), v1(0); Xsum = 0; Ysum = 0; XYsum = 0; Xsquare_sum = 0; For ii = 0 to Period - 1 step 1 Begin X = Period - 1 - ii; Xsum = Xsum + X; Ysum = Ysum + Price[ii]; XYsum = XYSum + X * Price[ii]; Xsquare_sum = Xsquare_sum + Square( X ); End; V1 = Period - 1 +e xecOffset; If Period > 1 && (Period * Xsquare_sum - Square(Xsum)) > 0 Then Begin Gradient = (Period * XYsum - Xsum * Ysum)/(Period * Xsquare_sum - Square( Xsum )); Yintercept = Ysum/Period - Gradient * Xsum/Period; Angle = Arctangent(Gradient); LinearReg = Yintercept + Gradient * V1; End; 쓰기금지 단어가 있어서 주석을 달자면 밑에서 9번째 수식 V1 = Period - 1 +e xecOffset; 중에 e 와 x 는 붙여써야 됩니다
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-02-21 15:22:05

안녕하세요 예스스탁입니다. 해당식에서 문제가 되는 부분이 e_xecOffset 입니다. 해당 함수가 시그널메이커의 도움말에는 "함수가 실행되는 Bar 의 Offset 위치를 리턴하는 함수(미래사용예약)" 정확히 어떤 동작을 하는 내용인지 모르겠습니다. 이전 문의와 연관되어서 봉번호값이 적용되어야 할것 같아서 currentbar로 대체했습니다. currentbar는 함수 계산에 필요한 최소한의 봉수이후에 봉수입니다. 아래는 사용자함수식입니다. input : Price( NumericSeries ),Period( NumericSimple ),Gradient( NumericRef ),Yintercept( NumericRef ),Angle( NumericRef ); Vars : ii( 0 ), X( 0 ),Xsum( 0 ),Ysum( 0 ),XYSum( 0 ),Xsquare_sum( 0 ),v1(0); Xsum = 0; Ysum = 0; XYsum = 0; Xsquare_sum = 0; For ii = 0 to Period - 1 step 1 Begin X = Period - 1 - ii; Xsum = Xsum + X; Ysum = Ysum + Price[ii]; XYsum = XYSum + X * Price[ii]; Xsquare_sum = Xsquare_sum + Square( X ); End; V1 = Period - 1 + CurrentBar; If Period > 1 && (Period * Xsquare_sum - Square(Xsum)) > 0 Then Begin Gradient = (Period * XYsum - Xsum * Ysum)/(Period * Xsquare_sum - Square( Xsum )); Yintercept = Ysum/Period - Gradient * Xsum/Period; Angle = Arctangent(Gradient); LinearReg = Yintercept + Gradient * V1; End; 위 내용으로 사용자함수 작성하고 아래 내용 지표식으로 작성해 보시기 바랍니다. value1 = LinearReg(c,20,var1,var2,var3); plot1(var2); 즐거운 하루되세요 > knoll 님이 쓴 글입니다. > 제목 : 수식의뢰 > 안녕하세요 시그널메이커의 LinearReg라는 사용자함수의 수식입니다 예스랭귀지로 변환할 수 있을는지요 Params : Price( NumSeries ), Period( NumSimple ), Gradient( NumRef ), Yintercept( NumRef ), Angle( NumRef ); Vars : ii( 0 ), X( 0 ), Xsum( 0 ), Ysum( 0 ), XYSum( 0 ), Xsquare_sum( 0 ), v1(0); Xsum = 0; Ysum = 0; XYsum = 0; Xsquare_sum = 0; For ii = 0 to Period - 1 step 1 Begin X = Period - 1 - ii; Xsum = Xsum + X; Ysum = Ysum + Price[ii]; XYsum = XYSum + X * Price[ii]; Xsquare_sum = Xsquare_sum + Square( X ); End; V1 = Period - 1 +e xecOffset; If Period > 1 && (Period * Xsquare_sum - Square(Xsum)) > 0 Then Begin Gradient = (Period * XYsum - Xsum * Ysum)/(Period * Xsquare_sum - Square( Xsum )); Yintercept = Ysum/Period - Gradient * Xsum/Period; Angle = Arctangent(Gradient); LinearReg = Yintercept + Gradient * V1; End; 쓰기금지 단어가 있어서 주석을 달자면 밑에서 9번째 수식 V1 = Period - 1 +e xecOffset; 중에 e 와 x 는 붙여써야 됩니다