Frage zu objectget und objectgetvaluebyshift - Seite 2

 
honest_knave:

Hallo, bitte verwenden Sie die SRC-Taste, wenn Sie Code posten.

Der gesamte Code in Gelb befindet sich AUSSERHALB der 'for'-Schleife.

Der Wert von "name" ist also immer der Name des endgültigen Objekts.


Versuchen Sie vielleicht Folgendes (vorausgesetzt, price1 und price2 sind bereits an anderer Stelle deklariert):

Vielen Dank für Ihre Hilfe. Wie druckt man, um den Preis1... im Journal zu sehen, um sicherzustellen, dass es funktioniert.
 
Rajakumar1:
Vielen Dank für Ihre Hilfe. Wie zu drucken, um den Preis zu sehen1... in das Journal, um sicherzustellen, dass es funktioniert.
Auf die gleiche Weise drucken Sie den Namen...
int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
         Print("price1: ", price1);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
         Print("price2: ", price2);
        }
     }
 
honest_knave:
Auf die gleiche Weise, wie Sie den Namen drucken...
Danke! Ich habe den Druckbefehl im EA. Er wird aber nicht im Journal gedruckt. Wo wird die Ausgabe gedruckt?
 
Rajakumar1:
Ich danke Ihnen. Ich habe den Druckbefehl im EA. Er wird aber nicht im Journal gedruckt. Wo wird die Ausgabe gedruckt?

Experten (Registerkarte links neben Journal)
 
honest_knave:

Experten (Registerkarte links neben Journal)
Ich habe einen Indikator, der Trendlinien zeichnet. Der EA basiert auf den Trendlinien, die der Indikator zeichnet. Gibt es eine Möglichkeit zu überprüfen, warum die Werte nicht gedruckt werden? Ich hänge die Dateien an. Es tut mir leid, Sie zu stören. Vielen Dank für Ihre Hilfe.
 
Rajakumar1:
Ich habe einen Indikator, der Trendlinien zeichnet. Der EA basiert auf den Trendlinien, die der Indikator zeichnet. Gibt es eine Möglichkeit zu überprüfen, warum die Werte nicht gedruckt werden? Ich hänge die Dateien an. Es tut mir leid, Sie zu stören. Vielen Dank für Ihre Hilfe.


Sie müssen Ihren Code durchgehen und an verschiedenen Stellen Print-Anweisungen hinzufügen.

Auf diese Weise können Sie Ihr Problem aufspüren.

Sie müssen nach Funktionen suchen, die nicht aufgerufen werden, oder nach unerwarteten Werten von Variablen.

Das wird einige Zeit in Anspruch nehmen, aber das ist etwas, das Sie selbst tun können.

Ich habe zum Beispiel einen EA mit einer Variablen, die bei jedem Tick um 1 steigt.

Ich weiß nicht, warum die Variable manchmal auf 0 zurückgesetzt wird.


#property strict

int myVariable;

int OnInit()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
   EventSetTimer(5);
   return(INIT_SUCCEEDED);
  }

void OnTimer()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }

void OnTick()
  {
   myVariable++;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }


Und die Ausgabe:




Ich kann sehen, dass die Variable myVariable bei jedem Tick um 1 steigt, aber OnTimer() setzt sie wieder auf Null zurück.

Ich weiß jetzt, wo das Problem liegt.

----

Oder Sie können versuchen, die in MetaEditor eingebaute Debug-Funktion zu verwenden, obwohl einige Benutzer Probleme damit gemeldet haben... YMMV

 
honest_knave:


Sie müssen Ihren Code durchgehen und an verschiedenen Stellen Print-Anweisungen hinzufügen.

Auf diese Weise können Sie Ihr Problem aufspüren.

Sie müssen nach Funktionen suchen, die nicht aufgerufen werden, oder nach unerwarteten Werten von Variablen.

Das wird einige Zeit in Anspruch nehmen, aber das ist etwas, das Sie selbst tun können.

Ich habe zum Beispiel einen EA mit einer Variablen, die sich bei jedem Tick um 1 erhöht.

Ich weiß nicht, warum die Variable manchmal wieder auf 0 zurückgesetzt wird.



Und die Ausgabe:

Danke! Soll ich die Dateien löschen?



Ich kann sehen, dass die myVariable bei jedem Tick um 1 steigt, aber OnTimer() setzt sie wieder auf Null zurück.

Ich weiß jetzt, wo das Problem liegt.

----

Oder Sie können versuchen, die in MetaEditor eingebaute Debug-Funktion zu verwenden, obwohl einige Benutzer Probleme damit gemeldet haben... YMMV

 
Rajakumar1:
Danke! Soll ich die Dateien löschen.
 
Rajakumar1:
Danke! Soll ich die Dateien löschen.


Das ist Ihre Entscheidung - es sind fast 800 Zeilen Code zwischen diesen 2 Indikatoren... vielleicht hat jemand die Zeit, sie für Sie durchzugehen.

Aber vielleicht kommen Sie schneller zu einer Lösung, wenn Sie das Problem zunächst selbst eingrenzen.

Viel Glück!


 
honest_knave:


Das ist Ihre Entscheidung - es sind fast 800 Zeilen Code zwischen diesen 2 Indikatoren... vielleicht hat jemand die Zeit, sie für Sie durchzugehen.

Möglicherweise erhalten Sie aber eine schnellere Lösung, wenn Sie das Problem zunächst selbst eingrenzen.

Viel Glück!


Vielen Dank für Ihre Hilfe. Gibt es einen Bereich, in dem ich zuerst suchen sollte? Der Meta-Editor zeigt nur Warnungen an. Keine Fehler.