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

 

Ist es möglich, ein Ccanvas-Objekt zu duplizieren?


Ich erstelle ein Objekt mit Ccanvas und muss dabei Duplikate erstellen. Manchmal 10-20 und manchmal 100-200.

Einmal wird das Objekt definitiv gezeichnet. Gibt es eine Möglichkeit, sie zu duplizieren?

 
Sergey Likho:

Ist es möglich, ein Ccanvas-Objekt zu duplizieren?


Ich erstelle ein Objekt mit Ccanvas und muss dabei Duplikate erstellen. Manchmal 10-20 und manchmal 100-200.

Einmal wird das Objekt definitiv gezeichnet. Gibt es eine Möglichkeit, sie zu duplizieren?

CCanvas *canv = new CCanvas
Es handelt sich dabei jedoch nicht um eine Duplizierung einer bereits bestehenden Maßnahme. Es wird eine neue Datei und ein Zeiger auf diese Datei erstellt.
 
Artyom Trishkin:
CCanvas *canv = new CCanvad

Ich meinte ein grafisches Objekt.

   CCanvas obj;
   obj.CreateBitmapLabel(0,1,name,x,y,x_size,y_size,COLOR_FORMAT_ARGB_NORMALIZE);
   obj.FillRectangle(0,0,x_size,y_size,ColorToARGB(Color,Alpha));
   obj.Update(false);


Как сделать 10 копий с измененными координатами?
 
Sergey Likho:

Ich meinte ein grafisches Objekt.

Ich habe es Ihnen gezeigt. Wenn Sie vorher nicht wissen, wie viele Objekte erstellt werden müssen, können Sie dies nur mit new.
Wenn die Zahl bekannt ist, dann
obj1, obj2, obj3,...,objN
 
Igor Makanu:

Ich könnte mich irren, aber Ihr Link wird der Thread des Autors sein, aber Sie müssen den ganzen Thread durchblättern, Igor scheint etwas rohe Codes gepostet zu haben, und dann manchmal umgeschrieben, was verbessert werden musste, obwohl ich mich wieder irren könnte - ich habe diesen Thread vor etwa 5-6 Jahren durchgeblättert, ich erinnere mich nicht mehr

Sie irren sich nicht. Habe kürzlich den gesamten Thread des Autors durchgeblättert. Ich habe etwa 2-3 Tage gebraucht. Im Thema des Autors im Hinblick auf die Ferne des Schreibens einige seiner Funktionen sind nicht mehr relevant (oder so schien es mir).Lesen Sie absolut alles und hochaktuell und irrelevant wenig. Und wie Sie bemerkt haben, gab es Fehler, die nach 2-3 oder sogar mehr Seiten auftauchten, wenn sich jemand entschloss, seine Funktion zu nutzen, den Fehler zu finden und ihn entweder zu korrigieren und einfach zu sagen, dass es einen Fehler gab, oder einfach darauf hinzuweisen. So kann es sein, dass auch 10 Seiten später dieselbe Funktion wieder auftaucht, entweder korrigiert oder verbessert (die Zeit ist vergangen und er wollte sie verbessern).

Wenn also jemand nur das wichtigste und relevanteste Thema herausgegriffen hat, kann man sich nur bedanken und eine Menge Zeit sparen.

 
Wie kann ich einen Zeiger auf eine Funktion als Parameter übergeben (d. h. eine Funktion schreiben, die einen Zeiger auf eine Funktion als Argument akzeptiert)? Ich habe das schon einmal in mql4 gemacht, aber ich habe eine Kopie der Datei verloren, in der dieses Beispiel stand.
 
Seric29:
Wie kann man einen Zeiger auf eine Funktion (die Funktion nimmt einen Zeiger auf die Funktion als Argument) als Parameter übergeben? Ich habe es schon einmal mit mql4 gemacht, aber ich habe eine Kopie der Beispieldatei verloren.

Hat MQL jemals Funktionszeiger unterstützt? Das glaube ich nicht. Eine Lösung besteht darin, die Funktion in eine Klasse zu verpacken und den Zeiger an das Objekt zu übergeben.

 
Sergey Popov:

Hallo zusammen!

Ich möchte eine Funktion in meinen EA schreiben, die den Handel in den ersten 2 Stunden nach Handelsbeginn verbietet.

Aber ich bin mit der Tatsache konfrontiert, dass iTime(Symbol(),1440, 0) nicht korrekt die Eröffnungszeit der Tageskerze zurückgibt.

Genauer gesagt: Am 26.12.2019 öffnete der Markt um 06:00:00, aber iTime bestimmt 00:00:00.

Wie berechne ich die genaue Öffnungszeit des Tages?

SymbolInfoSessionTrade hilft mir, die Handelszeit herauszufinden. Ich weiß nicht, ob es Änderungen für Weihnachten und andere Feiertage gibt.

 
Aleksey Mavrin:

Hat MQL jemals Funktionszeiger unterstützt? Das glaube ich nicht. Eine Lösung besteht darin, die Funktion in eine Klasse zu verpacken und einen Zeiger auf das Objekt zu übergeben.

Das tut sie. Dies geschieht mit dem typedif-Spezifizierer read help, aber das Schema unterscheidet sich von C++. Ich habe ein Forum gefunden, in dem ein Mann diesen Code geschrieben hat, aber ich habe die Datei nicht gespeichert und das System neu gestartet, natürlich wurde die Datei gelöscht. Aber die Hilfe zeigt ein einfaches Beispiel und ich hatte ein Beispiel, nach dem ich fragte.

 
Aleksey Mavrin:

Hat MQL jemals Funktionszeiger unterstützt? Das glaube ich nicht. Eine Lösung besteht darin, die Funktion in eine Klasse zu verpacken und den Zeiger an das Objekt zu übergeben.

Sie können, Code zu reproduzieren:

#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
typedef void(*TFuncvoidPTR)(void);
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   TFuncvoidPTR f_ptr[3];
   f_ptr[0] = f_1;
   f_ptr[1] = f_2;
   f_ptr[2] = f_3;
   for(int i=0;i<ArraySize(f_ptr);i++)
   {
      printf("Вызываю фунцию № %i ",i);
      f_ptr[i]();
   }

}
//+------------------------------------------------------------------+
void f_1() {Print("Это вызов функции : ",__FUNCTION__);}
void f_2() {Print("Это вызов функции : ",__FUNCTION__);}
void f_3() {Print("Это вызов функции : ",__FUNCTION__);}

2019.12.30 18:30:55.518 Script tst EURUSD,H1: entfernt

2019.12.30 18:30:55.511 tst EURUSD,H1: uninit Grund 0

2019.12.30 18:30:55.511 tst EURUSD,H1: Dies ist ein Funktionsaufruf: f_3

2019.12.30 18:30:55.511 tst EURUSD,H1: Aufruf der Funktion Nummer 2

2019.12.30 18:30:55.511 tst EURUSD,H1: Dies ist der Aufruf der Funktion : f_2

2019.12.30 18:30:55.511 tst EURUSD,H1: Aufruf der Funktion #1

2019.12.30 18:30:55.511 tst EURUSD,H1: Dies ist der Aufruf der Funktion : f_1

2019.12.30 18:30:55.511 tst EURUSD,H1: Aufruf der Funktion Nr. 0

2019.12.30 18:30:55.511 tst EURUSD,H1: initialisiert

2019.12.30 18:30:55.496 Script tst EURUSD,H1: erfolgreich geladen