MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1164

 
Iosebi Tavadze :
내가 스레드를 잘못 입력했을 수도 있습니다. 신이 나를 용서하기를 바랍니다 Mkl.!!! 표시기를 작성해야 합니다 4개 또는 5개의 표시기 조합에서 신호를 제공하는 표시기를 작성 해야 합니다 지하실에 설치됩니다 템플릿이 있을 수 있습니다. 아니면 준비된 조언자님 말씀해주세요!!!!!!!!!

당신이 당신을 위해 쓸 필요가 있다면 여기 .

스스로 하고 싶다면 무엇이 효과가 없는지 알려주고 코드를 게시하십시오.

 
simeon068 :
어떻게 mql5 폴더에 전문 고문을 추가하고 그것이 고문 섹션에 표시되도록 할 수 있습니까?

터미널의 "파일" 메뉴에서 "데이터 디렉토리 열기"를 선택하면 탐색기가 열립니다. 그 안에 있는 MQL5 \ Experts 폴더로 이동하십시오. 이 폴더 또는 하위 폴더에 조언자를 배치하십시오. 그런 다음 오른쪽 버튼 메뉴의 터미널 내비게이터에서 "업데이트"를 선택하십시오.

[삭제]  

누가 나에게 말해줄 수 있니!!! 경고는 무엇이며 어떻게 수정합니까?

스냅샷3

여기 이 곳에서

 // если активны входящие параметры, использующие значение текущей цены по инструменту,
// тогда пытаемся получить текущие значения
   if (hide_PRICE_HIGH> 0 || hide_PRICE_LOW> 0 || hide_SPREAD> 0 )
     {
       SymbolInfoTick (name, lastme);
       if (lastme.bid== 0 )
        {
         Alert ( "(" +name+ ") Получить значение BID не удалось. Некоторые функции фильтрации могут не работать." );
        }
     }
// Скрыть символы, у которых спред:
   if (hide_SPREAD> 0 && lastme.bid> 0 )
     {
       switch (hide_SPREAD)
        {
         // если текущий спред больше 0.05% от цены - пропускаем символ
         case spread_b05:
             if ((( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ))/lastme.bid)* 100 > 0.05 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред больше 0.1% от цены - пропускаем символ
         case spread_b1:
             if ((( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ))/lastme.bid)* 100 > 0.1 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред больше 0.15% от цены - пропускаем символ
         case spread_b15:
             if ((( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ))/lastme.bid)* 100 > 0.15 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред меньше 0.15% от цены - пропускаем символ
         case spread_l15:
             if ((( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ))/lastme.bid)* 100 < 0.15 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред меньше 0.1% от цены - пропускаем символ
         case spread_l1:
             if ((( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ))/lastme.bid)* 100 < 0.1 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред != 0.01 - пропускаем символ
         case spread_c1:
             if ( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ) > 0.01 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред > 0.03 - пропускаем символ
         case spread_c3:
             if ( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ) > 0.03 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред > 0.07 - пропускаем символ
         case spread_c7:
             if ( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ) > 0.07 )
              {
               isskip= true ;
              }
             break ;
         // если текущий спред > 0.1 - пропускаем символ
         case spread_c10:
             if ( SymbolInfoInteger (name, SYMBOL_SPREAD )* SymbolInfoDouble (name, SYMBOL_POINT ) > 0.1 )
              {
               isskip= true ;
              }
             break ;
        }
     }
[삭제]  
Alexsandr San :

누가 나에게 말해줄 수 있니!!! 경고는 무엇이며 어떻게 수정합니까?

여기 이 곳에서


나는 그것을 고쳤습니다. 그러나 나는 모릅니다. 이 물건을 꺼내

스냅샷 수정됨

 
Alexsandr San :

누가 나에게 말해줄 수 있니!!! 경고는 무엇이며 어떻게 수정합니까?

여기 이 곳에서


초기화되지 않은 lastme 변수를 사용할 수 있습니다. 초기화 없이 선언됩니다. SymbolInfoTick()에 채워진다는 사실이 아닙니다.

초기화와 함께 즉시 변수 선언: MqlTick lastme={0};

[삭제]  
Artyom Trishkin :

초기화되지 않은 lastme 변수를 사용할 수 있습니다. 초기화 없이 선언됩니다. SymbolInfoTick()에 채워진다는 사실이 아닙니다.

초기화와 함께 즉시 변수 선언: MqlTick lastme={0};

정말 감사합니다! 경고가 사라졌습니다. 건강하시고 최고!!!

--------------------------

나는 그것을 안으로 돌려보냈다 - 당신이 보여준 대로.


좋은 유틸리티, https://www.mql5.com/en/articles/5614 에서 다운로드했습니다.

파일:
finder.mq5  296 kb
finder.mq4  296 kb
 

도서관에서 데이터를 요청하는 방법을 알려주실 수 있습니까?

데이터 입력을 위한 인터페이스로 올빼미를 만들려고 합니다.

밖에서 보면 이렇게 생겼다

입력 필드 코드

 //+------------------------------------------------------------------+
//| Создаёт поле ввода 1                                             |
//+------------------------------------------------------------------+
bool CProgram::CreateSpinEdit1( const int x_gap, const int y_gap, string text)
  {
//--- Сохраним указатель на окно
   m_spin_edit1.WindowPointer(m_window);
//--- Координаты
   int x=m_window.X()+x_gap;
   int y=m_window.Y()+y_gap;
//--- Значение
   double v=(m_spin_edit1.GetValue()== WRONG_VALUE ) ? 0 : m_spin_edit1.GetValue();
//--- Установим свойства перед созданием
   m_spin_edit1.XSize( 204 );
   m_spin_edit1.YSize( 24 );
   m_spin_edit1.EditXSize( 80 );
   m_spin_edit1.MaxValue( 10000 );
   m_spin_edit1.MinValue( 0 );
   m_spin_edit1.StepValue( 10 * Point );
   m_spin_edit1.SetDigits( Digits );
   m_spin_edit1.SetValue(v);
   m_spin_edit1.ResetMode( true );
   m_spin_edit1.AreaColor( clrWhite );
//--- Создадим элемент управления
   if (!m_spin_edit1.CreateSpinEdit(m_chart_id,m_subwin,text,x,y))
       return ( false );
//--- Добавим объект в общий массив групп объектов
   CWndContainer::AddToElementsArray( 0 ,m_spin_edit1);
   return ( true );
  }

요청 방법?

m_spin_edit1.GetValue()
 
MakarFX :

요청 방법?

아마 그렇게:

имя_объекта. m_spin_edit1.GetValue()

 
Igor Makanu :

아마 그렇게:

개체 이름은 무엇을 의미합니까?

난 필요해

   double OrderBuy = m_spin_edit1.GetValue();

그러나 이 경우 오류는

'm_spin_edit1' - 선언되지 않은 식별자 TestLibrary.mq4 56 20

 
MakarFX :

개체 이름은 무엇을 의미합니까?

이것이 당신에게 질문을 제기한다면 내가 설명할 수 있을지 의심스럽습니다.

객체는 ... 글쎄, 클래스 유형의 변수를 가정 해 봅시다.

코드 섹션에서 CProgram 클래스

코드의 어딘가에 작성되어야 합니다

CProgram MyProgram;

그리고 당신은 전화해야합니다

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();