Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1164

 
Iosebi Tavadze:
Talvez eu esteja no fio errado. Que os deuses me perdoem. Preciso escrever um indicador, que daria um sinal a partir de uma combinação de quatro ou cinco indicadores instalados no subsolo. Ou um conselheiro já pronto. Possível conselho por favor!!!!!!!!!!

Se você precisar de alguém para escrevê-lo para você, vá aqui.

Se você quiser fazer você mesmo, diga-nos o que não pode fazer e afixe seu código.

 
simeon068 :
Como posso adicionar um consultor especializado a uma pasta mql5 e para que ela apareça na seção de consultores?

No terminal, no menu "Arquivo", selecione "Abrir diretório de dados" - o explorador abrirá. Nela, vá para a pasta de especialistas MQL5 - coloque seu assessor dentro dela ou em qualquer subpasta. Em seguida, no navegador do terminal no menu do botão direito, selecione "Update".

 

Alguém pode aconselhar!!! o que é o aviso e como consertá-lo?

Instantâneo3

bem ali

// если активны входящие параметры, использующие значение текущей цены по инструменту,
// тогда пытаемся получить текущие значения
   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:

Alguém pode aconselhar!!! o que é o aviso e como consertá-lo?

neste lugar


Acho que consertei - só que não sei se isso está certo? Apague isso aí.

Snapshots corrigidos

 
Alexsandr San:

Alguém pode aconselhar!!! o que é o aviso e como consertá-lo?

neste lugar


Você pode estar usando uma última variável não-inicializada. Você o declarou sem inicialização. Não é garantido ser preenchido por SymbolInfoTick()

Declarar imediatamente uma variável com inicialização: MqlTick lastme={0};

 
Artyom Trishkin:

É possível utilizar uma última variável não-inicializada. Você o declarou sem inicialização. Não é garantido ser preenchido por SymbolInfoTick().

Declarar imediatamente uma variável com inicialização: MqlTick lastme={0};

Muito obrigado! O aviso desapareceu. Boa saúde e tudo de bom!!!

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

Voltei a colocá-lo lá dentro - como você já demonstrou.


boa utilidade, eu baixei daquihttps://www.mql5.com/ru/articles/5614

Arquivos anexados:
finder.mq5  296 kb
finder.mq4  296 kb
 

Você pode me dizer como solicitar dados de uma biblioteca?

Estou tentando criar uma coruja com uma interface de entrada de dados

Parece que assim

digite o código de campo

//+------------------------------------------------------------------+
//| Создаёт поле ввода 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);
  }

Como posso consultá-lo?

m_spin_edit1.GetValue()
 
MakarFX:

como solicitá-lo?

provavelmente assim:

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

 
Igor Makanu:

Acho que sim:

o que significa o nome do objeto?

Eu tenho que fazê-lo.

   double OrderBuy = m_spin_edit1.GetValue();

mas, neste caso, o erro

'm_spin_edit1' - test testLibrary.mq4 56 20

 
MakarFX:

o que significa o nome do objeto?

Duvido que eu possa explicar, se é isso que você está perguntando

um objeto é ... digamos uma variável do tipo classe

em sua seção de código é classe CProgram

deve ser escrito em algum lugar no código

CProgram MyProgram;

e terá de ser chamada

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();
Razão: