Inhalte aufrufen

  • Über Facebook anmelden Über Twitter anmelden Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Stolpersteine beim programmieren

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
56 Antworten zu diesem Thema

  #41
OFFLINE   reteid2222

Hoffentlich auch die Möglichkeit meine Kommentare zu verstehen :w00t:

Aber freut mich für jeden der es hier schafft EAs zu coden :welldone:

Dateianhang


IBUPLpwH.jpg


  #42
OFFLINE   traderdoc


@Trendfolger2008, ich jedenfalls freue mich für Dich, dass Du den steinigen Weg des Programmierens weiter gehst. Und wie immer kannst Du Dich auf die wahre Hilfe unsererseits! verlassen.

Mich hat v.a. Dein letzter Absatz gefreut, denn genau das ist es, was einen Programmierer vom Kunden (Nichtprogrammierer) unterscheidet. Der Programmierer muss alle! möglichen Wege berücksichtigen, sonst läuft der EA irgendwo hin. Diese Berücksichtigung lernt man aber nur mit zunehmender Zahl geschriebener Programme. Und wenn ich dann zuweilen Handelssysteme auf den Tisch bekomme, die eben nicht so ausgegoren sind, dann ist das z.T. ein langer Weg bis zum fertigen EA, und den wird eben nie ein Builderprogramm bewältigen können. Und deshalb sind wir da!

Also weiter so, bleib dran.

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #43
OFFLINE   Trendfolger2008

@Traderdoc: Ja, inzwischen habe ich auch ein richtig schlechtes gewissen wenn ich an den damaligen Auftrag denke, den Du für mich trotzdem 1A programmiert hast.

Und dabei war ich damals der festen Überzeugung an alle Eventualitäten gedacht zu haben. Wenn ich mir jetzt vorstelle, jemand würde mit ähnlichem Wunsch auf mich zukommen, ich würde ihn zur Hölle jagen. Aber das macht dann eben die Erfahrung und den Profi aus.


  • Crashbulle gefällt das

  #44
OFFLINE   ping

Ein positiver Nebeneffekt war auf jeden Fall dass man, bzw ich mir beim programmieren sehr viel detailliertere Gedanken zur Strategie machen musste Dadurch haben sich direkt weitere Möglichkeiten eröffnet.

 

... programmieren ist reine Logik und bei der Entwicklung eines gut fuktionierenden Tradingsystems (MM, Verhalten am Markt usw.) können viele Aufgabenstellungen und Probleme ebenfalls durch reine Logik beantwortet und gelöst werden.

Ein selbst geschriebenes Programm, wo man genau nachvollziehen kann was es macht und welches man auch selbst weiterentwickeln kann, ist 1.000 mal mehr Wert als ein im Internet kopiertes oder bestelltes Programm. Damit übernimmt man auch in diesem Teilbereich 100% Verantwortung, welche für erfolgreiches Trading unabdingbar ist.

 

ciao ping


... Willkommen im Kreis der Progger. :welldone:


  • asfranz gefällt das

8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|


  #45
OFFLINE   traderdoc

@Traderdoc: Ja, inzwischen habe ich auch ein richtig schlechtes gewissen wenn ich an den damaligen Auftrag denke, den Du für mich trotzdem 1A programmiert hast.
Und dabei war ich damals der festen Überzeugung an alle Eventualitäten gedacht zu haben. Wenn ich mir jetzt vorstelle, jemand würde mit ähnlichem Wunsch auf mich zukommen, ich würde ihn zur Hölle jagen. Aber das macht dann eben die Erfahrung und den Profi aus.


Nein, ein schlechtes Gewissen brauchst Du nicht zu haben, weil ein Nichtprogrammierer einfach nicht so denkt wie ein Programmierer. Und ja, es kommt die Erfahrung natürlich dazu, um die vielen Irrwege eines EAs zu erkennen und codetechnisch abzudecken. Selbst ich ertappe mich nach so vielen Hunderten programmierten EAs noch manchmal dabei, auch nicht alle Wege sofort zu erkennen. Die späten Fehlermeldungen, aufgrund nahezu fast einmaliger Rahmenbedingungen, lehren mich dann Besseres. Übrigens - Irrwege - ein Thema mit dem die Builder fast aussichtslose Anstrengungen unternehmen könnten und dann trotzdem keinen Erfolg hätten. Und auch ein später aufgetretener Fehler ist einer, nur dass man bei dem eben erst überrascht wird, wenn man denkt, der EA läuft stabil und überlässt ihm sich selbst, mit evtl. weitreichenden Konsequenzen.

Aber jeder, der sich ernsthaft mit dem Thema Programmierung auseinandersetzt, wird merken, dass man
1. nie auslernt
2. immer irgendwelche Fehler einbaut
3. gelegentlich bei der Fehlersuche auch noch die letzten Haare lässt
4. ein befriedigendes und erhabenes Gefühl erlebt, wenn man dann sieht, wie das umgesetzte Handelssystem automatisch läuft
5. auf jeden Fall geistig fit bleibt, denn Programmierung ist geistiger Hochleistungssport

Ich wünsche Dir und allen anderen Einsteigern, den nötigen Biss, eine ordentliche Portion Ausdauer und möge der Compiler immer mit Euch gnädig sein.

traderdoc
  • €urix und asfranz gefällt das

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #46
OFFLINE   Trendfolger2008

Wieder einige Tage vergangen und viel ausprobiert.

Bei einer Sache habe ich aber das Gefühl, es sehr umständlich anzugehen. Und zwar wollte ich eigentlich nur abfragen ob es im Chart aktive z.B. BUYLIMIT Orders gibt. Leider viel mir keine bessere Lösung ein, als dafür eine Funktion zu schreiben, welche als Integer Wert, die Anzahl der entsprechenden Orders zurückgibt. Sehr ähnlich dem Ablauf, als wenn ich Orders diesen Typus schließen oder abändern wollte. Nun, nicht nur dass mir dieser Weg als sehr umständlich erscheint, so habe ich zudem mehrere Warnungen bezüglich der Variablen z. Diese wäre wohl fehlerhaft deklariert.

Please Login or Register to see this Hidden Content

Vielleicht kann mir jemand dabei helfen oder weiß eine bessere Methode.

 

 

Okay... Woher der Warhinweis gekommen ist habe ich rausgefunden. Musste "int z" lediglich auf "int z=0;" abändern. Bin irgendwie davon ausgegangen das Variablen bei der Deklaration von alleine auf 0 gesetzt werden. Das war wohl eine Fehlannahme.

Gleichwohl bleibt die Frage ob es für die Abfrage nicht eine einfachere bzw direktere Möglichkeit gibt.


Bearbeitet von Trendfolger2008, 18 August 2017 - 13:10 Uhr,


  #47
OFFLINE   traderdoc

Nein, das sieht doch gut aus und geht auch nicht kürzer, wenn man nicht ein paar Zeilen jeweils zusammenfassen will, worunter dann aber sehr die Übersichtlichkeit leiden würde.

Einfach so belassen.

traderdoc

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #48
OFFLINE   titanfx

Das passt gut zum Thema und hier hat der Compiler fairerweise rechtzeitig Alarm geschlagen.

Das ist der fieseste Stolperstein beim Programmieren - nicht initialisierte Variable!

Frühere Compiler Versionen hätte dies durchgelassen, weil es kein syntaxischer Fehler ist.

 

Würde dir auf den Weg noch geben - initialisere immer die Variablen, die weiter verarbeitet werden sollen oder besser machst du es einfach immer, es sind dann Fehler die sehr schwer im nachhineien zu finden sind, wenn was nicht läuft. String Variablen wurden bis dato automatisch initialisert, nur die anderen Variablen nicht.

Habe noch Mal in der aktuellen Doku nachgeschaut - vom String ist auch nun kein Wort mehr erwähnt.

Also gibt acht - immer initialiseren.

 

Den Rest hast du prima gezaubert, hier würde wahrscheinlich jeder etwas anders lösen, aber die Logik und die Befehle sind identisch.

Ich verwende weniger geschweifte Klammern aber das ist bei jedem anders.

Hauptsache Du musst deinen Code selbst verstehen und je verständlicher Du es für Dich schreibst, desto einfache wird es auch beim Erlernen vom MQL4.

Da du sowieso noch Anfänger bist, wirst du deinen Codingstill eventuell noch ändern oder anpassen, ging bei mir auch nicht anders.

Gut ist, dass du hintefragst, dafür ist der Forum auch da.



  #49
ONLINE   ejzj1

Obwohl ich kein MQL4 kann (ich entwickle in C#) eine Anmerkung zu den Klammern.

Ich würde sogar hier eine Klammer setzen.

Please Login or Register to see this Hidden Content

Denn wenn du mal den IF-Block erweiterst, kann schnell ein schwer zu findendes Problem entstehen.

 

Es kann so gemeint sein ...

Please Login or Register to see this Hidden Content

 oder so ...

Please Login or Register to see this Hidden Content

Aber wie @titanfx gesagt hat, jeder hat seinen eigenen Stil.



  #50
ONLINE   SwingMan

Obwohl ich kein MQL4 kann (ich entwickle in C#) eine Anmerkung zu den Klammern.

Ich würde sogar hier eine Klammer setzen.

Please Login or Register to see this Hidden Content

Denn wenn du mal den IF-Block erweiterst, kann schnell ein schwer zu findendes Problem entstehen.

 

 

Ist mir schon passiert, und brauchte lange Zeit die Ursache zu finden!



  #51
OFFLINE   traderdoc

Nja, das ist aber eine gängige Schreibweise, dass einzeilige Anweisungen dann direkt hinter die Abfrage geschrieben werden, um wiederum den Code von der Länge her, nicht unnötig aufzublähen.

traderdoc

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #52
ONLINE   ejzj1

Da will ich die auch nicht widersprechen. Ich habe diese Schreibweise auch erst verwendet, nachdem ich seeeeehr lange einen Fehler gesucht habe. Mein Problem dabei war, das ich die nicht vorhandene Klammer "gesehen" habe.
Aus diesem Grund verzichte ich mittlerweise weitest gehend auf super effizenten Code zugunsten von gut lesbaren Code. Spätestens dann, wenn man sich mit länger nicht benutzten Code beschäftigen muss, sehe ich die Vorteile
in der guten Lesbarkeit.



  #53
OFFLINE   Trendfolger2008

Nein, das sieht doch gut aus und geht auch nicht kürzer, wenn man nicht ein paar Zeilen jeweils zusammenfassen will, worunter dann aber sehr die Übersichtlichkeit leiden würde.

 

Keine Verbesserungsvorschläge? Da bin ich jetzt mit mir aber sehr zufrieden.

 

@ejzj1: Normalerweise setze ich auch bei jeder Abfrage und Schleife Klammern damit ich ein einheitliches Schema habe und nicht immer wegen unterschiedlicher Schreibweisen überlegen muss.

Du hast sicher Recht wenn Du sagst, auf diese Weise schleichen sich sehr schnell Fehler ein die man im Nachhinein nur schwer findet, besonders weil es teilweise nur logische und keine vom Compiler erkennbaren Synthaxfehler sind.

Wie gesagt bin ich aber noch sehr weit am Anfang und da ich noch häufig Änderungen und Ergänzungen vornehme bleibt die einheitliche Schreibweise gelegentlich auf der Strecke.



  #54
OFFLINE   reteid2222

Wieder einige Tage vergangen und viel ausprobiert.

Bei einer Sache habe ich aber das Gefühl, es sehr umständlich anzugehen. Und zwar wollte ich eigentlich nur abfragen ob es im Chart aktive z.B. BUYLIMIT Orders gibt. Leider viel mir keine bessere Lösung ein, als dafür eine Funktion zu schreiben, welche als Integer Wert, die Anzahl der entsprechenden Orders zurückgibt. Sehr ähnlich dem Ablauf, als wenn ich Orders diesen Typus schließen oder abändern wollte. Nun, nicht nur dass mir dieser Weg als sehr umständlich erscheint, so habe ich zudem mehrere Warnungen bezüglich der Variablen z. Diese wäre wohl fehlerhaft deklariert.

Please Login or Register to see this Hidden Content

Vielleicht kann mir jemand dabei helfen oder weiß eine bessere Methode.

 

 

Okay... Woher der Warhinweis gekommen ist habe ich rausgefunden. Musste "int z" lediglich auf "int z=0;" abändern. Bin irgendwie davon ausgegangen das Variablen bei der Deklaration von alleine auf 0 gesetzt werden. Das war wohl eine Fehlannahme.

Gleichwohl bleibt die Frage ob es für die Abfrage nicht eine einfachere bzw direktere Möglichkeit gibt.

 

 

Meine Version:

 

Please Login or Register to see this Hidden Content

 Zunächst 4 Zeilen, die kenntlich machen, dass wir hier eine Methode haben mit Kurzbeschreibung

Please Login or Register to see this Hidden Content

Variablen immer mit aussagekräftigen Namen belegen...dann kannst du in 4 Wochen über den Code schauen, und weisst sofort wie die Methode funktioniert

Please Login or Register to see this Hidden Content

Laufvariablen für Wiederholungsanweisungen sind immer i, falls nötig j evtl. noch k bei dreifachen Verschachtelungen.

Vorteil: Man sieht auf den ersten Blick, welche Variable im Durchgang incrementiert wird!

 

Please Login or Register to see this Hidden Content

Die Klammer um jeden  "returnten" Wert kannst du sparen...auch Java benötigt das nicht mehr...da man hier öfters Termen, die bereits Klammern haben zurückgibt, vereinfacht dies die Lesbarkeit.

Please Login or Register to see this Hidden Content

Hier lasse ich alle Klammern weg, was viele Zeilen erspart. 
Problematik ist natürlich oben beschrieben...diese "Kurzversion" ist wie i++, i/=2; ein weiteres Abstraktionslevel!

Regeln:
-Von den Strukturen if oder for wird nur 1 Zeile ausgeführt....

- Das else gehört bei if Verschachtelungen zu dem LETZTEN if.....

Wenn man das alles weiss UND oft programmiert, ist mir persönlich eine kurze Version lieber...

Please Login or Register to see this Hidden Content

Nach Bedingungen werden die Anweisungen in die nächste Zeile geschrieben...auch hier schreiben viele die einzeilige Version aber in der zweizeiligen ist die Logik-> Einrückung viel besser zu erkennen...

 

Alles meine persönlich Meinung=Programmierstil...ich hoffe, es hat etwas geholfen...

lg R


  • asfranz gefällt das

IBUPLpwH.jpg


  #55
ONLINE   SwingMan

 

Meine Version:

 

Sehr schön und "didaktisch" beschrieben :welldone:

 

Lediglich bei den return würden vielleicht die Programmierer der "alten Schule" die Klammern behalten...



  #56
OFFLINE   ping

Please Login or Register to see this Hidden Content

 

also wenn man's schon kurz haben möchte, dann wohl eher so:

Please Login or Register to see this Hidden Content


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|


  #57
OFFLINE   traderdoc

Nein, wenn man es richtig kurz haben will, warum dann nicht gleich konsequenterweise so:

Please Login or Register to see this Hidden Content

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 






0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer