[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 264

 
Dmido >> :

Es sieht so aus, als ob eine Woche für uns Neulinge die Frist ist, nach der wir zu euch pros)))) gehen.


Schlussfolgerungen aus den letzten Beiträgen....

Lassen Sie uns der Sache auf den Grund gehen:) geben Sie den Kontext an.

 

Kontext? einfach...

Artikel Erstellung eines gewöhnlichen Programms(https://book.mql4.com/ru/build/index) aus dem Lehrbuch.

Dort wird eine Datei <Inform.mqh> in das Programm aufgenommen.

""""""

Mit einem benutzerdefinierten Indikator und den entsprechenden Einstellungen wird ein separates Teilfenster für die Ausgabe erstellt. Der einzige Zweck dieses Indikators besteht darin, ein Unterfenster zu erstellen. Daher werden in diesem Indikator keine Berechnungen durchgeführt, und es besteht auch kein Zweck, Indikatorlinien zu erstellen. Der Code des Indikators Inform.mq4 kann wie folgt aussehen:

//--------------------------------------------------------------------
// Inform.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
#property indicator_separate_window // Отдельное окно индикатора
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
}
//--------------------------------------------------------------------

Im Allgemeinen kann der Programmierer dem Indikator den erforderlichen Code hinzufügen und ihn so mit zusätzlichen Eigenschaften ausstatten. So können Sie beispielsweise in einem Teil des Indikator-Unterfensters die Indikatorlinien anzeigen. Dieses Beispiel zeigt einen einfachen Code eines Indikators, in dessen Fenster die grafischen Objekte angezeigt werden.

""""

Hier ist der Code der Inform-Datei. Ich verstehe nicht, wie man die Signale auf dem Diagramm ablesen kann. Im Programm funktioniert es, es scheint Befehle auf dem Diagramm auszugeben, aber nichts... Ich muss einen Inform-Indikator anhängen und etwas hineinschreiben? Oder einen anderen Weg?


Bitte sagen Sie mir, wie man das macht ((...)

 
Dmido >> :

Bitte sagen Sie uns, was wir tun sollen ((.


Zunächst einmal ein wenig Theorie. Ein MQL-Programm ist... Programm. Das heißt, er kann keine Operationen durchführen, die ihm nicht aufgetragen wurden. Im Hilfeabschnitt "Programmausführung" können Sie lesen, dass die Funktion start() ausgeführt wird, wenn ein neuer Tick im Expert Advisor/Indikator erscheint. Wenn die Funktion Inform() nicht von der Funktion start() aufgerufen wird, wird sie nicht ausgeführt. Lesen Sie nun den Artikel ab dem von Ihnen erwähnten Abschnitt weiter: Die Funktion Inform() kann von jeder Stelle im Programm aus aufgerufen werden, an der die nächste Meldung angezeigt werden soll. D.h. in der Funktion start(), wo wir die Nachricht ausgeben müssen, schreiben wir

Inform(Mess_Number, Number, Value);
 
Natürlich müssen die Variablen Mess_Number, Number, Value im Voraus deklariert und ihnen Werte zugewiesen werden.
 

Danke für die Erklärung, natürlich, aber es wird vom Programm oft aufgerufen, es ist nicht im Hauptteil, aber in anderen iclude ist es überall und wird durch das Senden von Nachrichten aufgerufen, aber sie werden nicht ausgegeben(


als Beispiel eine Zeile aus Close_All.mqh


if (Tip==1) Price_Cls=Ask; // Für Verkaufsaufträge
Inform(12,Ticket); // Meldung über den Schließversuch.

 
Schreiben Sie Ihren start()-Code und lassen Sie uns einen Blick darauf werfen, denn wir diskutieren hier nichts
 
int start()                            // Спец. функция start
  {
        
   Terminal();                         // Функция учёта ордеров 
   Events();                           // Информация о событиях
   Trade(Criterion());                 // Торговая функция
   Inform(0);                          // Для перекрашивания объектов
   return;                             // Выход из start()
  }

Es ist im Wesentlichen dasselbe wie im Lehrgang. Alle Aufrufe kommen aus Include-Dateien.

Hier ein Beispiel

//--------------------------------------------------------------------
// Events.mqh
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
// Функция слежения за событиями.
// Глобальные переменные:
// Level_new            Новое значение минимальной дистанции
// Level_old            Предыдущее значение минимальной дистанции
// Mas_Ord_New[31][9]   Массив ордеров последний известный
// Mas_Ord_Old[31][9]   Массив ордеров предыдущий (старый)
//--------------------------------------------------------------- 2 --
int Events()                              // Пользовательская функция
  {
   bool Conc_Nom_Ord;                     // Совпадение ордеров в ..
   //.. старом и новом массивах
//--------------------------------------------------------------- 3 --
   Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL );// Последн.известное
   if ( Level_old!= Level_new)              // Новое не равно старому..
     {                                    // значит изменились условия
      Level_old= Level_new;                // Новое "старое значение"
      Inform(10, Level_new);               // Сообщение: новая дистанц.
     }
//--------------------------------------------------------------- 4 --
   // Поиск пропавших, поменявших тип, частично закрытых и переоткрытых
   for(int old=1; old<= Mas_Ord_Old[0][0]; old++)// По массиву старых
     {                                    // Исходим из того, что..
      Conc_Nom_Ord=false;                 // ..ордера не совпадают
      //--------------------------------------------------------- 5 --
      for(int new=1;new<= Mas_Ord_New[0][0];new++)//Цикл по массиву ..
        {                                 //..новых ордеров
         //------------------------------------------------------ 6 --
         if ( Mas_Ord_Old[ old][4]== Mas_Ord_New[new][4])// Совпал номер 
           {                              // Тип ордера стал ..
            if ( Mas_Ord_New[new][6]!= Mas_Ord_Old[ old][6])//.. другим
               Inform(7, Mas_Ord_New[new][4]);// Сообщение: преобраз.:)
            Conc_Nom_Ord=true;            // Ордер найден, ..
            break;                        // ..значит выходим из ..
           }                              // .. внутреннего цикла
         //------------------------------------------------------ 7 --
                                          // Не совпал номер ордера
         if ( Mas_Ord_Old[ old][7]>0 &&     // MagicNumber есть, совпал
            Mas_Ord_Old[ old][7]== Mas_Ord_New[new][7])//.. со старым
           {               //значит он переоткрыт или частично закрыт
                                             // Если лоты совпадают,.. 
            if ( Mas_Ord_Old[ old][5]== Mas_Ord_New[new][5])
               Inform(8, Mas_Ord_Old[ old][4]);// ..то переоткрытие
            else                             // А иначе это было.. 
               Inform(9, Mas_Ord_Old[ old][4]);// ..частичное закрытие
            Conc_Nom_Ord=true;               // Ордер найден, ..
            break;                           // ..значит выходим из ..
           }                                 // .. внутреннего цикла
        }
      //--------------------------------------------------------- 8 --
      if ( Conc_Nom_Ord==false)               // Если мы сюда дошли,..
        {                                    // ..то ордера нет:(
         if ( Mas_Ord_Old[ old][6]==0)
            Inform(1, Mas_Ord_Old[ old][4]);  // Ордер Buy закрыт
         if ( Mas_Ord_Old[ old][6]==1)
            Inform(2, Mas_Ord_Old[ old][4]);  // Ордер Sell закрыт
         if ( Mas_Ord_Old[ old][6]> 1)
            Inform(3, Mas_Ord_Old[ old][4]);  // Отложен. ордер удалён
        }
     }
//--------------------------------------------------------------- 9 --
   // Поиск новых ордеров 
   for(new=1; new<= Mas_Ord_New[0][0]; new++)// По массиву новых орд.
     {
      if ( Mas_Ord_New[new][8]>0)            //Это не новый,а переоткр
         continue;                          //..или частично закрытый
      Conc_Nom_Ord=false;                   // Пока совпадения нет
      for( old=1; old<= Mas_Ord_Old[0][0]; old++)// Поищем этот ордерок 
        {                                   // ..в массиве старых
         if ( Mas_Ord_New[new][4]== Mas_Ord_Old[ old][4])//Совпал номер..
           {                                          //.. ордера
            Conc_Nom_Ord=true;              // Ордер найден, ..
            break;                          // ..значит выходим из ..
           }                                // .. внутреннего цикла
        }
      if ( Conc_Nom_Ord==false)              // Если совпадения нет,..
        {                                   // ..то ордер новый :)
         if ( Mas_Ord_New[new][6]==0)
            Inform(4, Mas_Ord_New[new][4]); // Ордер Buy открыт
         if ( Mas_Ord_New[new][6]==1)
            Inform(5, Mas_Ord_New[new][4]); // Ордер Sell открыт
         if ( Mas_Ord_New[new][6]> 1)
            Inform(6, Mas_Ord_New[new][4]); // Установлен отлож.ордер
        }
     }
//-------------------------------------------------------------- 10 --
   return;
  }
//-------------------------------------------------------------- 11 --
 
Dmido >> :

Es ist im Wesentlichen dasselbe wie im Lehrgang. Alle Aufrufe kommen aus Include-Dateien.

Hier ein Beispiel

Das Inform wird verdammt oft aufgerufen, aber es ist schwer zu erkennen, wie es angezeigt wird.... wo die Nachrichten hingehen(

 
Ich verstehe, dass Sie auch die Funktion Criterion() aus dem Beispiel haben? Warten Sie dann, bis die Kriterien für die Eröffnung einer Position gemäß der im Tutorial beschriebenen Strategie ausgelöst wurden - und dann werden Sie sehen, wie die Funktion Inform() funktioniert. Oder öffnen Sie es manuell über die entsprechende Schaltfläche auf dem Terminal - das sollte auch funktionieren...
 
Nein, ich habe meine Criterion) gab es Sinn in der Ausführung es alle, aber es hat nicht funktioniert, auch mit der ersten (jetzt ist es schwer, alles zurück zu schreiben, aber Criterion sendet Eröffnung Aufträge, Geschäfte öffnen, Ereignisse passieren, aber es gibt 0 Nachrichten in der Ausgabe ...
Grund der Beschwerde: