Fehler, Irrtümer, Fragen - Seite 2798

 
Alexey Viktorov:

Ich frage mich, ob Sie sich die Dokumentation angesehen haben oder nur die Funktionsbeschreibung aus meinem Beitrag übernommen haben.

Ich vermute, dass Sie nur grafische Objekte haben, die einen Trend aufweisen. Wenn ja, warum brauchen Sie ein Präfix? Es gibt auch eine Löschung nach Objekttyp

Sie brauchen also nichts am Projekt zu ändern, sondern schreiben einfach

)))))))))))))

Natürlich habe ich mir die Dokumentation angesehen. Und ja, alles ist möglich! Aber ich habe das getan... Und was ist, wenn es nicht funktioniert oder irgendwie im Weg ist...?

Und bei dem Projekt ist es noch komplizierter als das. Wie ich bereits sagte...
 
Artyom Trishkin:

Dies ist nur ein Sonderfall. Die Vorsilbe ist allgemein und universell. Das Entfernen aller Trendlinien betrifft auch Objekte, die nicht zum Programm gehören.

Einverstanden. chart_id: 0 (aktuelles Diagramm). Das bedeutet, dass nur dieses Diagramm davon betroffen sein wird. Und wenn es noch andere Programme gibt, können Sie an jeden Objektnamen eine ID anhängen undObjectsDeleteAllmit einem entsprechenden Präfixaufrufen, so dass die Funktion nicht durcheinander kommt.Deshalb habe ich in den obigen Beiträgen gesagt, dass die Benennung von Objekten kompliziert ist und ich nachdenken muss, bevor ich diese Funktion verwende. Aber Alexey hat mich beleidigt, auch seinen Freund... Vergeblich!

 
Mihail Matkovskij:

Warum ist das so? chart_id: 0 (aktuelles Diagramm). Es ist also nur auf dieser Karte zu sehen. Und wenn es andere Programme gibt, dann gibt es auch so einen Begriff wie ID. Wenn sie zu jedem Objektnamen hinzugefügt wird, kann die Funktion ObjectsDeleteAll nichts durcheinander bringen. Deshalb habe ich in meinen obigen Beiträgen gesagt, dass die Benennung von Objekten kompliziert ist und ich darüber nachdenken musste, bevor ich diese Funktion benutzte. Aber Alexey hat mich beleidigt, auch seinen Freund... Vergeblich!

Denken Sie nach, bevor Sie antworten :)

Die ID, die im Namen des Objekts steht, ist eine Art Präfix, mit dem Objekte identifiziert und aus dem Programm entfernt werden können.

Und jetzt schauen Sie sich den Code, den ich schrieb meine Antwort auf Alexei, und wie sein Code wird nur die Objekte, die Sie brauchen, die NICHT über eine ID zu löschen, und wird auf der Karte "alien" Objekte, die nicht zum Programm gehören zu verlassen?

Meine Antwort auf diesen Code war Alexey mit einer solchen Nachricht von Alexey:

Dementsprechend sollten Sie nichts am Projekt ändern, sondern einfach schreiben

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Artyom Trishkin:

Denken Sie nach, bevor Sie antworten :)

ID, geschrieben in den Namen des Objekts - es ist eine Art Präfix, durch die Identifizierung von denen die Objekte des Programms entfernt werden.

Schauen Sie sich nun den Code an, den ich als Antwort auf Alexej geschrieben habe, und wie sein Code nur die Objekte löscht, die Sie brauchen und die NICHT mit einer ID versehen sind, und "fremde" Objekte, die nicht zum Programm gehören, in der Tabelle zurücklässt?

Meine Antwort an Alexey bezog sich auf diesen Code mit einer solchen Nachricht von Alexey:

Bearbeitet. Sie haben richtig geantwortet. Ich war es, der ein bisschen Mist gebaut hat. Ich wollte noch etwas anderes sagen.

 
Mihail Matkovskij:

Aber Alexej hat mich beleidigt...

Du verstehst es nicht... Ich bin für Gerechtigkeit. Man sollte seine Fehler nicht preisgeben, und jeder hat sie, auch ich, wegen der Fehler des Terminals.

Es gibt ein aktuelles Beispiel: Vor einiger Zeit war ich froh, ein solches Gimmick zu verwenden, Rechtsklick auf eine Variable, "Gehe zur Definition" und um zur gleichen Variable zurückzukehren, drückte ich die "Zurück"-Taste auf der Ratte. Aber heute habe ich festgestellt, dass es nicht mehr funktioniert. Was ist der Grund dafür? Gestern habe ich auf 2530 aktualisiert... Ich habe sogar ein paar Schimpfwörter benutzt, aber plötzlich fiel mir ein, dass ich auch die Obergrenze ändern musste. Ich habe ME 2474 und oops..................... geöffnet und es funktioniert nicht. Was wäre, wenn ich eine Textnachricht in meinem Kopf hätte, in der ich alles aufschreibe, was ich über die Entwickler denke? Wie würde das aussehen?

Ich meine damit, dass Sie sich nicht beeilen sollten, bevor Sie über Fehler schreiben, sondern nach Fehlern in Ihrem Code suchen sollten.

 
Alexey Viktorov:

Du wirst nicht... Ich bin für Gerechtigkeit. Stellen Sie Ihre Fehler nicht bloß, und jeder hat sie, und ich auch, wegen der Fehler des Terminals.

Wer stellt es aus?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368. Ich hoffe, Sie haben ihndiesmal sorgfältig gelesen...? Wie oft muss ich es Ihnen noch sagen, bis Siees endlich kapieren und aufhören, hier Unsinn zu schreiben?

 
Mihail Matkovskij:

Wer stellt sie auf?https://www.mql5.com/ru/forum/1111/page2795#comment_17290368. Ich hoffe, Sie haben ihn diesesMal sorgfältig gelesen...? Wie oft muss ich es dir noch sagen, damit dues endlichkapierst und hier keinen Unsinn mehr schreibst?!

Ich bin für Fairness.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Mihail Matkovskij, 2020.07.11 14:47

Ich habe einen Quellcode erstellt, in dem dieser Fehler auftritt:
//+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int      nBars = 100000;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
//--- indicator buffers mapping
  int totalBars = iBars(NULL, PERIOD_CURRENT);
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
) {
  CChartObjectTrend * trend;
  int delta = rates_total - customN_Bars;
  int shift;
  int i;
  for(i = 0; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1;
    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
  }
  return(rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
  
  CChartObjectTrend * trend;
  
  int i = listOfTrendLines.Total() - 1;
  for(; i >= 0; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
    if(CheckPointer(trend) == POINTER_INVALID)
      continue;
    
    delete trend;
  }
}
//+------------------------------------------------------------------+

Aktionen zur Demonstration des Fehlers.

Werfen Sie den Indikator auf das Diagramm.

2. Entfernen Sie den Indikator aus dem Diagramm.

3. Drücken Sie Strg+B, klicken Sie dann im Fenster auf "Alles auflisten" und sehen Sie die Objekte, die nicht entfernt wurden.

Objekte

Bei mir sind es 294 von 100000.

Wenn Sie den Wert des Eingabeparameters nBars verringern, tritt der Fehler nicht auf.


 
Alexey Viktorov:

Ich bin für Fairness.



In dem Beitrag wurde also nicht gesagt, welcher Fehler es war, mein Programm oder der Terminalfehler. Ich dachte, es sei ein Terminalfehler. Aber Rashid Umarov hat mir alles erklärt und ich habe ihn verstanden. Für mich war alles sehr klar. Es gab keinen Terminalfehler, ich lag mit meinen Annahmen falsch. Sie verfolgen mich mit einer Art manischer Begeisterung. Ich habe Sie nach dem Grund gefragt, und Sie haben ihn mir genannt:

Du hättest schon lange die Klappe gehalten und ich hätte nicht weitergemacht.

Das ist der Grund...

Hören Sie endlich mit diesem Unsinn auf! Ein Erwachsener (hoffe ich)...

 
Mihail Matkovskij:

In der Meldung stand also nicht, welcher Fehler es war, mein Programm oder der Fehler des Terminals. Ich dachte, es sei ein Terminalfehler. Aber Rashid Umarov hat mir alles erklärt und ich habe ihn verstanden. Für mich war alles sehr klar. Es gab keinen Terminalfehler, ich lag mit meinen Annahmen falsch. Sie verfolgen mich mit einer Art manischer Begeisterung. Ich habe Sie nach dem Grund gefragt, und Sie haben ihn mir genannt:

Das ist der Grund...

Hören Sie endlich mit diesem Unsinn auf! Ein Erwachsener, hoffe ich...

Also gut. In einem Tumbleweed habe ich meine Schuhe gewechselt. Berichtet es als ein terminaler Fehler und ............ Sie leben Ihr Leben, wie Sie es kennen.

 
Anschluss der Lagereinrichtung

https://storage.mql5.io ist es nicht möglich, sich anzumelden.