커뮤니티
수식의뢰
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 는 붙여써야 됩니다