Auf Wiedersehen, Roboter - Hallo, Marasmus - Seite 3

 

Ich war besorgt über die Umstellung auf neue Builds, aber es stellte sich heraus, dass alle Indikatoren, EAs und Skripte wie gehabt funktionierten. Kompiliert, jedoch mit einer Reihe von Warnungen. Aber der neu kompilierte Code arbeitet viel schneller. Die einzigen neuen Funktionen, die ich verwende, sind OnTimer(), neue Optionen für die Arbeit mit Dateien, eine größere Anzahl von Indikatorpuffern und einige neue Funktionen (deren Erweiterung nur eine Frage der Zeit ist). Sehr nützlich ist die Kontrolle von Array-Überläufen mit String-Angabe im Code. Früher hieß es: durch Null dividieren und schauen, was man will. Und es wäre noch schlimmer, wenn der Fehler nicht aufträte.

"Was ist neu in MQL4" kann für diejenigen geschrieben werden, die sich noch an die alten Sachen erinnern. Keine Neulinge mehr?

Wenn Sie ihnen eine Beschreibung von MQL4 Lite geben wollen, können Sie in der Dokumentation alles weglassen, was grundlegend neu und unnötig ist: Strukturen, Klassen, Ressourcen, Objektzeiger, OOP, Debugger, Signale, Grafikereignisse, alle Funktionen, die dieses neue Wissen nutzen, usw. Alles, was zurückbleibt, wird nicht viel komplizierter sein als das alte MQL4. Um das Handbuch für die neuen Dinge, die unberührt bleiben, leicht zu ändern.

.

 

Renat 09.09.2014 02:55 #

Sie können wieder methodisch argumentieren, die Vervielfältigung von Funktionen erklären, alten Code speichern, Fehler beheben usw. Dies wurde schon oft getan, in Artikeln beschrieben und in Foren diskutiert. Aber es ist einfacher und genauer zu sagen, dass der Autor absolut falsch liegt und sich Probleme aus dem Nichts ausdenkt.

Antwort an Renat!

----------------------------------------------------------------

Du versuchst, dir etwas über mich auszudenken!

Sie, als Entwickler, dienen den Banken,

nicht die Gemeinschaft! Sie bauen einen Rennwagen

mit einem pedalbetriebenen Kinderfahrrad!

Ich muss Ihnen also die Fakten nennen.

Frage:

Wo wurde User32. dll

mit den Funktionen zum Aufruf des Skripts aus dem eXpert, dem Indikator.

Alles ist weg! Hier ist der Beweis.

der Linker selbst hat mich gegen eine Gebühr zu einem Ehpert gemacht, der

um das Skript bei Bedarf aufzurufen.

jetzt wird das Skript nur noch manuell aufgerufen.

der Aufruf selbst ist von verschiedenen Fenstern umgeben - erlauben Sie den Aufruf

oder ein zweites Skript aufrufen wollen - das Fenster "Wollen Sie die

Nur manueller Handel ist möglich!

Was sollte ein Roboter tun? Und alle Roboterautoren?

Ich habe nichts gegen das OOP und die vermeintlich schnellere Leistung von MT4.

Wenn Sie MT4 beschleunigen wollten, hätten Sie die

Ich benutze 5-6 und bekomme Hunderte von Daten!

Unnötige Symbole sind Unfug.

Das ist der Punkt, an dem die Geschwindigkeit und die Reaktionsfähigkeit

Aber es ist schlecht für die Banken!

Pansa

Import von Funktionen aus User32. Wenn ihr Zweck nicht so gut wie unmittelbar ist

// klar ist, dann ist es offen gesagt nicht sinnvoll, sie hier zu dokumentieren Hilfe viel. Erfordert

// "DLL-Importe zulassen" muss aktiviert werden.

#import "user32.dll"

int RegisterWindowMessageA(string MessageName);

int PostMessageA(int hwnd, int msg, int wparam, string Name);

void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import

// Der hWnd-Parameter für alle diese Funktionen wird mit WindowHandle() ermittelt.

// Zum Beispiel kann ein EA/Skript das Handle seines eigenen Charts erhalten, indem es

// WindowHandle(Symbol(), 0). Wenn der EA/das Skript weiß, dass ein anderes Diagramm

// offen ist, dann kann sein Handle mit dem bekannten Symbol und

// Zeitrahmen. Unvorhersehbares Verhalten, wenn es mehrere Diagramme für

// das gleiche Symbol und den gleichen Zeitrahmen. AutomaticallyAcceptDefaults löscht

// das Konfigurationsfenster für den neuen Indikator/EA/Skript durch Simulation

// ein Druck auf die Eingabetaste nach einer kurzen Wartezeit. Eine längere Wartezeit könnte

// erweisen sich als robuster. Das alles ist nichts für schwache Nerven...

void StartStandardIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 13, IndicatorName);

wenn (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 15, IndicatorName);

wenn (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartEA(int hWnd, string EAName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 14, EAName);

wenn (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 16, ScriptName);

wenn (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void ClearConfigDialog()

{

Schlaf(100);

keybd_event(13, 0, 0, 0);

}

 
pansa:

Renat 09.09.2014 02:55 #

Sie können wieder methodisch argumentieren, die Vervielfältigung von Funktionen erklären, alten Code speichern, Fehler beheben usw. Dies wurde schon oft getan, in Artikeln beschrieben und in Foren diskutiert. Aber es ist einfacher und genauer zu sagen, dass der Autor absolut falsch liegt und sich Probleme aus dem Nichts ausdenkt.

Antwort an Renat!

----------------------------------------------------------------

Sie versuchen, mich auf unverschämte Art und Weise schlecht zu machen!

Warum sollten wir loben, wenn wir uns auf völlig unterschiedlichen Ebenen des Verständnisses befinden?


user32.dll geht nirgendwo hin - sie ist eine Betriebssystembibliothek.

Verwenden Sie W(idechar/unicode)-Varianten von Funktionen anstelle von A(nsi)-Funktionen:

#import "user32.dll"

   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import
 
Wenn Sie das Symbol aus dem Marktbeobachtungsfenster entfernen, wird kein Datenverkehr mehr über das Symbol abgewickelt. Dieser Mechanismus hat 14 Jahre lang funktioniert.
 

An die Moderatorin, Renate!

über das Niveau des Verstehens - es ist relativ,

Ich trage einen Speer an der Seite des glorreichen Ritters Don Quijote

und ich bin der Aufgabe gewachsen.

Sie hingegen müssen höhere Anforderungen erfüllen

höhere Anforderungen und produzieren Produkte von höherer

höhere Qualität.

Nun, user32,dllbezieht sich auf windos.

Ihr Rat, von A nach W zu gehen , hat nichts bewirkt!

Versuchen Sie, das Skript aus dem eXpert!

Das Entfernen der Zeichen hat keinen Einfluss auf die CPU- oder Netzwerklast.

es handelt sich um einen Bildschirmaufruf und das Thema ist dasselbe!

Ich hoffe, Sie werden mir zustimmen.

Panza

 

Ich kann sehen, dass Sie das auch tun.

Aber hier geht es um Programmierung und um Programme , die von Programmierern geschrieben werden. Wenn Sie den Quellcode, den Sie verwenden, nicht verstehen, müssen Sie lernen. Wir haben viel dafür getan: umfangreiche Dokumentation, Tutorials, Artikel, Source Base, Freelancing, Marktplatz für fertige Produkte, Signale, Forum, etc.

 
pansa:

Versuchen Sie, die Groß- und Kleinschreibung des ersten Buchstabens des Skript-/Indikatornamens zu ändern. Irgendwie habe ich mich auch schwer getan https://www.mql5.com/ru/forum/152533/page2#982156

P.S: Nun, ändern Sie string in char[]

 

LieberRenat, auch ich habe nach dem Kompilieren von EAs eine Menge Warnungen erhalten, keine Fehler.

Ich habe eine Frage, was bedeuten diese Warnungen (vor allem, sie sind vor der return()-Zeile)? Und werden sie sich nicht negativ auf den Betrieb der Expert Advisors auswirken?

Natürlich möchte ich die Sprache nicht noch einmal lernen und meine EAs neu erstellen (ich bin Händler, kein Programmierer).

 
vasabu2012:

LieberRenat, auch ich habe nach dem Kompilieren von EAs eine Menge Warnungen erhalten, keine Fehler.

Ich habe eine Frage, was bedeuten diese Warnungen (vor allem, sie sind vor der return()-Zeile)? Und werden sie sich nicht negativ auf den Betrieb der Expert Advisors auswirken?

Natürlich möchte ich die Sprache nicht noch einmal lernen und meine EAs neu erstellen (ich bin Händler, kein Programmierer).


Bitte senden Sie mir die Fehler oder den Code des Expert Advisors, in dem Sie einige Fehler gemacht haben.
 
vasabu2012:

Auch ich habe nach dem Kompilieren von EAs eine Reihe von Warnungen erhalten - keine Fehler.

Und die meisten Unfug-Warnungen tauchten auf, weil eine Variable völlig legal, korrekt und standardmäßig per Referenz an eine Funktion übergeben wird, wenn der Name der Funktionsvorlage mit der Variable selbst übereinstimmt, wie es in diesem Konstrukt in seiner standardmäßigen und typischen Verwendung sein sollte, wenn die Variable selbst mit ihrem eigenen Namen an die Funktion übergeben wird.

Leider konnten die MCs keine kompetente und logische Erklärung dafür geben und sagten, dass es manchmal zu Missverständnissen in anderen Konstrukten kommen kann, wenn es ähnliche Namen gibt. Aber hier ist das Paradoxe, wenn es zum Beispiel eine Funktion mit ein und demselben Namen und einer unterschiedlichen Anzahl von Parametern gibt, wird die Warnung nicht angezeigt.

Wir müssen sie also einem religiösen Aberglauben und obskuren Vorstellungen zuschreiben, obwohl hinter dieser Warnung keinerlei Logik steckt. Ich glaube nicht, noch die Version der Idiotie, wie vom Autor des Threads vorgeschlagen, dieses Phänomen zu erklären)).