Diskussion zum Artikel "Kopieren des Handels aus MetaTrader 5 nach MetaTrader 4" - Seite 2

[Gelöscht]  
Urain:

Es gibt keinen Unterschied, weder bei der Umkehrung noch beim Schnitt, der Unterschied ergibt sich nur aus der Differenz der Kursniveaus zum aktuellen Zeitpunkt und der Ausführungsverzögerung.

Im Idealfall, wenn die Notierungen zwischen den MTs gleich sind und die Verzögerung 0 ist, wird der Handel den gleichen Gewinn bringen.


Nicht für alle Handelsstrategien (wie oben geschrieben, meine ich, wenn Sie die MT4-Handelsmethoden nicht an MT5 anpassen).

Ich spreche nicht von den Unterschieden in den Ergebnissen von R2 und MT5 (aber Rumus ist wirklich aus dem Leben, wir werden ihn nicht berücksichtigen).

Diejenigen, die wirklich wollen, um den Handel in MT4 mit MT5 verwalten sollte über den umgekehrten Prozess zu denken.

Gleichzeitig sollte man in der Strategie mehr auf exakte Flips und Cuts zurückgreifen (unter den Bedingungen von Multiwährungen).

Es wäre auch toll, alle Handelsprozesse und Bilanzinformationen nach GMT oder lokaler Zeit der Terminals zu synchronisieren (wenn sie sich in der gleichen Zeitzone befinden).

PS

Es geht nicht um den "Kurs", und auch nicht um die Belastung der Einlage. Es geht darum, was Sie aufgeben müssen und wie Sie Ihre Strategie ändern können.

Die einzige Bequemlichkeit in diesem Sinne ist, dass alle MT4-Handelsprozesse mit 100%igen Ergebnissen auf Netteng eingestellt werden können.

Ein wichtiger Punkt ist natürlich, dass solche Phänomene wie Flipping und Cutting bei den meisten Handelsstrategien sehr selten sind.

Urain:

Auf dll ist es unwahrscheinlich, dass MQ jeden Code von Drittanbietern auf seine Sicherheit hin überprüft, und nicht jeder hat einen Delphi- oder srp-Compiler. Sie können den Code einer Bibel posten und die kompilierte Datei durch eine andere ersetzen. Also im Moment nur ex5.

Leider wird MQL5 nicht bald mindestens die Hälfte der Möglichkeiten bieten, die man mit Hilfe von DLLs erhalten kann.

Eine DLL, die es Ihnen erlaubt, aus der "Sandbox" herauszukommen, und die nicht sehr sperrig ist, kann in vielen Entwicklungswerkzeugen implementiert werden.

Als Option können Sie die an WinAPI gebundene MQL-Bibliothek verwenden.

 
Interesting:

Nicht für alle Handelsstrategien (wie es oben geschrieben wurde, ich meine, wenn Sie nicht MT4 Handelsmethoden zu MT5 anpassen).

Ich spreche nicht über die Unterschiede in den Ergebnissen von R2 und MT5 (aber Rumus ist wirklich aus dem Leben, wir werden es nicht berücksichtigen).

Ich lese diese Aussage zum n-ten Mal, und zum n-ten Mal möchte ich Sie bitten, mindestens eine Sequenz von Aufträgen/Transaktionen zu nennen, bei deren Übertragung von MT5 auf MT4 (oder umgekehrt) sich das finanzielle Ergebnis ändert. Nicht die Liste der Aufträge/Transaktionen in der Historie wird sich ändern, nicht die Anzeige der aktuellen offenen Position wird sich ändern, sondern das finanzielle Ergebnis wird sich ändern.

Ich behaupte, dass bei identischen Handelsbedingungen (Kurse/Spreads/Swaps/Stop-Hebel usw.) das Ergebnis auf MT5 gleich oder besser als auf MT4 sein wird (besser - wegen der Swaps, wenn es auf MT4 zwei Gegenpositionen gibt).


Ja, es ist eine schwierige Aufgabe, alle Nuancen beim Kopieren von Trades zu berücksichtigen. Aber das ist eine andere Aufgabe, die nichts mit dem theoretischen Teil des Netting-Themas zu tun hat.

 
komposter:

OnTrade ist in der Tat ein idealer Ort, um Änderungen in der Liste der Positionen zu behandeln. Sie müssen nur sicherstellen, dass bestehende Trades sofort beim Start kopiert werden (und nicht erst beim nächsten Trade-Event).

Das Filtern von Ereignissen ist sehr einfach - prüfen Sie die Liste der Positionen und setzen Sie die Verarbeitung nur fort, wenn sich darin etwas geändert hat.

Ich spreche nicht von dieser Filterung, im OnTrade-Ereignis erscheint nicht nur der ausgeführte Handel, sondern auch der platzierte Auftrag, und der wiederum wird nicht unbedingt implementiert.
 
Urain:
Ich spreche nicht über diese Filterung, in OnTrade erscheint das Ereignis nicht nur über das ausgeführte Geschäft, sondern auch über die platzierte Order, und diese wird wiederum nicht unbedingt ausgeführt.
Das ist es, worüber wir sprechen - Sie müssen nicht auf das Platzieren/Stornieren/Ausführen von Aufträgen reagieren. Dazu müssen Sie prüfen, ob sich die Position geändert hat.
 

Gute Idee. Große Kopierer.! versucht, eine lange Zeit vor zu tun, aber es hat nicht funktioniert, und hier sah ich, was mein Fehler war.


An den Autor RESPEKT. !!!

 
komposter:
Das ist es, worüber wir sprechen - Sie müssen nicht auf die Platzierung/Stornierung/Ausführung von Aufträgen reagieren. Dazu müssen Sie prüfen, ob sich die Position geändert hat.

Dann machen Sie eine Kopie von OnTimer und benennen Sie sie wie folgt um:

void OnTimers()
  {
//--- Ermitteln der Position 
   get_positions();
//--- wenn die Positionen nicht gleich sind, neue Daten speichern
   if(compare_positions())saves_positions();
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- Ermitteln der Position 
   get_positions();
//--- wenn die Positionen nicht gleich sind, neue Daten speichern
   if(compare_positions())saves_positions();
  }

//EventKillTimer() und kommentieren Sie dann die Zerstörung des Timers in OnDeinit aus;

und in OnInit anstelle von EventSetTimer(1); setzen

OnTimers();

ZY eigentlich die ganze Überarbeitung, aber ich werde es erst am Montag überprüfen können.

 
Urain:

Nun, dann machen Sie eine Kopie von OnTimer und benennen Sie sie so um:

Das ist es, was ich meine, es ist ganz einfach ;)


Urain:

und in OnInit statt EventSetTimer(1);; setzen

Und genau davor wollte ich Sie warnen - wenn die Initialisierung "fehlschlägt" (z.B. beim Starten des Terminals werden die Daten nicht rechtzeitig geladen), wird der Kopierer bis zum nächsten Handelsereignis "schlafen". In diesem Fall sollten wir entweder eine Endlosschleife oder denselben On-Timer vorsehen, der bis zur erfolgreichen Initialisierung arbeitet.

 
Urain:

Was die Bibliotheken angeht, so bin ich nicht gegen ex5-Bibliotheken, aber ich möchte keine dll verwenden, weil das den Endbenutzer abschreckt.

Und die Installation einer zusätzlichen Kopie von MT4 ist auch nicht sehr bequem für den Endbenutzer ;-). Höchstwahrscheinlich hat der Benutzer MT4 schon seit langem installiert und nicht in MT5-Dateien. Vielleicht sollten wir die Verwendung von subst als Trick empfehlen?
 
marketeer:
Nun, eine zusätzliche Kopie von MT4 zu installieren ist auch nicht sehr bequem für den Endbenutzer ;-). Höchstwahrscheinlich hat der Benutzer MT4 schon lange installiert, und zwar nicht in MT5-Dateien. Vielleicht sollten Sie die Verwendung von subst als Trick empfehlen?
Ich hatte eine ähnliche Idee. Aber subst hat einige Tücken (zumindest unter XP): Der Zugriff auf den physischen Datenträger(\\.\PHYSICALDRIVEx) funktioniert nicht mehr.
 
marketeer:
Nun, eine zusätzliche Kopie von MT4 zu installieren ist auch nicht sehr bequem für den Endbenutzer ;-). Höchstwahrscheinlich hat der Benutzer MT4 schon lange installiert, und zwar nicht in MT5-Dateien. Vielleicht sollten Sie die Verwendung von subst als Trick empfehlen?

Es war nicht mein Ziel, einen Artikel über Signalübertragungskanäle zu schreiben, ich habe die einfachste und verständlichste Lösung gefunden.

Ich denke, die Signalübertragung ist das Thema eines eigenen Artikels.

Und über nicht sehr bequem, eine zweite MT hier zu setzen ich denke, Sie sind falsch, so weit ich weiß und persönliche Korrespondenz viele Benutzer auf der Maschine bis zu einem Dutzend MT halten, und keine Probleme. Neben MT4 kann leicht durch einfaches Kopieren übertragen werden. Darüber hinaus hat mein Code nicht Magie Schutz, so wird es nicht möglich sein, das Konto gleichzeitig durch Kopieren und manuell zu verwenden.