Der Markt liegt immer falsch

 
Eine Fortsetzung des Themas "Arbitrage". Es gibt bereits eine Menge Seiten, und die Kritiker haben ein Chaos angerichtet, also ein neues Thema.

Es ist mir gelungen, den Restbetrag an Eigenkapital aufzubringen. Es sieht wie folgt aus (EURJPY H1):





EA-Quellcode an den Beitrag angehängt. Das gilt auch für den Bericht der Tester.

Zu diesem Zweck musste ich dem Code einen weiteren Eingabeparameter hinzufügen: beginEquity - anfängliches Eigenkapital. D.h. das Anfangssaldo. Im Strategy Tester überwacht der Expert Advisor automatisch, ob das Niveau von beginEquity überschritten wird. Und wenn sie überschritten wird, beginnt das Spiel von neuem, d.h. es ändert beginPrice in Bid, beginEquity in die aktuelle Equity und ändert die magische Zahl (erhöht um 1).

Im Demo- und Realmodus wird der Expert Advisor jedoch nur eine Warnung ausgeben, die Sie auffordert, diese Parameter manuell zu ändern. Das Problem ist, dass der Expert Advisor die vorherigen Parameter beim Herunterfahren des Terminals oder des Computers nirgends speichert und sie nach dem Neustart nicht wiederherstellen kann (wer sie wirklich braucht, kann eine Dateidatenbank erstellen oder Parameter in globalen Variablen speichern).
Daher müssen wir die Signale der Expert Advisors überwachen, und wenn sie anfangen, Meldungen anzuzeigen, müssen wir die oben genannten Eingabeparameter für die gesamte Gruppe manuell ändern.
 
Hier bin ich, Kritiker, und finde dich auch hier, Juri. Jetzt werde ich auch hier reinscheißen. Eine oberflächliche Analyse des Berichts zeigt, dass vom 20. August 2004 bis 22:00 Uhr am 4. Mai 2007 bei einer anfänglichen Einzahlung von 200.000 72.252 Gewinne erzielt wurden und um 22:00 Uhr alle verbleibenden Positionen geschlossen wurden, was auf einen Schlag 528.000 Gewinn brachte (7-mal mehr als in der gesamten Testgeschichte!). Der Effekt ist wahrscheinlich einfach durch das Ende der Testperiode verursacht.
 
Mathemat:
Hier bin ich, Kritiker, und finde dich auch hier, Juri. Jetzt werde ich auch hier reinscheißen. Eine oberflächliche Analyse des Berichts zeigt, dass man vom 20. August 2004 bis 22:00 Uhr am 4. Mai 2007 mit einer anfänglichen Einzahlung von 200.000 72.252 Gewinne gemacht hat, und um 22:00 Uhr wurden alle verbleibenden Positionen geschlossen, was auf einen Schlag 528.000 Gewinn brachte (7 Mal mehr als in der gesamten Testgeschichte!). Der Effekt ist wahrscheinlich einfach auf das Ende des Testzeitraums zurückzuführen.
Der Zeitpunkt des Abschlusses des Tests ist im rechten Diagramm als streng horizontales grünes Band (Eigenkapital) und ein starkes nichtlineares "Wachstum" des Saldos unterhalb dieser sehr horizontalen Linie zu erkennen. Mit anderen Worten: Der Prüfer schließt alle Positionen und der Saldo "wächst", bis er dem Eigenkapital entspricht. Offensichtlich gab es zu diesem Zeitpunkt viele offene Positionen mit positivem Gewinn. Andernfalls kann das Eigenkapital nicht höher steigen als der Saldo.

Der Tester schließt alle offenen Positionen am Ende des Testzeitraums. Wenn das Eigenkapital nicht dem Saldo zu diesem Zeitpunkt entspricht, entspricht der Saldo dem letzten Eigenkapitalwert nach dem Schließen aller Positionen. Nennen Sie dieses Verhalten des Prüfgeräts daher nicht "Wirkung", denn es ist das Funktionsprinzip.
 
Hallo!
Hier ist der Tag deiner Großmutter! Nur ein Scherz.
Wie Mathemat sagte: "durch Oberflächenanalyse" - sehr schön! Kein einziger negativer Wert. Ich werde es online testen. Aber folgendes verstehe ich nicht (vielleicht habe ich es falsch verstanden): Ich schalte meinen Spieler nicht aus und schließe das Terminal nicht. Wird der Alarm unter solchen Bedingungen angezeigt oder handelt der EA von selbst, wie er sollte? Was passiert, wenn ich eine Zeit lang vom Internet getrennt bin und dann wieder verbunden werde? Ohne jegliche Unterbrechung von meiner Seite aus?
Für mich ist die Frage sehr wichtig, weil ich mindestens 18 Stunden am Tag vom Computer abwesend bin (Schlaf, Arbeit usw.), und wenn in dieser Zeit die Verbindung unterbrochen wird oder ich keine neuen Daten eingeben kann. ..... Nun ja, nicht wirklich gut.
Außerdem, wenn ich es richtig verstanden habe: Wenn Sie die Nocke oder das Terminal einschalten, brauchen Sie nur die aktuellen Werte einzugeben und alles wird so sein, wie es sein sollte, d.h. die EA wieder anschließen?
Auch, wenn die Warnung angezeigt wird, aber wir nichts tun, wird der EA weiterhin den Handel nach den alten Einstellungen oder wartet es für die neuen eingegeben werden?
Wenn möglich, möchte ich diese Punkte näher erläutern!!!!
Danke für einen weiteren Grund, mir den Kopf zu zerbrechen! (auf eine gute Art).
Mit freundlichen Grüßen !!!!
 
Ich weiß nicht, warum, aber im Tester-Modus der Expert Advisor öffnet Geschäfte in Stapeln von etwa zehn, ist dies ein Zufall oder nicht?
Ich weiß nicht, warum, aber im Testmodus öffnet der Expert Advisor Geschäfte in Paketen von etwa zehn. Wenn Sie 5 Minuten vom Start 3000, der EuroUSD, vom 02.01.2007 bis zum heutigen Tag, öffnet zehn Positionen, die aus irgendeinem Grund nicht am Ende des Zeitraums geschlossen werden, aber irgendwo am 12.02.2007 ein solides Sinken, und dieses Sinken ist im Grunde diese ersten zehn offenen Aufträge. Und dieses Bild wiederholt sich nicht nur zu kleinen Zeiten. Auch wenn wir die Einlage auf 50.000 erhöhen, verlieren wir. Ändern wir den Zeitrahmen auf 1 Stunde, verlieren wir auch. Hier stimmt etwas nicht!
Das erste ist bisher das schönste. Vielleicht habe ich etwas falsch gemacht?
Mit freundlichen Grüßen!
 
Hallo!

Ich habe eine kleine Frage: Ich habe den Expert Advisor heruntergeladen, aber er erzeugt einen Fehler beim Kompilieren:
MODE_MARGINREQUIRED' - Variable nicht definiert C:\Programmdateien\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
Wozu dient die Variable MODE_MARGINREQUIRED und wie wird sie gesetzt?

 
Implex:
Hallo!

Ich habe eine kleine Frage: Ich habe den Expert Advisor heruntergeladen, aber er erzeugt einen Fehler beim Kompilieren:
MODE_MARGINREQUIRED' - Variable nicht definiert C:\Programmdateien\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
Wozu dient die Variable MODE_MARGINREQUIRED und wie wird sie gesetzt?


Aktualisieren Sie Ihr Terminal auf den neuesten Build 204, indem Sie die Distribution von folgender Website herunterladen: http://www.metatrader4.com/files/mt4setup.exe
 

Obwohl ich den Test des alten EA nicht wie geplant abgeschlossen habe, habe ich darüber nachgedacht, wie ich diese Version verbessern kann. Und dann kam Juri mit einer neuen Idee. Es ist nicht mehr das "fünfte Element", sondern das "sechste". Wie kann ich hier arbeiten? Meine Hände zittern.

Aber im Ernst, ich habe eine Frage zu dem Code. Das mag naiv sein, deshalb wende ich mich nicht nur an Yury. Vielleicht kann das jemand anderes klären. Ich werde ihnen dankbar sein.

In ArbitrageReverse_1.1.mq4 und in der neuen Version von ArbitrageReverse_1.5.mq4 wiederholt sich dieselbe Struktur, was mir unklar ist: Es handelt sich um einen Aufruf der Benutzerfunktion closeby(ticksell, tickbuy) nach einer Blockrundung der aktuell offenen Orders. Für ArbitrageReverse_1.1.mq4 ist es Zeile [106], für 1.5 ist es Zeile [128]. Die Funktion ist sinnvoll - wenn es offene VERKAUFsaufträge und offene KAUFsaufträge gibt (jeweils ein Symbol), wird VERKAUF durch KAUF geschlossen. Was mir nicht gefällt, ist, dass es keine Vorbedingung für die Durchführung dieser Operation gibt. Mit anderen Worten, nur wenn wir BUY und SELL haben, sollten die Aufträge geschlossen werden. Aber weiter im Code, bereits im Block 'dt' ist der Aufruf der Funktion closeby(ticksell, tickbuy) (für v:1.1 Zeile [163], für v:1.5 [189]) in Bedingungen eingebettet. Und das scheint mir richtiger zu sein. Im Prinzip werde ich bald selbst sehen, was los ist, nachdem ich alle Zuweisungen zu Variablen zurückverfolgt habe, während ich an meinen kleineren Fehlern arbeite. Aber jetzt werde ich Juri direkt fragen:
Wird der closeby-Aufruf in Zeile [106] v:1.1 oder [128] v:1.5 benötigt, und wenn ja, was wird in [163] für v:1.1 oder in [189] für v:1.5 "geschlossen", wenn sich herausstellt, dass alles, was geschlossen werden kann, vorher geschlossen werden muss? Ich verstehe, dass es einen Unterschied bei den Losgrößen geben kann, aber trotzdem scheint mir hier etwas "falsch" zu sein.

Der closeby(tickbuy, ticksell) Aufruf in [200] für v:1.1 oder in [224] für v:1.5 ist mehr oder weniger klar - wenn eine offene Order SELL oder BUY in open orders definiert ist, und im Block "dt", abhängig von den Bedingungen, eine entgegengesetzte Order durch OrderSend Funktion geöffnet werden kann - dann wird der close entsprechend ausgeführt.

Falls ich etwas Dummes gefragt haben sollte, bitte ich um Entschuldigung. Weisen Sie mich auf den Fehler hin und ich werde ihn korrigieren.

Mit freundlichen Grüßen, Fed.

 
Ich habe bereits einen EA auf CodeBase gepostet, der durch die Einhaltung der Arbitrage-Taktik auch an positiven Swaps verdient. Nach der Überprüfung durch den Moderator wird der Code HIER verfügbar sein
 
Hallo!
Ich habe versucht, zu verstehen - die Logik dieser Änderung hängt von der beginPrice, beginEquity, die manuell geändert werden muss. Ich denke, die einzigen Ergebnisse auf der euroyenne waren die gleichen und der Rest waren Netto-Abflüsse, wenn der Test geschlossen wurde ... Und Eigenkapital ist nicht oft höher als die Balance. Danke
 
Fed:

Obwohl ich den Test des alten EA noch nicht abgeschlossen habe, wie ich es vorhatte, habe ich bereits darüber nachgedacht, wie ich diese Version verbessern kann. Und dann kam Juri mit einer neuen Idee. Es ist nicht mehr das "fünfte Element", sondern das "sechste". Wie kann ich hier arbeiten? Meine Hände zittern.

Aber im Ernst, ich habe eine Frage zu dem Code. Das mag naiv sein, deshalb wende ich mich nicht nur an Yury. Vielleicht kann das jemand anderes klären. Ich werde ihnen dankbar sein.

In ArbitrageReverse_1.1.mq4 und in der neuen Version von ArbitrageReverse_1.5.mq4 wiederholt sich dieselbe Struktur, was mir unklar ist: Es handelt sich um einen Aufruf der Benutzerfunktion closeby(ticksell, tickbuy) nach einer Blockrundung der aktuell offenen Orders. Für ArbitrageReverse_1.1.mq4 ist es Zeile [106], für 1.5 ist es Zeile [128]. Die Funktion ist sinnvoll - wenn es offene VERKAUFsaufträge und offene KAUFsaufträge gibt (jeweils ein Symbol), wird VERKAUF durch KAUF geschlossen. Was mir nicht gefällt, ist, dass es keine Vorbedingung für die Durchführung dieser Operation gibt. Mit anderen Worten, nur wenn wir BUY und SELL haben, sollten die Aufträge geschlossen werden. Aber weiter im Code, bereits im Block 'dt' ist der Aufruf der Funktion closeby(ticksell, tickbuy) (für v:1.1 Zeile [163], für v:1.5 [189]) in Bedingungen eingebettet. Und das scheint mir richtiger zu sein. Im Prinzip werde ich bald selbst sehen, was los ist, nachdem ich alle Zuweisungen zu Variablen zurückverfolgt habe, während ich an meinen kleineren Fehlern arbeite. Aber jetzt werde ich Juri direkt fragen:
Wird der closeby-Aufruf in Zeile [106] v:1.1 oder [128] v:1.5 benötigt, und wenn ja, was wird in [163] für v:1.1 oder in [189] für v:1.5 "geschlossen", wenn sich herausstellt, dass alles, was geschlossen werden kann, vorher geschlossen werden muss? Ich verstehe, dass es einen Unterschied bei den Losgrößen geben kann, aber trotzdem scheint mir hier etwas "falsch" zu sein.

Der closeby(tickbuy, ticksell) Aufruf in [200] für v:1.1 oder in [224] für v:1.5 ist mehr oder weniger klar - wenn eine offene Order SELL oder BUY in open orders definiert ist, und im Block "dt", abhängig von den Bedingungen, eine entgegengesetzte Order durch OrderSend Funktion geöffnet werden kann - dann wird der close entsprechend ausgeführt.

Falls ich etwas Dummes gefragt haben sollte, bitte ich um Entschuldigung. Weisen Sie mich auf den Fehler hin und ich werde ihn korrigieren.

Mit freundlichen Grüßen, Fed.

Wenn das Schließen der Zählerpositionen im Demo- und im Realmodus so perfekt wäre wie in den Tests, würde es sicherlich ausreichen, nur einen Aufruf von closeby() vor dem letzten Return(0) im Startereignis zu hinterlassen. Daher wird im Testmodus, unabhängig davon, wie nachvollziehbar er ist, kein Abschluss in zusätzlichen Aufrufen erfolgen.

Aber im Demomodus und im wirklichen Leben, geschlossene Positionen oft nicht auf Zähler aus irgendeinem Grund zu schließen (zum Beispiel, gibt es keine Verbindung mit dem Server für eine kurze Zeit), so musste ich zusätzliche Anrufe zu closeby().