커뮤니티

문의 (Pre-D)

프로필 이미지
TRF
2013-11-22 07:13:33
199
글번호 69730
답변완료
1. 아래식 검증부탁드립니다. 장시작후 10분이내의 조건과 10분이후의 조건을 다르게 해줘야 하는데, 10분 이후인데도 불구하고 (MTA < M2인 상태이든 아니든 상관없이) Plot1이 계속 찍히고 있습니다. 그런데 조건식 내부에서 Plot을 했을 경우는 제대로 나오는듯 합니다. 첫번째와 같이 조건식 외부에서 가져다써야 하는데 왜 서로다른 결과를 보여주는지 궁금합니다. /////////////////////////////////////////////////////////////////////////////// // 첫번째 (조건식 외부에서 플로팅): 오작동 /////////////////////////////////////////////////////////////////////////////// VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1); VARS: PreD.TFBT3G.AQ1(FALSE, DATA1); VARS: PreD.TFBT3G.BQ1(FALSE, DATA1); if ( DATA1(Date <> Date[1]) ) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.TMLA = FALSE; PreD.TML = FALSE; PreD.TFBT3G.AQ1 = FALSE; PreD.TFBT3G.BQ1 = FALSE; } if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; } else { PreD.TMLA = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; } else { PreD.TML = FALSE; } if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; } else { PreD.TFBT3G.AQ1 = FALSE; } } if ( (PreD.TML == TRUE) ) then { if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; } else { PreD.TFBT3G.BQ1 = FALSE; } } if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0)); if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150)); /////////////////////////////////////////////////////////////////////////////// // 두번째 (조건식 내부에서 플로팅): 정상작동하는 듯 함 /////////////////////////////////////////////////////////////////////////////// VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1); VARS: PreD.TFBT3G.AQ1(FALSE, DATA1); VARS: PreD.TFBT3G.BQ1(FALSE, DATA1); if ( DATA1(Date <> Date[1]) ) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.TMLA = FALSE; PreD.TML = FALSE; PreD.TFBT3G.AQ1 = FALSE; PreD.TFBT3G.BQ1 = FALSE; } if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; } else { PreD.TMLA = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; } else { PreD.TML = FALSE; } if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; Plot1(H, "AQ1", RGB(0,255,0)); } else { PreD.TFBT3G.AQ1 = FALSE; Plot1(H, "AQ1", RGB(0,0,255)); } } if ( (PreD.TML == TRUE) ) then { if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; Plot2(H, "BQ1", RGB(255,100,150));} else { PreD.TFBT3G.BQ1 = FALSE; Plot2(H, "BQ1", RGB(255,0,80));} } //if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0)); //if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150));
검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-11-22 17:07:12

안녕하세요 예스스탁입니다. plot1로만 1번과 2번식 차이를 설명하겠습니다. 1번식 장시작후 10분안(PreD.TMLA == true)에 MTA < M2 조건이 만족하면 PreD.TFBT3G.AQ1가 true가 되고 이후 MTA < M2을 유지하다 10분이 경과하면 당일 하루동안 PreD.TFBT3G.AQ1는 계속 true입니다. 그러므로 1번식은 장초반 10분동안 최종 MTA < M2로 끝났으면 당일 계속 plot1을 출력하라는 식입니다. 2번식에서 plot1은 PreD.TMLA == TRUE에 종속됩니다. 그러므로 장초반 10분 안에서 MTA < M2이면 RGB(0,255,0)색으로 출력하고 아니면 RGB(0,0,255)로 값을 출력하며 10분이 경과해 PreD.TMLA == False가 된 이후에는 plot이 동작하지 않습니다. if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; Plot1(H, "AQ1", RGB(0,255,0)); } else { PreD.TFBT3G.AQ1 = FALSE; Plot1(H, "AQ1", RGB(0,0,255)); } } PreD.TFBT3G.AQ1가 true이면 계속 plot1이 출력이 됩니다. 2번식과 같이 동작하게 하시려면 1번식에 10분 경과후에 PreD.TFBT3G.AQ1을 false로 하는 내용을 추가하시면 됩니다. VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1); VARS: PreD.TFBT3G.AQ1(FALSE, DATA1); VARS: PreD.TFBT3G.BQ1(FALSE, DATA1); var : MTA(0),M1(0),m2(0); mta = ma(c,5); m1 = ma(c,10); m2 = ma(c,20); if ( DATA1(Date <> Date[1]) ) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.TMLA = FALSE; PreD.TML = FALSE; PreD.TFBT3G.AQ1 = FALSE; PreD.TFBT3G.BQ1 = FALSE; } if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; } else { PreD.TMLA = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; } else { PreD.TML = FALSE; } if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; } else { PreD.TFBT3G.AQ1 = FALSE; } } if ( (PreD.TML == TRUE) ) then { if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; } else { PreD.TFBT3G.BQ1 = FALSE; } } if (TimeToMinutes(stime) >= PreD.TM + 10) Then PreD.TFBT3G.AQ1 = FALSE; if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0)); if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150)); 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 문의 (Pre-D) > 1. 아래식 검증부탁드립니다. 장시작후 10분이내의 조건과 10분이후의 조건을 다르게 해줘야 하는데, 10분 이후인데도 불구하고 (MTA < M2인 상태이든 아니든 상관없이) Plot1이 계속 찍히고 있습니다. 그런데 조건식 내부에서 Plot을 했을 경우는 제대로 나오는듯 합니다. 첫번째와 같이 조건식 외부에서 가져다써야 하는데 왜 서로다른 결과를 보여주는지 궁금합니다. /////////////////////////////////////////////////////////////////////////////// // 첫번째 (조건식 외부에서 플로팅): 오작동 /////////////////////////////////////////////////////////////////////////////// VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1); VARS: PreD.TFBT3G.AQ1(FALSE, DATA1); VARS: PreD.TFBT3G.BQ1(FALSE, DATA1); if ( DATA1(Date <> Date[1]) ) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.TMLA = FALSE; PreD.TML = FALSE; PreD.TFBT3G.AQ1 = FALSE; PreD.TFBT3G.BQ1 = FALSE; } if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; } else { PreD.TMLA = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; } else { PreD.TML = FALSE; } if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; } else { PreD.TFBT3G.AQ1 = FALSE; } } if ( (PreD.TML == TRUE) ) then { if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; } else { PreD.TFBT3G.BQ1 = FALSE; } } if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0)); if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150)); /////////////////////////////////////////////////////////////////////////////// // 두번째 (조건식 내부에서 플로팅): 정상작동하는 듯 함 /////////////////////////////////////////////////////////////////////////////// VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1); VARS: PreD.TFBT3G.AQ1(FALSE, DATA1); VARS: PreD.TFBT3G.BQ1(FALSE, DATA1); if ( DATA1(Date <> Date[1]) ) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.TMLA = FALSE; PreD.TML = FALSE; PreD.TFBT3G.AQ1 = FALSE; PreD.TFBT3G.BQ1 = FALSE; } if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; } else { PreD.TMLA = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; } else { PreD.TML = FALSE; } if ( (PreD.TMLA == TRUE) ) then { if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; Plot1(H, "AQ1", RGB(0,255,0)); } else { PreD.TFBT3G.AQ1 = FALSE; Plot1(H, "AQ1", RGB(0,0,255)); } } if ( (PreD.TML == TRUE) ) then { if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; Plot2(H, "BQ1", RGB(255,100,150));} else { PreD.TFBT3G.BQ1 = FALSE; Plot2(H, "BQ1", RGB(255,0,80));} } //if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0)); //if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150));