if문 제어문은 조건문이라고 하며 조건식의 결과에 따라 실행문의 수행을 결정하는 문장입니다.
조건식은 if와 then 사이에 지정을 하고 조건식이 만족하면 지정된 실행문을 수행하고
만족하지 않으면 수행하지 않거나 다른 실행문을 수행합니다.
수식 작성 중에 가장 빈번하게 사용되고 기초가 되는 제어문입니다.
If 조건 then 문은 해석상 "만약 어떤 조건이 만족한다면"이라는
내용이므로 아직 문장이 종결되지 않았으므로 then뒤에는 문장의 마침을 뜻하는
세미콜론(;)을 찍지 않고 뒤에 오게 될 실행문에 세미콜론을 표시해야 합니다.
작성방법
1.
if 조건 then 실행 문장
지정한 조건이 만족하면 실행문 수행, 아니면 수행하지 않음
//종가가 20이동평균을 돌파하면
if crossup(C,ma(C,20)) Then
Hvalue = High; //Hvalue변수에 고가를 저장
C
복사
2.
if 조건 then { 그룹실행 } 문장
조건만족시 수행해야 할 실행문이 다수이면 { } 나 Begin, End로 블럭처리를 해야 합니다.
예스랭귀지에서 세미콜론(;)은 문장의 마침을 의미하므로 { }로 블럭처리를 하지 않으면
첫번째 실행문을 제외하면 모두 if문과 관계없는 내용이 됩니다.
//실행문이 2개 이상이면 블럭처리
if crossup(C,ma(C,20)) Then
{
Hvalue = High; //Hvalue변수에 고가를 저장
Lvalue = Low; //Lvalue변수에 저가를 저장
}
//블럭처리하는 { }는 Begin End로 대체가능
if crossup(C,ma(C,20)) Then
Begin
Hvalue = High; //Hvalue변수에 고가를 저장
Lvalue = Low; //Lvalue변수에 저가를 저장
end
//실행문이 2개 이상인데 블럭처리를 하지 않으면
if crossup(C,ma(C,20)) Then
Hvalue = High; //첫번째 실행문만 if문에 포함됨.
Lvalue = Low; //두번째 실행문은 if문과 관계없음
C
복사
3.
if 조건 then 중첩 문장
중첩문장은 if 조건 then 문장 안에 if 조건 then 문장을 여러번 중첩해서 사용하는 문장으로
복잡한 수식의 경우 동일한 조건에 대한 반복 지정을 줄여서 가독성을 높이는 효과가 있습니다.
//수식 1
//종가가 이동평균을 돌파하고 종가가 파라볼릭보다 크거나 같으면
if crossup(C,ma(C,20)) and C >= sar(0.02,0.2) Then
{
value = High; //value변수에 고가를 저장
}
//종가가 이동평균을 돌파하고 종가가 파라볼릭보다 작으면
if crossUp(C,ma(C,20)) and C < sar(0.02,0.2) and Then
{
value = Low; //value변수에 저가를 저장
}
//수식2
//종가가 이동평균을 돌파하고
if crossup(C,ma(C,20)) Then
{
//종가가 파라볼릭보다 크거나 같으면
if C >= sar(0.02,0.2) then
value = High; //value변수에 고가를 저장
//종가가 파라볼릭보다 작으면
if C < sar(0.02,0.2) and Then
value = Low; //value변수에 저가를 저장
}
C
복사
수식1과 수식2는 동일한 내용이지만 수식2와 같이
중첩되는 내용으로 if문을 만들고 각 다른 조건은 해당 if문 안에 그룹처리를 해서
동일 조건에 대한 반복계산을 줄이게 만든 식입니다.
4.
if 조건 then 실행1 else 실행2 문장
지정한 조건이 만족할 때와 아닐때를 구분해서
실행문을 수행해야 할 경우 사용하는 문장입니다.
//수식1
//종가가 파라볼릭보다 크거나 같으면
if C >= sar(0.02,0.2) then
value = High; //value변수에 고가를 저장
//종가가 파라볼릭보다 작으면
if C < sar(0.02,0.2) and Then
value = Low; //value변수에 저가를 저장
//수식2
//종가가 파라볼릭보다 크거나 같으면
if C >= sar(0.02,0.2) then
value = High; //value변수에 고가를 저장
else //아니면
value = Low; //value변수에 저가를 저장
C
복사
수식1과 수식2는 동일한 내용이지만 수식2와 같이 else를 이용하면
두가지 상반된 if문을 작성하는 것보다 간단히 수식을 작성하고 가독성을 높일 수 있습니다.
5.
if 조건 then 실행1 else if 조건 then 실행2 문장
세가지 이상 구분되는 상황에서 조건지정에 사용하는 문장입니다.
//세가지로 구분
//양봉이면 고가, 음봉이면 저가, 도지봉이면 종가저장
//수식1
if Close > Open then
value = H;
if Close < Open then
value = L;
if Close == Open then
value = C;
//수식2
if Close > Open then
value = H;
else if Close < Open then
value = L;
else
value = C;
------------------------------------------------------
//네가지로 구분
//양봉이면 고가, 음봉이면 고가, 양봉도지면 고가, 음봉도지면 저가
//수식1
if Close > Open then
value = H;
if Close < Open then
value = L;
if (C == O and C >= C[1]) then
value = H;
if (C == O and C < C[1]) then
value = L;
//수식2
if Close > Open then
value = H;
else if Close < Open then
value = L;
else if (C == O and C >= O) then
value = H;
else
value = L;
C
복사
수식1과 수식2는 동일한 내용이지만
수식2와 같이 else if 조건 then를 이용하면 각 조건을 모두 if문을 작성하는 것보다
간단히 수식을 작성하고 가독성을 높일 수 있습니다.
뒤로가기는 좌측상단의 목차 버튼을 눌러주세요.