Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1164

 
Iosebi Tavadze:
Forse sono nel thread sbagliato, che gli dei mi perdonino. Ho bisogno di scrivere un indicatore che dia un segnale da una combinazione di quattro o cinque indicatori installati nel seminterrato. O un consulente pronto all'uso.Possibili consigli per favore!!!!!!!!!!

Se hai bisogno di qualcuno che lo scriva per te, vai qui.

Se vuoi farlo da solo, dicci cosa non puoi fare e posta il tuo codice.

 
simeon068 :
Come posso aggiungere un expert advisor a una cartella mql5 e farlo apparire nella sezione advisor?

Nel terminale, nel menu "File", selezionate "Open data directory" - si aprirà l'explorer. In esso, vai alla cartella MQL5 Experts - metti il tuo consulente in essa o in qualsiasi sottocartella. Poi nel navigatore del terminale nel menu del tasto destro seleziona "Update".

 

Qualcuno può consigliare!!! qual è l'avvertimento e come risolverlo?

Istantanea3

in questo luogo

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

Qualcuno può consigliare!!! qual è l'avvertimento e come risolverlo?

in questo luogo


Penso di averlo aggiustato - solo che non so se è giusto? Mettetelo in giro.

Istantanee corrette

 
Alexsandr San:

Qualcuno può consigliare!!! qual è l'avvertimento e come risolverlo?

in questo luogo


Forse state usando una variabile lastme non inizializzata. L'avete dichiarato senza inizializzazione. Non è garantito che venga riempito da SymbolInfoTick()

Dichiarare subito una variabile con inizializzazione: MqlTick lastme={0};

 
Artyom Trishkin:

È possibile utilizzare una variabile lastme non inizializzata. L'avete dichiarato senza inizializzazione. Non è garantito che venga riempito da SymbolInfoTick().

Dichiarare subito una variabile con inizializzazione: MqlTick lastme={0};

Grazie mille, l'avvertimento è scomparso. Buona salute e tutto il meglio!!!

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

L'ho rimesso dentro - come avete mostrato.


buona utilità, l'ho scaricata da quihttps://www.mql5.com/ru/articles/5614

File:
finder.mq5  296 kb
finder.mq4  296 kb
 

Potete dirmi come richiedere dati da una biblioteca?

Sto cercando di creare un gufo con un'interfaccia di inserimento dati

Assomiglia a questo

inserire il codice del 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);
  }

Come posso interrogarlo?

m_spin_edit1.GetValue()
 
MakarFX:

come richiederlo?

probabilmente come questo:

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

 
Igor Makanu:

Credo di sì:

cosa significa il nome dell'oggetto?

Devo farlo.

   double OrderBuy = m_spin_edit1.GetValue();

ma in questo caso l'errore

'm_spin_edit1' - identificatore non dichiarato TestLibrary.mq4 56 20

 
MakarFX:

cosa significa il nome dell'oggetto?

Dubito di poterlo spiegare, se è quello che sta chiedendo

un oggetto è ... diciamo che una variabile di tipo classe

nella tua sezione di codice è la classe CProgram

deve essere scritto da qualche parte nel codice

CProgram MyProgram;

e dovrà essere chiamato

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();