Abenteuer eines Neulings - Seite 5

 

Hallo Tim,

ich war gestern bis etwa 2 Uhr morgens auf und habe den PSC in C (Pseudocode in Code) umgewandelt. Ich habe sofort angefangen, nachdem ich von der Arbeit nach Hause kam.

Als ich den ersten Entwurf fertig hatte, wurde mir klar, dass i) ein paar Dinge fehlen und ii) wir alles 'paarweise' machen müssen.

Nur um zu überprüfen, ob ich auf dem richtigen Weg bin, könnten Sie mir einige Ratschläge geben:

1. Wir können keine 3 EMAs verwenden, ohne das Symbol bei der Deklaration jedes iMAs anzugeben, sonst funktioniert der EA nicht richtig. Wir müssen also 15 EMAs deklarieren (5 Symbole mit 3 Ma's pro Symbol)?

2. Wir haben die Funktion CountOrders übersehen. Wiederum wegen der 5 Paare. Wir brauchen 10 Funktionen. z.B.: EUR_USD_BuyCount, EUR_USD_SellCount; usw. ?

3. Mir ist klar, dass es einen effizienten Weg gibt, den Code zu schreiben, und einen "Einsteiger"-Weg. Ich werde die Anfänger-Methode anwenden und wäre Ihnen dankbar, wenn Sie mir zeigen könnten, wie man es effizient macht.

4. Magische Zahlen. Ich strebe an, was Sie tun, und würde daher gerne mehrere EAs gleichzeitig ausführen. Ich habe mir Magic Numbers angeschaut, aber ich kann es beim besten Willen nicht verstehen, nicht einmal anhand von anderem Code. Könnten Sie mir einen Tipp geben, wo ich mehr darüber erfahren kann, wie ich sicherstellen kann, dass der Computer zwischen den verschiedenen EAs unterscheidet?

Ich danke Ihnen

Nick

 

Hallo Nick

es tut mir leid, aber du verlierst mich hier. Es scheint, als würden wir wieder das Pferd von hinten aufzäumen und folglich einen Rückschritt machen. In meinem vorherigen Posting habe ich vorgeschlagen, dass Sie eine Grundstruktur für Ihr Programm mit dem MetaTrader EA-Assistenten und dem Pseudocode, den wir bereits geschrieben hatten, erstellen. Können Sie diesen Schritt noch einmal ausführen und die Ergebnisse (die mq4-Datei) in diesem Forum posten, damit ich sie mir ansehen kann? Dann können wir mit dem nächsten Schritt fortfahren. Sie brauchen sicherlich keine 15 EMAs, 10 Funktionen oder magische Zahlen für diese Angelegenheit entweder und in dem unwahrscheinlichen Fall, dass wir Probleme mit spezifischen Broker-Anforderungen haben, können wir mit ihnen umgehen, wenn und wann wir zu ihnen kommen.


Ich kann Sie wahrscheinlich durch den Prozess des Schreibens Ihrer ersten EA führen, aber nur, wenn Sie bereit sind, einen Schritt nach dem anderen zu tun und die Ergebnisse jedes Mal wieder in dieses Forum zu posten, damit ich sie überprüfen kann. Andernfalls denke ich, dass dieses kleine Projekt einfach aus dem Ruder laufen und meine und Ihre Zeit verschwenden wird.

Sie sagten - ich mache den Anfängerweg und wäre dann dankbar, wenn Sie mir zeigen könnten, wie man es effizient macht.

Nick, es ist eine frustrierende und zeitaufwändige Aufgabe, einen fehlerhaften Code auszubessern. Normalerweise lohnt sich der Aufwand nicht.


Mit freundlichen Grüßen

Tim

 

Hallo Tim,

Tut mir leid, dass ich dich frustriert habe, ich habe dich falsch verstanden. Du sagtest, ich solle jetzt programmieren, auch wenn es nicht läuft, und so dachte ich, ich solle weitermachen und es programmieren. Also habe ich ziemlich viel Zeit damit verbracht, es zu programmieren, um dir die Arbeit abzunehmen - aber es hat sich herausgestellt, dass es genau umgekehrt war.

Aber keine Sorge, ich werde den PseudoCode im EA-Framework posten, wenn Sie das meinen. Dann könntest du mich durch die einzelnen Blöcke führen, falls du bis dahin noch nicht die Geduld verloren hast :)

 

Hallo Tim,


ich habe den Pseudo-Code in einem EA-Format mit Klammern angehängt. Sag mir Bescheid, wenn ich immer noch nicht verstanden habe, was du gemeint hast, und ich ändere ihn nach Bedarf. Nur die Flaggen und Filter habe ich angegeben, um dir Zeit zu sparen. Alles andere habe ich nicht angefasst. Ich habe keine Namen für die Funktionen erstellt, weil ich immer noch nicht verstehe, was sie sein werden, wie Sie aus meiner letzten Nachricht eindeutig verstanden haben. Was ist der nächste Schritt, Chef?

Dateien:
 
niko

Hallo Tim,


ich habe den Pseudo-Code in einem EA-Format mit Klammern angehängt. Sag mir Bescheid, wenn ich immer noch nicht verstanden habe, was du gemeint hast und ich ändere ihn nach Bedarf. Nur die Flaggen und Filter habe ich angegeben, um dir Zeit zu sparen. Alles andere habe ich nicht angefasst. Ich habe keine Namen für die Funktionen erstellt, weil ich immer noch nicht verstehe, was sie sein werden, wie Sie aus meiner letzten Nachricht eindeutig verstanden haben. Was ist der nächste Schritt von hier, Chef?

Hallo zusammen. Ich bin ungeduldig geworden - ich stimme zwar der Notwendigkeit von Pseudocode zu, aber ich denke, dass ihr ein bisschen zu weit gegangen seid (sorry Tim).

Ich habe das hier gerade zusammengebastelt. Ich habe nur eine halbe Stunde damit verbracht, habe es nicht auf Fehler, Syntax etc. etc. überprüft.

Aber wenn Sie es ausprobieren, sollte es dem, was Sie brauchen, ziemlich nahe kommen. Ich habe es absichtlich als Grundgerüst belassen, damit Sie die Struktur sehen können, aber auch, damit Sie noch Arbeit haben werden. Als Beispiel habe ich absichtlich alle Fehlerprüfungen in der Funktion fnTrade und einen Fehler in der TakeProfit-Behandlung weggelassen.


CB


UPDATE: Aufgrund von Tims nachfolgendem Posting habe ich den EA, den ich für Sie erstellt habe, gelöscht und werde mich zurückziehen und es stattdessen Tim machen lassen.


TIM: In Bezug auf Ihren Beitrag über die Logik für mehrere Währungen hatte ich diesen EA so strukturiert, dass er symbolunabhängig ist, da Nick mir sagte, dass er das wollte, während ich mit ihm arbeitete, bevor Sie kamen, um ihn zu übernehmen.

 

Hallo Nick. Cloudbreaker

Cloudbreaker, ich nehme Ihre Frustration über den langsamen Fortschritt zur Kenntnis. Ich dachte, der Sinn dieser Übung sei es, Nick beizubringen, wie man mit MT4 programmiert. Nach den vielen Codes und Diskussionen in diesem Forum zu urteilen, bleibe ich bei meiner Behauptung, dass ein systemischer Ansatz der zuverlässigste und oft auch der schnellste Weg ist, um qualitativ hochwertigen Code zu produzieren.


Ich verstehe jedoch Ihren Standpunkt, dass es sich hier um ein recht triviales Projekt handelt und dass jeder fähige Programmierer so etwas sehr schnell und mit einem Minimum an Formalitäten auf die Beine stellen könnte. Ich werde mich bemühen, die Dinge so schnell wie möglich voranzutreiben, um die Frustration für alle zu minimieren, aber bitte bedenken Sie, dass das Lernen oft Zeit braucht und es für diejenigen, die es können, leicht ist, mit denen, die versuchen zu lernen, frustriert zu werden.

Nick,

Der Code, den du gepostet hast, war nicht ganz das, wonach ich gesucht habe. Ich habe die Dinge ein wenig aufpoliert und ein paar Hinweise für Sie in den Code eingefügt, damit Sie etwas tun können.

Die nächste Aufgabe besteht darin, eine Möglichkeit zu schaffen, die verschiedenen Währungspaare zu behandeln, ohne für jedes Paar eine eigene Prozedur zu schreiben.


Eine Möglichkeit, dies zu tun, wäre, die Währungspaare als ARRAY von STRINGS im globalen Deklarationsbereich zu deklarieren.

Verwenden Sie dann im Hauptprogrammblock (Startfunktion) eine FOR-Schleife, um durch das Array zu indizieren.

Versuchen Sie, diesen Code zu programmieren, und posten Sie ihn dann im Forum.


Wir müssen uns auch Gedanken über die Fehlerbehandlung, das Testen und Debuggen machen. Eine gängige Methode, dies in MetaTrader zu tun, ist die Verwendung der Log-Dateien. Ich habe ein paar Zeilen in den EA eingefügt, um Ihnen den Einstieg zu erleichtern.

Bitte sehen Sie es sich an und versuchen Sie zu verstehen, was ich getan habe. Sie können den Code ausführen und einen Blick auf die Protokolldatei auf einem aktiven Konto oder im Strategietester werfen.


Mit freundlichen Grüßen

Tim

Dateien:
 

Hallo Leute!

Ich danke euch beiden für eure Unterstützung auf dieser Reise! Ich stimme zu, dass ein systematischer Ansatz für einen Neuling unerlässlich ist, aber genauso wichtig ist es, sich in den Code zu vertiefen. Diese beiden Komponenten helfen sich gegenseitig zu wachsen und fördern den Lernprozess. Das ist mir klar geworden, und deshalb habe ich für beides Zeit aufgewendet. Je besser man den Kodierungsprozess versteht, desto besser werden der Pseudocode und das spätere Programm sein.

Ich werde mit diesem Vorhaben fortfahren und mit beiden Dokumenten parallel arbeiten - ich denke, das würde den Lernprozess wie nichts anderes beschleunigen, da ich einen konkreten Bezugspunkt habe.

Das Hauptaugenmerk wird darauf liegen, den Pseudocode in Code umzuwandeln, aber ich werde CBs Dokument nutzen, um Ideen zu bekommen, wie und welche Teile ich hinzufügen kann, und ich werde es parallel dazu nutzen, um zu lernen, natürlich auch mit Tims Anleitung auf diesem Weg.

Nick

 
niko:

Hallo Leute!

Ich danke euch beiden für eure Unterstützung auf dieser Reise! Ich stimme zu, dass ein systematischer Ansatz für einen Neuling unerlässlich ist, aber genauso wichtig ist es, sich in den Code zu vertiefen. Diese beiden Komponenten helfen sich gegenseitig zu wachsen und fördern den Lernprozess. Das ist mir klar geworden, und deshalb habe ich für beides Zeit aufgewendet. Je besser man den Kodierungsprozess versteht, desto besser werden der Pseudocode und das spätere Programm sein.

Ich werde mit diesem Vorhaben fortfahren und mit beiden Dokumenten parallel arbeiten - ich denke, das würde den Lernprozess wie nichts anderes beschleunigen, da ich einen konkreten Bezugspunkt habe.

Das Hauptaugenmerk wird darauf liegen, den Pseudocode in Code umzuwandeln, aber ich werde CBs Dokument nutzen, um Ideen zu bekommen, wie und welche Teile ich hinzufügen kann, und ich werde es parallel dazu nutzen, um zu lernen, natürlich auch mit Tims Anleitung auf diesem Weg.

Nick

Hallo Nick, ich werde mich jetzt zurückziehen. Siehe Änderung in meinem Beitrag oben.


CB

 
cloudbreaker:

Hallo Nick, ich werde mich jetzt zurückziehen. Siehe Änderungsantrag zu meinem Beitrag oben.


CB

Hey CB, das habe ich mir schon gedacht, also habe ich ihn schnell genug heruntergeladen. Wie ich bereits erwähnt habe, hilft mir alles, was mit meiner Idee zu tun hat, beim Lernen. Dein Code wird mich nicht vom Lernen abhalten, da ich ihn nicht in Tims Vorlage kopieren werde, sondern versuchen werde, ihn zu verstehen, um zu sehen, wie die Dinge anders gemacht werden können :)


Alles, was hilft, sagt man!

 
niko:

Hey CB, das habe ich mir schon gedacht, also habe ich es schnell genug heruntergeladen. Wie ich schon sagte, hilft mir alles, was mit der Idee zu tun hat, die ich habe, zu lernen. Dein Code wird mich nicht vom Lernen abhalten, denn ich werde ihn nicht in Tims Vorlage kopieren, sondern versuchen, ihn zu verstehen, um zu sehen, wie die Dinge anders gemacht werden können :)


Alles hilft, wie man so schön sagt!

Keine Sorge. Mit nur wenigen Änderungen sollte es eigentlich funktionieren.

Sie sollten damit beginnen, den TakeProfit-Fehler" zu ändern, den ich für Sie eingebaut habe. Schauen Sie sich an, wie der StopLoss funktioniert, um einen Anhaltspunkt zu erhalten.

Sobald Sie es zum Laufen gebracht haben, hoffe ich, dass Sie damit beginnen, eine Fehlerbehandlung und einige bedienerfreundliche Dinge wie Print()-Anweisungen hinzuzufügen, damit Sie in den Protokollen leicht sehen können, was es tut.

Pseudocode ist wichtig, bevor man sich an den Code macht (selbst für erfahrene Programmierer), aber man sollte es nicht übertreiben.

Sie scheinen durch Ihre gutmütige Art Hilfe anzuziehen. Ich vermute, dass Sie entweder in der Personalabteilung arbeiten oder sich für die menschliche Psychologie interessieren?


CB

Grund der Beschwerde: