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

 
leonerd:


Wie gehe ich durch alle Diagramm-IDs im Terminal? current_chart_id in meinem Code ist 1662429437, first_chart_id ist 1859831371. ChartNext() gibt bereits -1 zurück. Was also ist ChartFirst()?

Was bedeutet das zuerst? Zuerst geöffnet? Warum ist seine ID größer als die des aktuellen Diagramms (das übrigens später geöffnet wurde)?

Offenbar liegt es an der Konvertierung long -> int.

 
Artyom Trishkin:

Danke, ja, das war früher so.

 
Wer weiß, wie man for while-Schleifen usw. erstellt? Ich würde gerne eine Schleife mit meiner Technologie erstellen, was kann ich lernen?
 
leonerd:

Offenbar liegt es an der Konvertierung long -> int.

Es gibt keine solche Logik, siehe Beispiel in der Hilfehttps://www.mql5.com/ru/docs/chart_operations/chartnext

Chart-ID-Nummern haben keine Logik in ihrer Bildung, vielleicht sind sie Windows-Handles oder einige andere Zahlen, um durch alle Chart-IDs im Terminal zu suchen, ist das Beispiel aus der Hilfe genug, ich habe in kodobase Indikator, der zweite TF baut gepostet, habe ich ein Beispiel aus der Hilfe - alles funktioniert wie am Schnürchen - ich finde meine benutzerdefinierte Chart - ich erinnere mich an seine Chart-ID und erzeugen Ticks auf sie


Seric29:
Wer weiß, wie Schleifen für while usw. erstellt werden? Ich würde gerne eine Schleife mit meiner Technologie erstellen, was kann ich lernen?

hmm, sehen Sie Ihre Frage für ein paar Tage, welche Antwort wollen Sie hören? - Dies sind Sprachoperatoren, die so funktionieren, wie sie von den Entwicklern definiert wurden, und dies ist in der Hilfe angegeben. In keiner Programmiersprache werden Sprachoperatoren "so wie sie sind" beschrieben - Sprachoperatoren werden immer "so wie sie sind" bereitgestellt - nicht mehr und nicht weniger

hier sind die Operatoren der Sprache MQL4https://docs.mql4.com/ru/basis/operators- sie sind "einfach so" - das istdie Grundlage jeder Programmiersprache

 
Igor Makanu:

hmm, mehrere Tage sehe ich Ihre Frage, und welche Antwort wollen Sie hören? - dies sind Sprachoperatoren, sie funktionieren so, wie sie von den Entwicklern definiert wurden, was in der Hilfe angegeben ist, Sprachoperatoren werden in keiner Programmiersprache "wie arrangiert" beschrieben - Sprachoperatoren werden immer "wie sie sind" bereitgestellt - nicht mehr und nicht weniger

hier sind die Operatoren der Sprache MQL4https://docs.mql4.com/ru/basis/operators- sie sind "einfach so" - das ist die Grundlage jeder Programmiersprache

Es ist also schlecht, dass sie nicht beschrieben werden, dass die Hälfte der notwendigen Informationen versteckt ist. Mich interessiert, wie sie strukturiert sind. Ich möchte meine eigenen Schleifen zu erstellen, und wie sich herausstellte, gibt es mindestens 3 Schleifen in mql, die in C++ und Pascal existieren, und diese Schleifen könnte auch die Arbeit zu erleichtern, um die Anzahl der Kontrollen und Initialisierung von unnötigen Flags und Variablen zu reduzieren, aber ich möchte meine eigenen zu schaffen, aber ich kann nicht verstehen, wie diese Iterationen auftreten, wie es in jedem Code-Block getan wird, können Sie eine Schleife und offene Klammern, die auch Code enthalten zu schreiben. Sehr interessant Jungs, wenn jemand was zu schreiben plz.

 
Seric29:

Außerdem hat mql, wie sich herausstellte, mindestens 3 Schleifen, die in C++ und Pascal sind

Ich habe an der Universität sowohl Pascal als auch C++ studiert, und es ist immer noch da:

C++ : for , while , do...while

Pascal : for , while , repeat

MQL: for , while , do...while

????


Seric29:

Es ist also schlecht, dass sie nicht beschrieben werden und die Hälfte der notwendigen Informationen versteckt wird. Ich frage mich, wie sie funktionieren.

Ich weiß nicht einmal, wie ich die Absurdität Ihrer Frage erklären soll, aber ich werde es trotzdem versuchen:

Sie: - "Ich lerne Russisch und muss wissen, wie das Alphabet funktioniert".

I: "Das Alphabet hat keine Struktur, es sind nur Buchstaben, und sie bilden Wörter"(in MQL gibt es etwa ein Dutzend Operatoren und sie bilden das Programm)https://docs.mql4.com/ru/basis/operators

Sie: "Nein! Ich weiß, dass die Buchstaben des Alphabets in Simbabwe viele Dinge bedeuten!"

Ich: "Leider kenne ich die Sprache nicht, aber im Russischen bedeutet ein Buchstabe einfach nur, dass es ein Buchstabe ist, man kann natürlich eine phonetische Analyse machen, aber das ändert nichts daran, dass ein Buchstabe ein elementarer Bestandteil des Wortes ist.

Du sagst: "Hmm, seltsam, aber wenn du in Simbabwe 'a' sagst, ist das ein Buchstabe, und wenn du 'A' sagst, bedeutet das Frieden für dein Haus, und wenn du 'aaaaaaah!' sagst." - bedeutet das, dass ich den größten Pimmel habe!" - Es ist unmöglich, dass Sie nicht sehen können, wie die Buchstaben in der russischen Sprache angeordnet sind! - Es gibt eine versteckte Technologie in ....


Nun, so sehe ich unseren Dialog, entschuldigen Sie mein Englisch - ich kann es nicht anders ausdrücken.

)))

 
Igor Makanu:

eine solche Logik gibt es nicht, siehe das Hilfebeispielhttps://www.mql5.com/ru/docs/chart_operations/chartnext

Chart ID Nummern haben keine Logik in ihrer Bildung, vielleicht sind sie Windows Handles oder andere Nummern. Um nach allen Chart IDs im Terminal zu suchen, reicht das Beispiel aus der Hilfe, ich habe einen Indikator für den Aufbau von sec-tFs in kodobase verwendet.

ChartFirst() gibt die kleinste ID des geöffneten Charts zurück?

 
leonerd:

ChartFirst() gibt die kleinste ID aus den offenen Charts zurück?

wieder nein! - der numerische Wert von ChartFirst() macht keinen Sinn

PZS: ......Vielleicht ist das falsch, aber ich habe irgendwo gelesen, dass ChartFirst() die ID des Charts zurückgibt, der zuerst geöffnet wurde, und zwar nicht derjenige, der in Ihrer Chart-Sequenz an erster Stelle steht (Sie können ihn verschieben), sondern derjenige, der zuerst im Client-Terminal geöffnet wurde - nun, ich bin mir nicht sicher, ob ich damit richtig liege


ChartFirst() gibt Ihnen einen Ausgangspunkt, von dem aus Sie mit ChartNext() durch die Charts blättern können. Das sieht so aus: Holen Sie sich die erste ChartFirst()-ID - merken Sie sich den Wert und übertragen Sie diesen Wert an ChartNext() - und so weiter, bis sich der erste ChartFirst()-Wert wiederholt - was bedeutet, dass Sie durch alle möglichen Charts geblättert haben,

Hier ist der Code meines Indikators in KB - ich habe ihn in der Hilfe gefunden, überprüft und verwende ihn, um meinen Chart zu finden:

//+------------------------------------------------------------------+
//| поиск  идентификатора графика                                    |
//+------------------------------------------------------------------+
long CheckChart(string sym,int period,int &wh)
  {
   long result=0,id=ChartFirst();
   while(id>=0)
     {
      if(ChartSymbol(id)==sym && ChartPeriod(id)==period && ChartGetInteger(id,CHART_IS_OFFLINE))
        {
         result=id;
         ChartSetInteger(id,CHART_AUTOSCROLL,true);
         ChartSetInteger(id,CHART_SHIFT,true);
         ChartNavigate(id,CHART_END);
         ChartRedraw(id);
         wh=WindowHandle(sym,period);
         PrintFormat("Найдено окно графика: [%s,%d]",sym,period);
         break;
        }
      id=ChartNext(id);
     }
   return(result);
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

wieder nein! - Der numerische Wert von ChartFirst() ergibt keinen Sinn

SZY: ......vielleicht falsch, aber ich habe irgendwo gelesen, dass ChartFirst() die ID des Charts zurückgibt, der zuerst geöffnet wurde, nicht den ersten Chart in Ihrer Chart-Sequenz (Sie können ihn verschieben), sondern den, der zuerst im Client-Terminal geöffnet wurde - im Allgemeinen bin ich mir nicht sicher, ob ich damit richtig liege


ChartFirst() gibt Ihnen einen Ausgangspunkt, von dem aus Sie mit ChartNext() durch die Charts blättern können. Das sieht so aus: Holen Sie sich die erste ChartFirst()-ID - merken Sie sich den Wert und übertragen Sie diesen Wert an ChartNext() - und so weiter, bis sich der erste ChartFirst()-Wert wiederholt- was bedeutet, dass Sie durch alle möglichen Charts geblättert haben,

Hier ist der Code meines Indikators in KB - ich habe ihn in der Hilfe gefunden, überprüft und verwende ihn, um meinen Chart zu finden:

Seltsam. In der Hilfe steht nichts von "bis der erste ChartFirst()-Wert wiederholt wird". Am Ende der Diagrammliste wird -1 zurückgegeben.

Zurückgegebener Wert

Der Bezeichner der Karte. Wenn die Diagrammliste zu Ende ist, gibt die Funktion -1 zurück.

Документация по MQL5: Операции с графиками / ChartNext
Документация по MQL5: Операции с графиками / ChartNext
  • www.mql5.com
Операции с графиками / ChartNext - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Seltsam. In der Hilfe steht nichts von "bis der erste ChartFirst()-Wert wiederholt wird". Wenn die Diagrammliste endet, gibt sie -1 zurück.

Es tut mir leid - ich bin ein Sünder! Ich habe es nicht gelesen, ich war betrunken, als ich in diesem Forum schrieb!

Grund der Beschwerde: