Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1164

 
Iosebi Tavadze:
Quizá me equivoque de hilo, que los dioses me perdonen. Necesito escribir un indicador, que daría una señal de una combinación de cuatro o cinco indicadores instalados en el sótano. ¡¡¡¡¡¡¡¡¡¡O un asesor preparado.Posibles consejos por favor!!!!!!!!!!

Si necesita que alguien lo escriba por usted, vaya aquí.

Si quieres hacerlo tú mismo, dinos lo que no puedes hacer y publica tu código.

 
simeon068 :
¿Cómo puedo añadir un asesor experto a una carpeta mql5 y que se muestre en la sección de asesores?

En el terminal, en el menú "Archivo", seleccione "Abrir directorio de datos": se abrirá el explorador. En ella, vaya a la carpeta MQL5 \ ~ Expertos - colocar su asesor en ella o en cualquier subcarpeta. A continuación, en el navegador del terminal, en el menú del botón derecho, seleccione "Actualizar".

 

¿Alguien puede aconsejar!!! ¿cuál es el aviso y cómo solucionarlo?

Instantánea3

allí mismo

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

¿Alguien puede aconsejar!!! ¿cuál es el aviso y cómo solucionarlo?

en este lugar


Creo que lo he arreglado, pero no sé si está bien. Ponlo ahí.

Instantáneas corregidas

 
Alexsandr San:

¿Alguien puede aconsejar!!! ¿cuál es el aviso y cómo solucionarlo?

en este lugar


Es posible que esté utilizando una variable lastme no inicializada. Lo tienes declarado sin inicializar. No se garantiza que se llene con SymbolInfoTick()

Declarar una variable con inicialización de inmediato: MqlTick lastme={0};

 
Artyom Trishkin:

Es posible utilizar una variable lastme no inicializada. Lo tienes declarado sin inicializar. No se garantiza que se llene con SymbolInfoTick().

Declarar una variable con inicialización de inmediato: MqlTick lastme={0};

Muchas gracias. La advertencia ha desaparecido. ¡¡¡Buena salud y todo lo mejor!!!

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

Lo volví a poner dentro - como has mostrado.


buena utilidad, lo he descargado de aquíhttps://www.mql5.com/ru/articles/5614

Archivos adjuntos:
finder.mq5  296 kb
finder.mq4  296 kb
 

¿Pueden decirme cómo solicitar datos a una biblioteca?

Estoy tratando de crear un búho con una interfaz de entrada de datos

Se parece a esto

introduzca el 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);
  }

¿Cómo puedo consultarlo?

m_spin_edit1.GetValue()
 
MakarFX:

¿cómo solicitarlo?

probablemente así:

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

 
Igor Makanu:

Supongo que sí:

¿qué significa el nombre del objeto?

Tengo que hacerlo.

   double OrderBuy = m_spin_edit1.GetValue();

pero en este caso el error

'm_spin_edit1' - identificador no declarado TestLibrary.mq4 56 20

 
MakarFX:

¿qué significa el nombre del objeto?

Dudo que pueda explicar, si eso es lo que estás preguntando

un objeto es ... digamos que una variable de tipo de clase

en su sección de código es la clase CPrograma

debe estar escrito en alguna parte del código

CProgram MyProgram;

y tendrá que ser llamado

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();
Razón de la queja: