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

 
Roman Sharanov:

Ich habe eine Variable in private

Ich versuche, damit in einer Klassenmethode zu arbeiten

sagt, dass die Variable nicht deklariert ist

???

Wo ist der Code?

 
Artyom Trishkin:

Wo ist der Code?

die Funktion darf nicht von externem Code zugänglich sein

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int var;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
 
Roman Sharanov:

Ich habe eine Variable in private

Ich versuche, damit in einer Klassenmethode zu arbeiten

sagt, dass die Variable nicht deklariert ist

???

Artyom Trishkin:

Aber das ist nicht richtig.

Wer verhindert die Verwendung eines dynamischen Arrays in Berechnungen? Die Größe eines dynamischen Arrays (wenn es sich NICHT um einen Indikatorpuffer handelt, der von einem Subsystem überwacht wird) müssen Sie selbst überwachen und gegebenenfalls die Größe ändern. Ein statisches Array hat immer eine feste Größe - es hängt nur von der jeweiligen Aufgabe ab.

Was ist das für ein ungerechtfertigter Unsinn? Die Indikatoren berechnen und zeigen in ihrer überwiegenden Mehrheit nur die erforderliche und ausreichende Menge an berechneten Daten an. Die ganze Zeit, auf Schritt und Tritt.

Was soll das heißen? Unwissenheit? Dann ist es besser zu schweigen. Dann werden die Leute sagen, sie hätten es im offiziellen MK-Forum gelesen. Erfinden Sie absichtlich eine Lüge?

Artem! Langweile mich nicht.

Niemand hindert Sie daran, ein dynamisches Array in Ihren Berechnungen zu verwenden.

Aber!!! Während der Berechnungen ist der Prozessor beschäftigt, und es wird nicht in das dynamische Array geschrieben.

Daher werden alle Daten, die während der Berechnungen in einem dynamischen Array ankommen, automatisch ignoriert. (Manchmal werden sie auch geschützt und in einen Puffer geschrieben).

Ich hoffe, das ist klar?

Aus diesem Grund werden alle Daten in dynamischen Arrays auf statische Arrays verteilt, damit keine Daten verloren gehen, während der Prozessor arbeitet.

Aus diesem Grund sollten alle Berechnungen in statischen Arrays durchgeführt werden!

Natürlich sollte die Größe von statischen Arrays "auf Reserve" gesetzt werden. Das ist offensichtlich.

Aber Sie können so lange damit rechnen, wie Sie wollen. Dabei wird nichts verloren gehen.

Ich hoffe, das ist für Sie klar?

 
Roman Sharanov:

die Funktion muss von externem Code unzugänglich sein

Wo befindet sich die öffentliche Methode für den Zugriff auf var?

Es geht ungefähr so:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int var;
public:
   int               Var(void)      const { return this.var; }
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
//+------------------------------------------------------------------+

Sie verwenden die Methode Var(), um var zu erhalten;

 
neverness:

Artem! Langweile mich nicht.

Niemand hindert Sie daran, ein dynamisches Array in Ihren Berechnungen zu verwenden.

Aber!!! Der Prozessor ist während der Berechnungen beschäftigt und es wird nicht in das dynamische Array geschrieben.

Daher werden alle Daten, die während der Berechnungen in einem dynamischen Array ankommen, automatisch ignoriert. (Manchmal werden sie auch geschützt und in einen Puffer geschrieben).

Ich hoffe, das ist klar?

Aus diesem Grund werden alle Daten in dynamischen Arrays auf statische Arrays verteilt, damit keine Daten verloren gehen, während der Prozessor arbeitet.

Aus diesem Grund sollten alle Berechnungen in statischen Arrays durchgeführt werden!

Natürlich sollte die Größe von statischen Arrays "auf Reserve" gesetzt werden. Das ist offensichtlich.

Aber Sie können so lange damit rechnen, wie Sie wollen. Dabei wird nichts verloren gehen.

Ich hoffe, das ist klar.

Blödsinn.

 
Artyom Trishkin:

Wo ist die öffentliche Methode für den Zugriff auf var?

Das geht so:

Verwenden Sie die Methode Var(), um var zu erhalten;

so wird es dann von externem Code zugänglich sein? Ich brauche diese Variablen nur innerhalb der Klasse gebraut

 
Roman Sharanov:

damit sie dann von externem Code aus zugänglich ist? Ich brauche diese Variablen nur innerhalb der Klasse

Wo ist diese Methode definiert?

//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Wo ist diese Methode definiert?

unten in der Klassendatei

 

Если говорить об индикаторах, то индикаторы (вообще говоря!) следует вычислять. Но в МТ4/МТ5 мы этого не наблюдаем!

Was ist das für ein unbegründeter Unsinn? Indikatoren tun in ihrer überwiegenden Mehrheit nichts anderes, als die notwendige und ausreichende Menge an berechneten Daten zu berechnen und anzuzeigen. Die ganze Zeit, auf Schritt und Tritt.

Was ist das für ein Unsinn? Aus Unwissenheit? Dann ist es besser zu schweigen. Dann werden die Leute sagen, sie hätten es im offiziellen MK-Forum gelesen. Erfinden Sie absichtlich eine Lüge?

Artem!

Gibt es statische Arrays in MT4/MT5-Indikatoren ?????????????????????

In welchem, würde ich gerne wissen?

Welche Art von Defekt? - Ich habe es Ihnen gleich gesagt - wenn es einen gibt, sagen Sie mir, wo?

Alle Indikatoren in MT4/MT5, die ich kenne, sind dynamisch.

Ja, die ganze Zeit über. Ja, bei jeder Zecke.

Es handelt sich jedoch um dynamische Arrays, nicht um statische.

Und hier gibt es keine "Störung".

 
Artyom Trishkin:

Blödsinn.

Nun, wenn es Unsinn ist, dann ist er erfahrungsgeprüft.

Nicht nur "theoretischer Blödsinn" !!!

- Wenn die Berechnungen recht lang sind, werden die Ticks nicht in das betreffende Datenfeld geschrieben.

DAS IST EINE TATSACHE!!!

Grund der Beschwerde: