4-1. for구문
int i; //정수 i를 정의하고
for(i=0 ; i<15 ; i++) //for(시작값으로 초기화 ; 조건 ; 증감)
Print(i); //결과 실행(반복 할 내용)
for구문을 직역해 보면,
for(이걸로 시작합니다 ; 이 조건이 맞나요? ; 앞에 조건이 맞으면, 하나 더 증가하여 다시 시작)
조건이 맞지 않을 때까지 계속 돕니다.
그리고 이 반복문 아래에 속하는 코딩 Print(i) 은 반복문 횟수만큼 실행이 됩니다.
결과 값은 0부터 14까지 15번 실행되면서 Print를 실행합니다.
위의 예에서는 i의 타입을 정의 할 때 for구문 외부에서 했는데요, 아래와 같이 for구문 내부에서 정의할 수도 있습니다.
for(int i=0 ; i<15 ; i++)
아래, 플로우 차트를 통해 로직을 한번 더 살펴보겠습니다.
![](http://cafeptthumb2.phinf.naver.net/20150421_81/sunnyhappy12_1429591123594zR2To_JPEG/for.jpg?type=w740)
이제 반복문안에 쓰이는 'break'에 대해 알아 보겠습니다.
break는 반복문안에서 루핑을 돌다가 해당 조건이 왔을 때, 반복문을 종료 시키고 빠져 나오게 합니다.
for(int i=0 ; i<15 ; i++) //i를 0부터 14까지, 15번 돌려보자
{
if(i==10) //i가 10이 되면
break; //루핑 종료
Print(i); //0~9까지만 Print
}
반복문 안의 또다른 기능인 'continue'에 대해 알아봅시다.
루핑을 돌다가 해당 조건이 왔을 때, 그 조건만 뛰어넘고 계속 실행합니다. 아래 예에서는 루핑이 10에 도달 할 때 10은 생략하고 0부터 14까지만 실행합니다.
for(int i=0 ; i<15 ; i++) //i를 0부터 14까지, 15번 돌려보자
{
if(i==10) //i가 10이 되면
continue; //해당 조건은 건너뜀
Print(i); //10은 생략하고 0~14까지만 Print
}
예제를 통해 종합복습을 하겠습니다.
for(int i=0;i<OrdersTotal();i++) 모든 오픈주문을 대상으로
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 주문 한개씩 잡아서 만약 그게 False면
break; 브레이크로 반복문을 종료하고 빠져나옵니다.
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) 오더매직넘버가 지정해준 것과 같지않거나, 주문통화쌍이 일치하지 않으면
continue; 콘티뉴로 해당 주문은 건너뜁니다
//---- check order type
if(OrderType()==OP_BUY) BUY포지션이면
{
if(Open[1]>ma && Close[1]<ma) 이러한 조건에서
OrderClose(OrderTicket(),OrderLots(),Bid,3,White); 청산
break; 그리고 브레이크로 종료
}
if(OrderType()==OP_SELL) SELL포지션이면
{
if(Open[1]<ma && Close[1]>ma) 상동
OrderClose(OrderTicket(),OrderLots(),Ask,3,White); 상동
break; 상동
}
}
[출처] 4-1. for구문 (FXAL 외환알고리즘전략연구소) |작성자 HAN
'EA 교육자료' 카테고리의 다른 글
2-2추세패턴기법 [전략 코딩] (0) | 2015.04.22 |
---|---|
전략코팅 매매관리 (0) | 2015.04.17 |
백테스트신뢰성 매매관리 (0) | 2015.04.17 |
캔들활용기본이론 매매코딩 (0) | 2015.04.17 |
RSI상대강도지수 소스 매매코딩 (0) | 2015.04.17 |
RSI상대강도지수 매매코딩 (0) | 2015.04.17 |
볼린져밴드 매매코딩 (0) | 2015.04.17 |
이동평균선 매매코딩 (0) | 2015.04.17 |