Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1164

 
Iosebi Tavadze:
Может я не в ту ветку вошел.Да простят меня Боги Мкл .!!! Мне надо написать индикатор.Который бы выдавал сигнал из комбинации четырех или пяти индикаторов.Установленных в подвале.Может есть шаблон. Или готовый советник.Подскажите Пожалуйста!!!!!!!!!!

Если нужно чтобы для вас написали, то сюда.

Если хотите сами, то рассказывайте что у вас не получается и выкладывайте свой код.

 
simeon068 :
How can I add an expert advisor to an mql5 folder and for it to show in the advisor section?

In the terminal, in the "File" menu, select "Open data directory" - the explorer will open. In it, go to the MQL5 \ Experts folder - place your adviser in it or in any subfolder. Then in the navigator of the terminal in the menu of the right button select "Update".

 

Может кто подскажет!!! что за предупреждение и как его исправить?

Снимок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/ru/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' - undeclared identifier    TestLibrary.mq4    56    20

 
MakarFX:

что значит имя объекта?

сомневаюсь, что сумею объяснить, если это у Вас вызывает вопрос

объект это ... ну пусть переменная типа class

в Вашем участке кода класс CProgram

где то в коде должно быть написано 

CProgram MyProgram;

и вызывать нужно будет

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();
Причина обращения: