Emulation von Ticks aus einem EA/Indikator - Seite 4

 
Zhunko:

Nur ein Fall zum Beispiel?

Nehmen Sie einfach meinen ChartBuilder in der Codebase. Es kann eine große Anzahl von Handelsinstrumenten verwenden. Und wenn für das Instrument, an dem es hängt, für einige Zeit keine neuen Ticks empfangen werden, ist der angezeigte Wert bereits irrelevant (veraltet).

Was die Kombination Expert Advisor+Indikator betrifft, so scheint es sinnvoller, den Code in eine DLL zu portieren und in den Indikator zu importieren, wenn Sie den Code in den Expert Advisor übertragen wollen, um die Belastung des Hauptthreads zu verringern.

 
Meat: Ich habe herausgefunden, wo das Problem liegt: Das Array muss auf der globalen Ebene deklariert werden, nicht auf der lokalen.

keine Zecken.... ((((

Protokoll:

18:33:34 test EURUSD,H1: erfolgreich geladen
18:33:36 test EURUSD,H1: initialisiert

rechte Maustaste "Grafik aktualisieren" der Kommentar war Häkchen: 1, wurde Häkchen: 2

keine Fehler im Protokoll

SZS: habe die Verbindung unterbrochen, indem ich "Proxyserver aktivieren" angekreuzt habe, das Terminal neu gestartet - keine Verbindung, aber wenn ich die Checkbox angekreuzt habe. SZY: Herunterfahren der Gegensprechanlage durch Ankreuzen von "Proxyserver aktivieren" , Neustart des Terminals - keine Verbindung, aber wenn Sie das Kontrollkästchen über den Proxyserver entfernt, wie "gestartet" ..... ;)

 
Als Idee - eine separate Exe, findet das MT-Fenster - scrollt durch die Fenster darin
und beginnt, sie in einem bestimmten Intervall an die Zeckenemulation zu senden.
 
jartmailru:
Als Idee - eine separate Exe, findet die MT-Fenster - scrollt darin Fenster
und beginnt, sie Emulation Ticks senden.
Ich habe genau so einen. Nur in DLL. Aber Alexey will es ohne DLLs und EXEs von Drittanbietern.
Fleisch:

1. Nehmen Sie zum Beispiel meinen ChartBuilder in der Codebase. Es kann eine große Anzahl von Handelsinstrumenten verwenden. Und wenn für das Instrument, an dem es hängt, für einige Zeit keine neuen Ticks kommen, dann ist der angezeigte Wert bereits irrelevant (veraltet).

2. Was den Expert Advisor+Indikator betrifft, so wäre es sinnvoller, den Code in eine DLL zu verschieben und in den Indikator zu importieren, wenn Sie den Code in den Expert Advisor übertragen wollen, um die Belastung des Hauptthreads zu verringern. Wenn Sie sich die Mühe machen wollen, zu portieren, dann sollten Sie es wenigstens in einer guten Umgebung tun.

1. Ich werde es noch einmal wiederholen. Wenn Sie auf das Tool außerhalb des aktuellen Fensters reagieren wollen, sollten Sie die Zeit des Servers verwenden. Die WinAPI wird dafür nicht benötigt. MQL4 hat eine solche Funktion.

2. Es spielt keine Rolle, welche Bindung verwendet wird. Dies ist die gleiche Lösung. Ein Expert Advisor mit Schleife reagiert auf die geänderte Serverzeit. Das reicht aus, um alle Probleme zu lösen, die Sie zu lösen versuchen.

Sie brauchen nur Ticks zu emulieren, um den Expert Advisor am Wochenende zu starten. Für alles andere ist sie nicht erforderlich. Ich habe gezeigt, wie man den Indikator aktualisiert. Nur eine Zeile.

=====================

Die neueste Version des Indikators funktioniert nicht unter Windows 7.


 
IgorM:

keine Zecken.... ((((

...............

SZS: Unterbrechen Sie die Verbindung, indem Sie das Kästchen "Proxyserver zulassen" aktivieren. Aber als ich das Proxy-Kontrollkästchen deaktivierte, wurde es einfach "weggeklickt" ..... ;)

Igor, diese Art, die Verbindung zum Internet zu unterbrechen, ist nicht gut. Es gibt viele Dinge, die in diesem Modus nicht funktionieren. Es ist nicht notwendig, den Zugang zum Internet zu deaktivieren.

Zum Beispiel dieser Code für Expert Advisor:

#include <WinUser32.mqh


void init()
 {
  int hwndChart = WindowHandle(Symbol(), 0);
  int nNewMessageWindow = RegisterWindowMessageA("MetaTrader4_Internal_Message");
  for (int i = 0; i < 200; i++) PostMessageA(hwndChart, nNewMessageWindow, 2, 1);
 }

void start()
 {
  int nCounter = 0;
  while (!IsStopped())
   {
    nCounter++;
    Comment(nCounter);
    Sleep(500);
   }
 }

funktioniert an Wochenenden und wenn es keine Zecken gibt, aber es funktioniert nicht, wenn die Internetverbindung unterbrochen ist. Es gibt da eine obskure Besonderheit.

Vielleicht haben sie es in den letzten Builds optimiert. Das hat früher funktioniert.

Wählen Sie lieber ein Tool, das selten aktualisiert wird.

 
Zhunko:
Ich habe eine davon gemacht. Nur in der DLL. Aber Alexey will es ohne DLL und EXE von Drittanbietern.

1. Noch einmal. Um auf ein Tool zu reagieren, das sich nicht im aktuellen Fenster befindet, müssen Sie die Serverzeit verwenden. Die WinAPI wird dafür nicht benötigt. MQL4 hat eine solche Funktion.

2. Es spielt keine Rolle, welche Bindung verwendet wird. Dies ist die gleiche Lösung. Ein Expert Advisor mit Schleife reagiert auf die geänderte Serverzeit. Das reicht aus, um alle Probleme zu lösen, die Sie zu lösen versuchen.

Sie brauchen nur Ticks zu emulieren, um den Expert Advisor am Wochenende zu starten. Für alles andere ist sie nicht erforderlich. Ich habe gezeigt, wie man den Indikator aktualisiert. Nur eine Zeile.

=====================

Die neueste Version des Indikators funktioniert nicht unter Windows 7.


Ich verstehe nicht, was Sie damit beweisen wollen, dass mehrere laufende Dateien cooler sind als eine? Natürlich kann ich einen Expert Advisor in einer Schleife laufen lassen, aber ich sehe keinen Sinn darin, dieses Chaos aus zwei Arbeitsdateien zu machen, wenn ich das Gleiche im Indikator selbst oder in einer verbundenen DLL tun kann. Natürlich verstehe ich, dass Sie es vorziehen, mehrere verschiedene Programme laufen zu lassen, von denen jedes seine spezielle Funktion erfüllt: ein Programm säubert Protokolle, ein anderes sendet Tics usw. Aber Ihr Ansatz ist nicht der einzig richtige.

Die Emulation von Ticks ist nur notwendig, um den Expert Advisor am Wochenende zu starten.

Ich wiederhole: Sie liegen falsch. Der Bedarf an Zecken hängt nicht vom Wochentag ab. Wenn Sie nicht selbst handeln, aber glauben Sie mir, ich habe in den letzten Jahren mit Futures gehandelt, müssen Sie die Ticks dort ziemlich oft aktualisieren.

 

Es besteht die Vermutung, dass der Code nicht funktioniert, wenn 64-Bit installiert ist. Ich habe nur 32, also kann ich es nicht überprüfen. Versuchen Sie, vier Null-Bytes nach PostMsgAddr dort einzufügen (und vergessen Sie nicht, die Array-Größe zu erhöhen). Vielleicht klappt es ja... Obwohl ich vermute, dass Sie auch die anderen beiden Parameter auf 64-Bit umstellen müssen... oder nicht?... Wie auch immer, ich habe noch nicht in einer 64-Bit-Umgebung gearbeitet, also weiß ich es nicht.

 
Meat:


1. Ich verstehe nicht, was Sie mir damit beweisen wollen. Dass mehrere laufende Akten cooler sind als eine? Natürlich kann ich einen geloopten Expert Advisor starten, aber es macht keinen Sinn, ein solches Durcheinander zu schaffen, das aus zwei Arbeitsdateien besteht, wenn ich die gleichen Dinge im Indikator selbst oder in einer verknüpften DLL tun kann. Natürlich verstehe ich, dass Sie es vorziehen, mehrere verschiedene Programme laufen zu lassen, von denen jedes seine spezielle Funktion erfüllt: das eine säubert Protokolle, das andere sendet Ticks usw. Aber nur Ihr Ansatz ist nicht der einzige richtige.

2. Auch hier liegen Sie falsch. Der Bedarf an Zecken hängt nicht vom Wochentag ab. Ich habe bereits erklärt, warum. Wenn Sie nicht selbst Händler sind, aber glauben Sie mir, ich habe in den letzten Jahren mit Futures gehandelt, ist es oft notwendig, dort Ticks zu aktualisieren.

1. jetzt verstehe ich nicht... Wo habe ich gesagt, was cooler ist? Ich habe bereits mehrfach darauf hingewiesen, dass die Tick-Emulation für den Handel nicht notwendig ist. Sie wird nur für die Fehlersuche am Wochenende benötigt, wenn es keine Ticks gibt.

2. Wie handelt man mit einem Indikator? MQL4 bietet dies nicht. Sie benötigen einen Expert Advisor oder ein Skript. Der Expert Advisor führt eine Schleife durch und vergleicht die Serverzeit mit der vorherigen Zeit. Im Falle einer Nichtübereinstimmung reagieren Sie so, wie es der TS vorschreibt. Das ist alles! Es besteht keine Notwendigkeit für eine Emulation. Was wollen Sie beweisen? Ich habe es bereits in mehreren Versionen in verschiedenen Beiträgen geschrieben. Sie müssen einen solchen Expert Advisor am Wochenende ausführen, um ihn zu debuggen. Ich habe den obigen Code geschrieben.

 
Zhunko:

1. jetzt verstehe ich nicht... Wo habe ich gesagt, was cooler ist? Ich habe bereits mehrfach darauf hingewiesen, dass die Tick-Emulation für den Handel nicht erforderlich ist. Sie wird nur für die Fehlersuche am Wochenende benötigt, wenn es keine Ticks gibt.

2. Wie handelt man mit einem Indikator? MQL4 bietet dies nicht. Sie benötigen einen Expert Advisor oder ein Skript. Der Expert Advisor führt eine Schleife durch und vergleicht die Serverzeit mit der vorherigen Zeit. Im Falle einer Nichtübereinstimmung reagieren Sie so, wie es der TS vorschreibt. Das ist alles! Es besteht keine Notwendigkeit für eine Emulation. Was wollen Sie beweisen? Ich habe es bereits in mehreren Versionen in verschiedenen Beiträgen geschrieben. Sie müssen einen solchen Expert Advisor am Wochenende ausführen, um ihn zu debuggen. Ich habe den obigen Code geschrieben.

Aber diejenigen, die Handel treiben, wissen es wahrscheinlich besser, meinen Sie nicht auch?

Ich möchte nicht mit einem Indikator handeln, und ich brauche keinen zusätzlichen Expert Advisor in Form einer Schleife, wenn der Tick-Indikator völlig ausreicht.

 
Meat:

Ich will damit sagen: Wenn Sie keinen Handel treiben, dann brauchen Sie persönlich diese Emulation nicht. Aber diejenigen, die Handel treiben, wissen es wahrscheinlich besser, meinen Sie nicht?

Ich möchte nicht mit einem Indikator handeln, und ich brauche keinen zusätzlichen Expert Advisor in Form einer Schleife, wenn der Tick-Indikator völlig ausreicht.

Wie handeln Sie mit einem Ticking-Indikator? Das ist in MQL4 nicht vorgesehen.

Wirklich! Warum brauche ich ein zusätzliches Set des Ticking-Indikators, das nicht handeln kann, wenn ich alles in einem Expert Advisor mit Schleife machen kann? Es wird kein WinAPI benötigt, die MT4-Schnittstelle wird nicht träge, der Expert Advisor arbeitet 3 Mal schneller. Warum die Dinge so kompliziert machen?