커뮤니티
문의 (Pre-D)
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));