Fehler, Irrtümer, Fragen - Seite 2751

 
Igor Makanu:

Es ist irgendwie paradox, dass es einen Zugang zu _Symbol .... gibt. aber keinen Zugang zu

const MqlTick _Tick; // Текущий _Symbol-тик.

obwohl MQL als Sprache für die Entwicklung von Handelsstrategien positioniert ist

_Symbol ist eine Konstante, deshalb gibt es kein Problem damit (obwohl es korrekter ist , Symbol() aufzurufen). Ein Häkchen ist eine Variable. Wie stellen Sie sich vor, dass sie als const deklariert ist, aber ihr Wert sich ändert?

 
Alexey Navoykov:

Wie kommt es, dass Sie es als const deklariert haben, aber sein Wert ändert sich.

Leider bin ich genau wie du... Derselbe Idealist, für den es logischer und verständlicher ist, in VS C# zu schreiben - dort erlaubt der Compiler nicht, ein logisches Konzept von Konstanten von der Maschinenprüfung von C++ vor der Kompilierung zu trennen

hat nicht gezögert, Fragen zu stellen

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412


der Punkt ist - es ist alles logisch in C++ ;)

 
Alexey Navoykov:

_Symbol ist eine Konstante, so dass es keine Probleme gibt(obwohl es korrekter ist , Symbol() aufzurufen).

Was ist falsch daran, sie für einen Benutzer zu schreiben?

const string _Symbol = ::Symbol();

Und ein Tick ist eine Variable - wie stellen Sie sich vor, dass sie als konstant deklariert ist, ihr Wert sich aber ändert.

Bid/Ask in MT4. Natürlich gibt es RefreshRates().


Vor kurzem habe ich ein Symbol entdeckt, bei dem die Ziffern falsch eingestellt waren. Ich habe meinen Makler gebeten, dies zu korrigieren. Er hat es spontan gemacht. Es wurde nicht überprüft, ob der Wert der Variablen _Digits und Digits() geändert wurde. Aber allein die Tatsache, dass das Symbol seine Werte im Handumdrehen ändern kann.

 
Liebe Entwickler, ist es möglich, das Diagrammfenster wie andere Fenster aussehen zu lassen, wie in WIN 10? Alternativ besteht die Möglichkeit, den Rahmen des Diagrammfensters und des Terminals im Allgemeinen mit schwarzer Farbe zu streichen.
Das hängt zum Beispiel von der Farbgestaltung ab. Breite weiße Rahmen auf schwarzen Karten sind lästig, irritierend und verhindern, dass man reich wird. Bitte!!!
 
Igor Makanu:

Leider bin ich genau wie du... Ich bin derselbe Idealist, der es logischer und verständlicher findet, in VS C# zu schreiben - der Compiler dort erlaubt es nicht, den logischen Begriff der Konstante von der Maschinenprüfung von C++ vor der Kompilierung zu trennen

hat nicht gezögert, Fragen zu stellen

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412

Im ersten Fall handelt es sich um eine statische Variable, nicht um ein Klassenmitglied, so dass die Konstante nichts damit zu tun hat.

 
Alexey Navoykov:

Sie brauchen diese *** nicht. _Symbol ist eine Konstante, also gibt es kein Problem damit (obwohl es korrekter ist , Symbol() aufzurufen). Ein Tick ist eine Variable. Wie stellen Sie sich vor, dass sie als const deklariert ist, aber ihr Wert sich ändert.

Sie verwechseln Konstanz auf der MMS-Seite und auf der Kernel-Seite. Das Wesentliche bei der Deklaration einer Struktur mit dem const-Modifikator ist, dass der MQL-Code sie nicht verändern kann. In Analogie dazu kann man eine Methode der Klasse const beschreiben, die verhindert, dass sich das Objekt in dieser Methode verändert, was aber nicht bedeutet, dass das Objekt selbst seinen Zustand nicht durch andere Bedingungen verändern kann.

 

Warum kann ich die globalen Terminalvariablen im visuellen Modus des Testers nicht sehen (natürlich emuliert)?

Funktionieren globale Terminalvariablen im Tester überhaupt?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Andrey Dik:

Warum kann ich die globalen Terminalvariablen im visuellen Modus des Testers nicht sehen (natürlich emuliert)?

Funktionieren globale Terminalvariablen im Tester überhaupt?

Das war schon immer möglich (F3). Sie funktionieren.

 
Alexey Navoykov:

Im ersten Fall ändern Sie eine statische Variable, nicht ein Mitglied einer Klasse, so dass die Konstante damit nichts zu tun hat.

Soll dieses Skript sum = 0 zurückgeben?

oder sollte dieses Skript sogar einen Kompilierungsfehler zurückgeben?

void OnStart()
{
   int sum = 0;
   for(int i = 0; i < 3 ; i++)
   {
      const int j = f(i);
      sum += j * i;
   }
   printf("sum = %i", sum);
}
//+------------------------------------------------------------------+
int f(int v)
{
   return(v);
}
//+------------------------------------------------------------------+
 
Igor Makanu:

Soll das Skript sum = 0 zurückgeben?

Oder sollte dieses Skript sogar einen Kompilierfehler zurückgeben?

Führen Sie wenigstens einen Debugger aus, bevor Sie lächerliche Anweisungen schreiben.
In der zweiten Schleife ist i == 1 und j == 1, und in der dritten Schleife usw. sind beide um eins größer.