커뮤니티

산식검토요

프로필 이미지
티끌
2011-04-26 10:58:07
812
글번호 37965
답변완료

첨부 이미지

작업중에 산식중 무엇이 잘못됐는지 프로그램이 다운 돼버려서 질문드립니다 그림처럼 원하는 구간에 var50을 표시하기 위한 수식입니다 검토부탁드립니다 조건 1. crossup(Padong,0)일때부터 최근의 UPTypeV2==-5 일때까지 Padong값이 -5이상일것 (CountIF(Padong<-4,(UpTypeI4-UpTypeI2))<=1) 2.구간 : UPTypeI4[0]에서 UPTypeV2==-5일때의 index값 기준 var : TX20(0),TX40(0),TX60(0),TX80(0),TX100(0); var : TR20(0),TR40(0),TR60(0),TR80(0),TR100(0); var : J(0); TX40 = ema(TRIX(20),18); TR20 = TRIX(20); TX40 = ema(TRIX(40),32); TR40 = TRIX(40); TX60 = ema(TRIX(60),48); TR60 = TRIX(60); TX80 = ema(TRIX(80),64); TR80 = TRIX(80); TX100 = ema(TRIX(100),80); TR100= TRIX(100); var : Padong(0); Padong=iff(TR20>TX20,1,-1)+iff(TR40>TX40,1,-1)+iff(TR60>TX60,1,-1) +iff(TR80>TX80,1,-1)+iff(TR100>TX100,1,-1); var: Type01(0),Point01(0); Array : UPTypeV2[5](0),UPTypeI2[5](0); Array : DNTypeV2[5](0),DNTypeI2[5](0); if Padong[2]==Padong[1] and Padong[1]<Padong[0] and Padong[1]==-5 Then { // UPTypeV2[0] = Padong[1]; Type01=1;Point01=0; UPTypeI2[0] = index[1]; For J=1 to 4 { UPTypeV2[J] = UPTypeV2[J-1][1]; UPTypeI2[J] = UPTypeI2[J-1][1]; } } # CrossUp Array : UPTypeI4[5](0),UPTypeM4[5](0); If CrossUp(Padong,0) Then { UPTypeI4[0] = index; Type01=0; UPTypeM4[0] = MA(C,05); For J=1 to 4 { UPTypeI4[J] = UPTypeI4[J-1][1]; UPTypeM4[J] = UPTypeM4[J-1][1]; } } ####################### # 구간신호 # ####################### # CountIF(Padong>-9,(UpTypeI4-UpTypeI2))<=1 and UPTypeV2==-10 and UPTypeV2 # padong[1]<0 and padong[0]>0 and var50=0; If CrossUp(Padong,0) and UpTypeI4>UpTypeI2 and CountIF(Padong<-4,(UpTypeI4-UpTypeI2))<=1 Then // var50=2;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-04-26 16:06:43

안녕하세요 예스스탁입니다. UpTypeI4>UpTypeI2 and CountIF(Padong<-4,(UpTypeI4-UpTypeI2))<=1 수식에 에러가 발생하는 이유는 배열변수를 일반변수와 같이 if문에 사용하셔야 합니다. 배열변수는 꼭 그 배열방의 번호를 같이 붙여주셔야 합니다. 아래와 같이 배열방의 번호를 지정해 주시면 됩니다. UpTypeI4[0]>UpTypeI2[0] and CountIF(Padong<-4,(UpTypeI4[0]-UpTypeI2[0]))<=1 그외에 부분은 정확히 이해하지 못했습니다. crossup(Padong,0)일때부터 2를 할당하여 특정 조건이 만족하면 0으로 해제하실 의도시면 if crossup(Padong,0) then var2 = 2; if 해제조건 then var2 = 0; 과 같이 작성하시면 됩니다. 유지조건을 지정하실 필요는 없으시며 해제될 조건식을 넣어주시면 됩니다. 즐거운 하루되세요 > 티끌 님이 쓴 글입니다. > 제목 : 산식검토요 > 작업중에 산식중 무엇이 잘못됐는지 프로그램이 다운 돼버려서 질문드립니다 그림처럼 원하는 구간에 var50을 표시하기 위한 수식입니다 검토부탁드립니다 조건 1. crossup(Padong,0)일때부터 최근의 UPTypeV2==-5 일때까지 Padong값이 -5이상일것 (CountIF(Padong<-4,(UpTypeI4-UpTypeI2))<=1) 2.구간 : UPTypeI4[0]에서 UPTypeV2==-5일때의 index값 기준 var : TX20(0),TX40(0),TX60(0),TX80(0),TX100(0); var : TR20(0),TR40(0),TR60(0),TR80(0),TR100(0); var : J(0); TX40 = ema(TRIX(20),18); TR20 = TRIX(20); TX40 = ema(TRIX(40),32); TR40 = TRIX(40); TX60 = ema(TRIX(60),48); TR60 = TRIX(60); TX80 = ema(TRIX(80),64); TR80 = TRIX(80); TX100 = ema(TRIX(100),80); TR100= TRIX(100); var : Padong(0); Padong=iff(TR20>TX20,1,-1)+iff(TR40>TX40,1,-1)+iff(TR60>TX60,1,-1) +iff(TR80>TX80,1,-1)+iff(TR100>TX100,1,-1); var: Type01(0),Point01(0); Array : UPTypeV2[5](0),UPTypeI2[5](0); Array : DNTypeV2[5](0),DNTypeI2[5](0); if Padong[2]==Padong[1] and Padong[1]<Padong[0] and Padong[1]==-5 Then { // UPTypeV2[0] = Padong[1]; Type01=1;Point01=0; UPTypeI2[0] = index[1]; For J=1 to 4 { UPTypeV2[J] = UPTypeV2[J-1][1]; UPTypeI2[J] = UPTypeI2[J-1][1]; } } # CrossUp Array : UPTypeI4[5](0),UPTypeM4[5](0); If CrossUp(Padong,0) Then { UPTypeI4[0] = index; Type01=0; UPTypeM4[0] = MA(C,05); For J=1 to 4 { UPTypeI4[J] = UPTypeI4[J-1][1]; UPTypeM4[J] = UPTypeM4[J-1][1]; } } ####################### # 구간신호 # ####################### # CountIF(Padong>-9,(UpTypeI4-UpTypeI2))<=1 and UPTypeV2==-10 and UPTypeV2 # padong[1]<0 and padong[0]>0 and var50=0; If CrossUp(Padong,0) and UpTypeI4>UpTypeI2 and CountIF(Padong<-4,(UpTypeI4-UpTypeI2))<=1 Then // var50=2;