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

 
Guten Tag zusammen. Ich bin kein sehr guter Programmierer, deshalb verstehe ich einige einfache Dinge nicht. Ich habe folgendes Problem: Ich muss unter den geschlossenen Aufträgen in meinem EA den letzten auswählen, der von SL geschlossen wurde.
 
Igor Makanu:

man darf einfache Aufgaben nicht verkomplizieren! ... sagte ich, der die neue Funktion zur Definition von Balken untätig in eine Klasse )))) verpackte.

auf den Punkt gebracht:


die Idee ist klar, aber es ist wahrscheinlich korrekter >=

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

die Idee ist klar, nur korrekter >= aller Voraussicht nach

nicht überprüft, unprint die Variablen sofort sehen, wenn durch 1 Fehler, dann entweder Ihre Version, oder nicht Null, und weisen Werte =1 zu Zähler timer1 und timer2

können Sie es auch auf diese Weise versuchen:


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

nicht überprüft, unpin die Variablen sofort sehen, ob durch 1 Fehler, dann entweder Ihre Version oder nicht Null, und weisen Werte =1 zu Zähler timer1 und timer2

Die Methode garantiert jedoch keineswegs eine bestimmte Periodizität. Die Ausführung von Code in einem Zeitgeber kann die Zeit des anderen Zeitgebers überschreiten.

 
leonerd:

Die Methode garantiert jedoch keineswegs eine bestimmte Periodizität. Die Codeausführung in einem Zeitgeber kann die Zeit eines anderen Zeitgebers überschreiten.

Wo kann man einen Echtzeit-Timer für Windows-Systeme erhalten? - Wenn das System überlastet ist, kommt es zu Verzögerungen.

in MQL - wenn Sie OnTick() mit komplexen Berechnungen überladen haben, dann wird das OnTimer()-Ereignis nicht stattfinden, bis es ausgeführt wird.

D.h., auch MT4 ist genug für komplexe Berechnungen, wenn nicht, dann MT5 - es funktioniert wirklich auf der Ebene von C++, aber die mangelnde Leistung ist in der Regel auf eine schlechte Berechnung Algorithmus - verwenden Sie den Profiler, nicht tun Berechnungen jeden Tick, wo es nichts zu berechnen, bis ein neuer Balken erscheint, nicht die gesamte Geschichte zu berechnen, wenn Sie Signale auf den letzten 1 bis 3 Bars verwenden - berechnen nur 100 Bars ... es gibt viele Varianten

HH: die Arbeit mit grafischen Objekten verlangsamt alles, die Arbeit mit Strings reduziert auch die Leistung - theoretisch, aber in letzter Zeit habe ich das nicht bemerkt, wie die Arbeit mit Zeitumwandlungsfunktionen - es ist definitiv im Profiler sichtbar, wo eine Menge Zeit verbracht wird - wir versuchen, dieses Codefragment weniger oft zu verwenden

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

und wo können Sie sicher sein, dass Sie einen Echtzeit-Timer auf Windows-Systemen erhalten? - wenn das System überlastet ist, kommt es zu Verzögerungen

dasselbe in MQL - wenn Sie komplexe Berechnungen mit OnTick() geladen haben, dann wird das OnTimer()-Ereignis nicht eintreten, bis es ausgeführt wird.

D.h., auch MT4 ist genug für komplexe Berechnungen, wenn nicht dann MT5 - es funktioniert wirklich auf der Ebene von C++, aber die mangelnde Leistung ist in der Regel auf eine schlechte Berechnung Algorithmus - verwenden Sie den Profiler, nicht tun Berechnungen jeden Tick, wo es nichts zu berechnen, bis ein neuer Balken erscheint, nicht die gesamte Geschichte zu berechnen, wenn Sie Signale auf den letzten 1 bis 3 Bars verwenden - berechnen nur 100 Bars ... es gibt viele Varianten

HH: die Arbeit mit grafischen Objekten verlangsamt alles, die Arbeit mit Strings reduziert auch die Leistung - in der Theorie, aber in letzter Zeit habe ich das nicht bemerkt, so wie die Arbeit mit Zeitumwandlungsfunktionen auch eine Qual ist - klar ist alles im Profiler sichtbar, wo viel Zeit verbracht wird - wir versuchen, diesen Teil des Codes weniger oft zu verwenden

Einverstanden, auch die Standardzeitschaltuhr bietet keine Garantie. Vielen Dank, wir werden es ausprobieren.

 

Guten Tag, liebe Freunde!

Können Sie mir bitte sagen, ob es in MKL4 möglich ist,die Eröffnung einer Position für ein Symbol zum Zeitpunkt der Eröffnung einer Position für ein anderes Symbol festzulegen? Vielleicht wurde eine solche Frage bereits diskutiert, dann geben Sie mir einen Link.

Ich danke Ihnen.

 
novichok2018:

Guten Tag, liebe Freunde!

Können Sie mir bitte sagen, ob es in MKL4 möglich ist,die Eröffnung einer Position für ein Symbol zum Zeitpunkt der Eröffnung einer Position für ein anderes Symbol festzulegen? Vielleicht wurde eine solche Frage bereits diskutiert, dann geben Sie mir einen Link.

Ich danke Ihnen.

Die Frage ist nicht vollständig formuliert.
Aber im Allgemeinen können Sie das. Aber nicht gleichzeitig, sondern nacheinander in einem der beiden Fälle.
 
Artyom Trishkin:
Die Frage ist nicht vollständig formuliert.
Aber im Allgemeinen können Sie das. Aber nicht gleichzeitig, sondern in beiden Fällen nacheinander.

Das ist großartig. Wie beschreibe ich sie im Code? Wenn zum Beispiel die Bedingungen stimmen und ich um 9:00 Uhr eine Kaufposition in GBP eröffne, eröffne ich auch eine Kaufposition in EUR (um 9:00 Uhr).

 
novichok2018:

Großartig. Wie kann ich dies im Code beschreiben? Wenn sich beispielsweise die Bedingungen um 9:00 Uhr entwickelt haben und ein KAUFEN für das Pfund eröffnet wird, dann wird auch ein KAUFEN für den Euro eröffnet (um 9:00 Uhr).

Wie geöffnet? Was ist der Grund für die Eröffnung?
Grund der Beschwerde: