Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1164

 
Iosebi Tavadze:
Vielleicht bin ich im falschen Thread. Mögen die Götter mir verzeihen. Ich muss einen Indikator schreiben, der ein Signal aus einer Kombination von vier oder fünf im Keller installierten Indikatoren liefert. Oder ein fertiger Berater Mögliche Ratschläge bitte!!!!!!!!!!

Wenn Sie jemanden brauchen, der ihn für Sie schreibt, klicken Sie hier.

Wenn Sie es selbst machen wollen, sagen Sie uns, was Sie nicht können, und posten Sie Ihren Code.

 
simeon068 :
Wie kann ich einen Expert Advisor zu einem mql5-Ordner hinzufügen, damit er im Advisor-Bereich angezeigt wird?

Wählen Sie im Terminal im Menü "Datei" die Option "Datenverzeichnis öffnen" - der Explorer wird geöffnet. Gehen Sie darin zum Ordner MQL5 \ Experts - platzieren Sie Ihren Berater darin oder in einem beliebigen Unterordner. Wählen Sie dann im Navigator des Terminals im Menü der rechten Taste "Aktualisieren".

 

Kann mir jemand einen Rat geben!!! was ist die Warnung und wie kann man sie beheben?

Schnappschuss3

genau dort

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

Kann mir jemand einen Rat geben!!! was ist die Warnung und wie kann man sie beheben?

an diesem Ort


Ich glaube, ich habe es repariert - aber ich weiß nicht, ob das richtig ist? Geben Sie es bekannt.

Schnappschüsse korrigiert

 
Alexsandr San:

Kann mir jemand einen Rat geben!!! was ist die Warnung und wie kann man sie beheben?

genau dort


Sie verwenden möglicherweise eine nicht initialisierte lastme-Variable. Sie haben es ohne Initialisierung deklariert. Es ist nicht garantiert, dass es von SymbolInfoTick() gefüllt wird.

Deklarieren Sie gleich eine Variable mit Initialisierung: MqlTick lastme={0};

 
Artyom Trishkin:

Es ist möglich, eine nicht initialisierte lastme-Variable zu verwenden. Sie haben es ohne Initialisierung deklariert. Es ist nicht garantiert, dass er von SymbolInfoTick() gefüllt wird.

Deklarieren Sie gleich eine Variable mit Initialisierung: MqlTick lastme={0};

Vielen Dank, die Warnung ist verschwunden. Gute Gesundheit und alles Gute!!!

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

Ich habe es wieder hineingelegt - wie Sie gezeigt haben.


gutes Dienstprogramm, ich habe es von hier heruntergeladenhttps://www.mql5.com/ru/articles/5614

Dateien:
finder.mq5  296 kb
finder.mq4  296 kb
 

Können Sie mir sagen, wie ich Daten von einer Bibliothek anfordern kann?

Ich versuche, eine Eule mit einer Schnittstelle zur Dateneingabe zu erstellen

Sieht so aus

Feldcode eingeben

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

Wie kann ich sie abfragen?

m_spin_edit1.GetValue()
 
MakarFX:

Wie kann man es beantragen?

wahrscheinlich so:

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

 
Igor Makanu:

Ich denke schon:

Was bedeutet der Objektname?

Ich muss es tun.

   double OrderBuy = m_spin_edit1.GetValue();

aber in diesem Fall wird der Fehler

m_spin_edit1' - nicht deklarierter Bezeichner TestLibrary.mq4 56 20

 
MakarFX:

Was bedeutet der Objektname?

Ich bezweifle, dass ich das erklären kann, wenn es das ist, wonach Sie fragen.

ein Objekt ist ... Sagen wir, eine Variable der Klasse Typ

in Ihrem Codeabschnitt ist die Klasse CProgram

es muss irgendwo im Code geschrieben sein

CProgram MyProgram;

und Sie müssen Folgendes aufrufen

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();