커뮤니티

Trix지표와 함수결과값의 차이

프로필 이미지
짱짱해야지
2020-03-26 13:02:17
731
글번호 137236
답변완료
아래코딩 (1)에서 특정분봉(여기선 하루) Trix 값을 현재분봉에 나타내는 코딩으로 이전분의 질문을 바탕으로 공부하고 있는데 이것을 사용자함수(2번)로 전환하여 비교해 보니까 값이 다르게 나옵니다. (1)의 내용을 사용자함수로 만들고 싶은데 어떻게 수정해야 할까요? 항상 감사합니다. (1) Input : ntime(390),Period(20),signal(9); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } PLOT1(TRIXv); PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then Plot3(TRIXv, "GC"); else NoPlot(3); } 2) var50 = D_Trix(360, 20, 9); if var50 == 1 then Plot4(5, "Check"); else NoPlot(4); <사용자함수 > Input : ntime(Numeric),Period(Numeric),signal(Numeric); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } # PLOT1(TRIXv); # PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then var30 = 1; else var30 = 0; } 내_Trix = var30;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-26 13:50:08

안녕하세요 예스스탁입니다. 지표를 조건만족시 1, 아니면 0을 출력하게 해서 테스트 해 보았지만 첨부한 그림과 같이 동일시점에 1이 발생합니다. 올려주신 식에서 지표는 ntime이 390이고 2번은 360입니다. 외부변수 동일하게 맞추셔야 합니다 즐거운 하루되세요 > 짱짱해야지 님이 쓴 글입니다. > 제목 : Trix지표와 함수결과값의 차이 > 아래코딩 (1)에서 특정분봉(여기선 하루) Trix 값을 현재분봉에 나타내는 코딩으로 이전분의 질문을 바탕으로 공부하고 있는데 이것을 사용자함수(2번)로 전환하여 비교해 보니까 값이 다르게 나옵니다. (1)의 내용을 사용자함수로 만들고 싶은데 어떻게 수정해야 할까요? 항상 감사합니다. (1) Input : ntime(390),Period(20),signal(9); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } PLOT1(TRIXv); PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then Plot3(TRIXv, "GC"); else NoPlot(3); } 2) var50 = D_Trix(360, 20, 9); if var50 == 1 then Plot4(5, "Check"); else NoPlot(4); <사용자함수 > Input : ntime(Numeric),Period(Numeric),signal(Numeric); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } # PLOT1(TRIXv); # PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then var30 = 1; else var30 = 0; } 내_Trix = var30;