MetaTrader 5를 위한 카운터 코드 블록 활용하기

Mike 2024.04.14 19:15 40 0 0
첨부파일

01. 'X' 회를 카운트한 후 코드 실행하기.

  • Step 01 - 카운트 한계를 설정할 변수를 생성합니다. 이 변수는 코드의 입력 파라미터로 사용할 수 있습니다.
  • Step 02 - 카운트된 횟수를 저장할 또 다른 변수를 만듭니다.
  • Step 03 - 카운터와 설정한 카운트 한계가 같아지면, 지정한 코드 블록이 실행됩니다.
  • Step 04 - 코드가 실행된 후에는 반드시 카운터를 초기화해야 합니다. 그렇지 않으면 무한히 카운트됩니다.
카운터 블록에 필터링 조건을 추가할 수 있습니다. 예를 들어, >> "이 조건이 참이면 한 번 카운트해라."
input int count = 50; // 카운트 한계를 입력으로 설정
int Counter; // 카운터 변수
// Expert 초기화 --------------------
int OnInit()
{
 return(INIT_SUCCEEDED);
}
// Expert 비활성화 -------------------
void OnDeinit(const int reason)
{

}
// Expert OnTick --------------------------
void OnTick()
{
 Counter ++; // 매 틱마다 카운터를 1 더함.
 Comment("현재 카운트 -:", Counter);
 
 if(Counter == count) // 'X' 회 카운트 후 실행 | 이 블록은 각 카운트마다 한 번만 실행됩니다.
 {
  
  // 여기에 코드를 추가하세요......
 Alert(count," 회 카운트됨"); 
 Counter = 0; // 코드 블록 끝에서 카운터를 초기화합니다. 필수입니다.
 } 
} // OnTick 종료  <<----------------------


02. 'X' 회 실행 후 'X' 회 대기하기.

이 방법은 대기하고 실행하거나, 실행하고 대기하는 용도로 사용할 수 있습니다.

  • Step 01 - 카운트 한계와 대기 한계를 설정할 변수를 생성합니다. 이 변수들도 코드 최적화를 위해 입력 파라미터로 사용할 수 있습니다.
  • Step 02 - 카운트 한계와 대기 한계를 저장할 변수를 만듭니다.
  • Step 03 - 카운터와 설정한 카운트 한계가 같아지면 지정한 코드 블록이 실행됩니다.
  • Step 04 - 대기변수와 대기 한계가 같아지면 잠시 대기합니다.
  • Step 05 - 대기 한계에 도달했을 때, 카운터와 대기변수를 반드시 초기화해야 합니다. 그렇지 않으면 작동이 멈출 수 있습니다.
카운터 블록과 대기 블록에도 필터링 조건을 설정할 수 있습니다. 예를 들어, >> "이 조건이 참이면 잠시 대기해라."


input int count = 50; // 카운트 한계를 입력으로 설정
input int wait = 50; // 대기 한계를 입력으로 설정

int Counter; // 카운터 변수 기본값은 "0"
int Waiter; // 대기 변수 기본값은 "0"

// Expert 초기화 --------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

// Expert 비활성화 -------------------
void OnDeinit(const int reason)
  {

  }

// Expert OnTick --------------------------
void OnTick()
  {
   Comment("카운트된 틱 -: ", Counter, "\n", "대기된 틱 -: ", Waiter);

   if(Counter < count) // 'X' 회 실행
     {
      Counter++; // 카운터 업데이트

      // 여기에 코드를 추가하세요.

     }
   else
      if(Waiter < wait) // 'X' 회 대기
        {
         Waiter++; // 대기 변수 업데이트

         // 여기에 코드를 추가하세요.

        }

   if(Waiter == wait) // 대기 한계 도달
     {
      Counter = 0; // 카운터 초기화
      Waiter = 0; // 대기 변수 초기화
     }
}

  } // OnTick 종료  <<----------------------
//+------------------------------------------------------------------+

특별 -:

위 코드를 수정하여 "X 회 실행 후 멈추기" 기능을 만들 수 있습니다. 대기 코드 블록을 제거하면 특정 회수만큼 카운트하고, 카운터가 초기화될 때까지 작동을 멈춥니다. 전역 변수로 이러한 변수를 생성하면 코드의 어디서든 초기화할 수 있습니다.


목록
댓글 0