초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 997

 

안녕하세요 프로그래머 여러분. 당신의 도움이 필요합니다. 해당 월의 첫 번째 거래일에 EA에서 한 번의 거래만 열리며, 이는 첫 번째, 두 번째, 세 번째 또는 네 번째 날이 될 수 있습니다. 다음과 같은 조건이 있습니다. if(Day == 1 || Day == 2 || Day == 3 || Day == 4 ){then deal is started} 어떤 기능이 있는지 묻고 싶었습니다. MQL5에서 "어드바이저에게 오늘이 그 달의 첫 번째 거래일임을 알릴 것"입니까?

 
Kolya32 :

안녕하세요 프로그래머 여러분. 당신의 도움이 필요합니다. 해당 월의 첫 번째 거래일에 EA에서 한 번의 거래만 열리며, 이는 첫 번째, 두 번째, 세 번째 또는 네 번째 날이 될 수 있습니다. 다음과 같은 조건이 있습니다. if(Day == 1 || Day == 2 || Day == 3 || Day == 4 ){then deal is started} 어떤 기능이 있는지 묻고 싶었습니다. MQL5에서 "어드바이저에게 오늘이 그 달의 첫 번째 거래일임을 알릴 것"입니까?

첫 거래일을 알 수 없거나 현재 날짜를 해당 월의 첫 거래일로 확인할 수 없습니까?

이것은 현재 시간 프레임에서 월의 시작 날짜를 더 정확하게 찾을 수 있는 방법입니다(물론 PERIOD_CURRENT 를 예를 들어 하루로 변경할 수 있음).

 datetime          StartDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (), PERIOD_MN1 , 0 ), iTime ( Symbol (), PERIOD_CURRENT , 0 ))- 1 );

하지만 iTime, Bars 기능은 각각 확인하는 것이 좋습니다.

 
Kolya32 :

안녕하세요 프로그래머 여러분. 당신의 도움이 필요합니다. 해당 월의 첫 번째 거래일에 EA에서 한 번의 거래만 열리며, 이는 첫 번째, 두 번째, 세 번째 또는 네 번째 날이 될 수 있습니다. 다음과 같은 조건이 있습니다. if(Day == 1 || Day == 2 || Day == 3 || Day == 4 ){then deal is started} 어떤 기능이 있는지 묻고 싶었습니다. MQL5에서 "어드바이저에게 오늘이 그 달의 첫 번째 거래일임을 알릴 것"입니까?

새로운 바의 시작이 논의된 곳을 찾아 마침표 PERIOD_MN1 로 대체하십시오.

새로운 바의 개장은 그 달의 첫 번째 거래일입니다.

 
Aleksey Vyazmikin :

첫 거래일을 알 수 없거나 현재 날짜를 해당 월의 첫 거래일로 확인할 수 없습니까?

나는 그 달의 첫 거래일을 결정할 수 없습니다. 조언 감사합니다 실험해보겠습니다

 
Alexey Viktorov :

새로운 바의 시작이 논의된 곳을 찾아 마침표 PERIOD_MN1 로 대체하십시오.

새로운 바의 개장은 그 달의 첫 번째 거래일입니다.

고맙습니다. 나는 이 방향으로 실험할 것이다)

 

작성자가 글을 쓸 때 콜론을 사용하는 이유는 무엇입니까? 아래 코드는 콜론으로 가득 차 있습니다. 같은 :: Sleep ( 5 ); 콜론 없이 쓸 수 있습니까?

 void CProgram::GetSymbols( void )
  {
   m_progress_bar.LabelText( "Get symbols..." );
   m_progress_bar.Update( 1 , 2 );
   :: Sleep ( 5 );
//--- Освободить массив символов
   :: ArrayFree (m_symbols);
//--- Массив элементов строк
   string elements[];
//--- Фильтр названий символов
   if (m_symb_filter.IsPressed())
     {
       string text=m_symb_filter.GetValue();
       if (text!= "" )
        {
         ushort sep=:: StringGetCharacter ( "," , 0 );
         :: StringSplit (text,sep,elements);
         //---
         int elements_total=:: ArraySize (elements);
         for ( int e= 0 ; e<elements_total; e++)
           {
             //--- Чистка по краям
            :: StringTrimLeft (elements[e]);
            :: StringTrimRight (elements[e]);
           }
        }
     }
//--- Собираем массив форекс-символов
   int symbols_total=:: SymbolsTotal ( true );
   for ( int i= 0 ; i<symbols_total; i++)
     {
       //--- Получим имя символа
       string symbol_name=:: SymbolName (i, false );
       //--- Скроем его в окне Обзор рынка
      :: SymbolSelect (symbol_name, false );
       //--- Если не форекс-символ, перейти к следующему
       if (:: SymbolInfoInteger (symbol_name, SYMBOL_TRADE_CALC_MODE )!= SYMBOL_CALC_MODE_FOREX )

         if (m_symb_filter.IsPressed())
           {
             bool check= false ;
             int elements_total=:: ArraySize (elements);
             for ( int e= 0 ; e<elements_total; e++)
              {
               //--- Ищем совпадение в названии символа
               if (:: StringFind (symbol_name,elements[e])>- 1 )
                 {
                  check= true ;
                   break ;
                 }
              }
             //--- Перейти к следующему, если не пропускает фильтр
             if (!check)
               continue ;
           }
       //--- Сохраним символ в массив
       int array_size=:: ArraySize (m_symbols);
      :: ArrayResize (m_symbols,array_size+ 1 );
      m_symbols[array_size]=symbol_name;
     }
//--- Если массив пустой, установим текущий символ по умолчанию
   int array_size=:: ArraySize (m_symbols);
   if (array_size< 1 )
     {
      :: ArrayResize (m_symbols,array_size+ 1 );
      m_symbols[array_size]=:: Symbol ();
     }
//--- Покажем в окне Обзор рынка
   int selected_symbols_total=:: ArraySize (m_symbols);
   for ( int i= 0 ; i<selected_symbols_total; i++)
      :: SymbolSelect (m_symbols[i], true );
  }
 
BillionerClub :

저자가 글을 쓸 때 콜론을 사용하는 이유는 무엇입니까? 아래 코드는 콜론으로 가득 차 있습니다. 같은 :: Sleep ( 5 ); 콜론 없이 쓸 수 있습니까?

컨텍스트 확인 작업( :: )

mql5 프로그램의 각 함수에는 고유한 실행 컨텍스트가 있습니다. 예를 들어 Print() 시스템 함수는 전역 컨텍스트에서 실행됩니다. 가져온 함수는 해당 가져오기 컨텍스트에서 호출됩니다. 클래스의 함수-메서드에는 해당 클래스의 컨텍스트가 있습니다. 컨텍스트 확인 작업의 구문은 다음과 같습니다.

[Context_name]::Function_name(매개변수)

컨텍스트 이름이 없으면 전역 컨텍스트가 사용 중임을 명시적으로 나타냅니다. 컨텍스트 확인 작업이 없는 경우 함수는 가장 가까운 컨텍스트에서 조회됩니다. 로컬 컨텍스트에 기능이 없으면 글로벌 컨텍스트에서 검색이 수행됩니다.

또한 컨텍스트 확인 작업은 클래스 의 멤버 함수를 정의하는 데 사용됩니다.

유형 Class_name::Function_name(parameter_description)
{
// 함수 본문
}

프로그램이 미래에 다른 실행 컨텍스트에서 동일한 이름의 여러 기능을 사용하거나 사용할 수 있는 경우 모호성이 발생할 수 있습니다. 컨텍스트를 명시적으로 지정하지 않고 함수 호출 우선 순위:

  1. 클래스 메서드. 주어진 이름의 함수가 클래스에 정의되어 있지 않으면 다음 수준에서 찾습니다.
  2. MQL5 기능. 언어에 그러한 기능이 없으면 다음 수준에서 찾고 있습니다.
  3. 사용자가 정의한 전역 기능. 그러한 기능이 없으면 다음 단계를 찾고 있습니다.
  4. 가져온 기능. 가져온 함수 중에서 함수를 찾을 수 없으면 컴파일러에서 오류를 생성합니다.

함수 호출을 명확하게 하려면 컨텍스트 확인 작업을 사용하여 명시적으로 범위를 지정합니다.

Документация по MQL5: Основы языка / Операции и выражения / Другие операции
Документация по MQL5: Основы языка / Операции и выражения / Другие операции
  • www.mql5.com
-1. В частном случае одномерного массива из 50 элементов обращение к первому элементу будет выглядеть как array[0], к последнему элементу - array[49]. Вызов функции с аргументами x1, x2,..., xn Каждый аргумент может представлять собой константу, переменную или выражение соответствующего типа. Передаваемые аргументы разделяются запятыми и должны...
 
Artyom Trishkin :

컨텍스트 확인 작업( :: )

내가 알기로는 작성자가 코드 처리 속도를 높입니다. 와우 잘했어.

 

거래 내역이 차트에 그려집니다. 어떻게 그런 그림을 비활성화할 수 있습니까?


 
BillionerClub :

거래 내역이 차트에 그려집니다. 어떻게 그런 그림을 비활성화할 수 있습니까?


도구 - 설정 - 거래 - "실시간 차트에 거래 표시".

사유: