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
203 Antworten zu diesem Thema

  #1
OFFLINE   Trendfolger2008

Hallo Tradergemeinschaft,

eigentlich ist dieser Thread nur ein Stressventil. Ich bin nämlich seit geraumer Zeit dabei, mein Handelssystem in einen EA zu bekommen.

Und da ich mit jedem gelösten Problem gefühlte 2 neue bekomme will ich gerade

 

 

AUSRASTEN

 

 

Wenn ich gewusst hätte was für ein Aufwand für vermeintlich einfache Vorgänge nötig ist, ich hätte niemals mit dem Mist angefangen. Ich muss trotzdem gestehen, auch wenn ich noch lange nicht alles so habe dass es wirklich von alleine läuft, die bisherigen Elemente wie z.B. das automatische berechnen der Positionsgröße, platzieren von SL und TP, die Verwaltung der Order (teilschließungen, SL nachziehen,....),... das Alles nimmt einem schon eine ganze Menge Arbeit ab und reduziert die Zeit am PC deutlich.

 

Ich hätte jetzt aber auch mal eine Frage an die Leute die hier einen EA nach dem anderen programmieren, testen,... wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?


Bearbeitet von Trendfolger2008, 19 July 2017 - 19:34 Uhr,

  • CashDigger gefällt das

  #2
OFFLINE   traderdoc

@Trendfolger, es gibt die Option 1, sich durchzubeissen und lernen, lernen und nochmals lernen oder die Option 2, sich den EA programmieren zu lassen.

 

Übrigens Option 1 ist auch der beste Weg und die Antwort, auf Deine Frage, die Du in Deinem letzten Satz formuliert hattest:

 

"wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?"

 

traderdoc


Bearbeitet von traderdoc, 19 July 2017 - 19:42 Uhr,

  • Crashbulle und CashDigger gefällt das

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

 


  #3
OFFLINE   Joachim108

Ich hätte jetzt aber auch mal eine Frage an die Leute die hier einen EA nach dem anderen programmieren, testen,... wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?

Ich hätte da mal zwei Tipps:
1.) Bau dir einen "Default-EA", der schon alles mögliche enthält, wie etwa Funktionen und immer genutzte Sachen. Dann musst du nur noch die eigentliche Logik dazuschreiben und alles geht viel schneller - aber die Arbeit mit dem "Default-EA" muss man sich schon machen

2.) üben, üben, üben...


  • Crashbulle, CashDigger und asfranz gefällt das

Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!

 

http://www.system-check.me


  #4
OFFLINE   CashDigger

was für ein Aufwand für vermeintlich einfache Vorgänge nötig ist

 

Das ist leider so, die trivialsten Dinge können viele Stunden kosten, während das kompliziert Geglaubte in ein paar Minuten runtergeschrieben ist. Dieses Phänomen führt auch zu der Frustration, weil die Zeit oft für die Dinge draufgeht, die für das Gesamtkonzept völlig uninteressant sind.

Das lustige ist doch, wenn diese Probleme schwinden, kommen mit steigenden Fähigkeiten automatisch neue Probleme da die eigenen Ideen immer verrückter und anspruchsvoller werden:) Aber das ist doch herrlich sich an etwas abreiben, bluten und gestärkt hervorgehen.

 

C$D


  • Crashbulle, Joachim108 und asfranz gefällt das

  #5
OFFLINE   Trendfolger2008

Gelernt habe ich bisher schon eine ganze Menge Und viele kleine Erfolge habe ich ja auch schon gehabt. Wie gesagt, bisher ist es zwar nur eine Teilautomatisierung, diese reicht aber aus um die benötigte Zeit am Computer auf vielleicht 15 Minuten am Tag zu reduzieren.


  • Crashbulle gefällt das

  #6
OFFLINE   SwingMan

 

Ich hätte jetzt aber auch mal eine Frage an die Leute die hier einen EA nach dem anderen programmieren, testen,... wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?

 

Ich wollte nur kurz die Beiträge der geschätzten Kollegen ergänzen:

 

- @CashDigger hat Recht dass man oft keine Zeit hat die neuen Ideen und Varianten zu programmieren... Viel leichter ist für Dritte etwas zu schreiben, dann muss man nicht mehr denken...

 

- Nach vielen Jahren Programmierung habe ich festgestellt dass jeder in kürzester Zeit Indikatoren oder EAs programmieren kann. Was aber unerwartet viel Zeit verlangt ist die Bugs die man selber eingebaut hat, zu finden.

Inzwischen hat man den Debugger parat, früher war aber sehr umständlich in der eigenen Logik einen Fehler finden zu können.



  #7
OFFLINE   cybot


Wenn ich gewusst hätte was für ein Aufwand für vermeintlich einfache Vorgänge nötig ist, ich hätte niemals mit dem Mist angefangen. Ich muss trotzdem gestehen, auch wenn ich noch lange nicht alles so habe dass es wirklich von alleine läuft, die bisherigen Elemente wie z.B. das automatische berechnen der Positionsgröße, platzieren von SL und TP, die Verwaltung der Order (teilschließungen, SL nachziehen,....),... das Alles nimmt einem schon eine ganze Menge Arbeit ab und reduziert die Zeit am PC deutlich.

 

Ich hätte jetzt aber auch mal eine Frage an die Leute die hier einen EA nach dem anderen programmieren, testen,... wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?

 

also Metatrader ist was den Programmieraufwand angeht auch mit ABSTAND die aufwändigste Trading-Software die ich kenne, weil man sich im Code um die kleinsten Sachen "von hand" kümmern muss. Wenn man in anderen Softwaerpaketen einfach "Setstoploss(100)" eintippt - geht in Metatrader gleich eine ganze Befehlsarie los plus das ganze Fehlermanagement.

 

 

Ich hätte jetzt aber auch mal eine Frage an die Leute die hier einen EA nach dem anderen programmieren, testen,... wie schafft ihr es so schnell einen EA zu entwerfen und dann auch noch den Code zu schreiben?

ich vermute das machen alle gleich. In MT4 programmiere ich eigentlich nicht mehr wirklich sondern mache copy & paste aus meiner Code-Library. Und wie die meisten habe ich einen Basis EA und definiere dann "nur" noch das Regelwerk. Zum Backtesten benutze ich Metatrader schon lange nicht mehr, aus diversen Gründen, die schon mehrfach angesprochen wurden. Und ich programmiere in MT4 so simpel und übersichtlich wie es nur geht, damit ich den Code auch nach einem Jahr noch auf den ersten Blick verstehe.

 

Aber man braucht wirklich eine ganze Weile - also durchhalten!


  • DaBuschi gefällt das

  #8
OFFLINE   traderdoc

 

ich vermute das machen alle gleich. In MT4 programmiere ich eigentlich nicht mehr wirklich sondern mache copy & paste aus meiner Code-Library. Und wie die meisten habe ich einen Basis EA und definiere dann "nur" noch das Regelwerk. Zum Backtesten benutze ich Metatrader schon lange nicht mehr, aus diversen Gründen, die schon mehrfach angesprochen wurden. Und ich programmiere in MT4 so simpel und übersichtlich wie es nur geht, damit ich den Code auch nach einem Jahr noch auf den ersten Blick verstehe.

 

 

Natürlich benutzt man eine Code-Library bei Standardfunktionen wie z.B. das Checken der Orders, das Setzen der Orders, das Trailing etc, aber das sind meist auch die Standard-Order-Funktionen.

Ich habe Dutzende Aufträge auf dem Tisch gehabt, wo dann das sog. Einfügen des Regelwerkes bei Weitem den Hauptteil der Programmierzeit in Anspruch nahm. Das ist dann z.T. so speziell, da käme man auch

mit den kleinsten Routinen nicht weiter, das muss dann immer wieder exakt auf das Handelssystem zugeschnitten werden. Und daher kommt ja auch meine Aussage, dass jeder EA in gewisser Weise eine eigenständiges

"Kunstwerk" ist, welches auch die Handschrift des Programmierers trägt, denn jeder hat seinen individuellen Stil.

 

Auch ich benutze den Backtester nur noch zum Testen der gerade geschriebenen Programmteile, um den korrekten Ablauf zu checken. Aber es gibt sogar spezielle Handelssysteme, die sind nicht mal mehr per Tester zu checken gehen (z.B. wenn die EIgenschaften des EAs komplett über ein Dashboard laufen).

 

Wichtig ist, wie @cybot schrieb, den EA simpel und v.a. übersichtlich zu schreiben. Dazu gehört nicht nur zwangsläufig eine verständliche Vergabe von Variablennamen, sondern auch das Benutzen von strukturierten Funktionen, das übersichtsverbessernde Einrücken von Zeilen und v.a. die Auskommentierung der wichtigsten Programmzeilen.

 

Aber nichts ist schöner, als die Früchte der Programmierung in Form eines korrekt laufenden Programms zu erleben!

 

In diesem Sinne, üben, üben und nochmals üben.

 

traderdoc


  • DaBuschi und Joachim108 gefällt das

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

 


  #9
OFFLINE   Trendfolger2008

Einen Schritt weiter und ein neues Problem. Vielleicht kann mir jemand helfen.

Wenn ich mit der Funktion iHigh arbeite, wird der Wert dann mit jedem Tick aktualisiert?

Genauer gesagt:

 

double HighDay

HighDay = iHigh("0",PERIOD_D1,0);

 

Damit müsste ich doch immer den Höchstwert des aktuellen Tages bekommen, oder habe ich da einen Denkfehler?



  #10
OFFLINE   Trendfolger2008

Meine Frage hat sich erledigt, manchmal muss man nur kurz ausprobieren.


  • Joachim108 gefällt das

  #11
OFFLINE   Trendfolger2008

Hmmmm, dafür hat sich eine neue Frage aufgetan. Ich habe leider noch Probleme wenn es darum geht, bestimmte Werte nur zu einem festen Zeitpunkt abzufragen.

Diesmal will ich, dass immer wenn ein neuer Handelstag beginnt verschieden Werte gelöscht werden, bzw auf Null zurückgesetzt.

 

 if(OldDay != TimeDay(Time[0])){
 Z3=0; Z4=0;
 OldDay=TimeDay(Time[0]);

 

Kann mir einer sagen ob das so funktionieren würde.
 


Bearbeitet von Trendfolger2008, 24 July 2017 - 21:03 Uhr,


  #12
OFFLINE   ping

Hi Trendfolger,

 

... das ist so technisch ok.

 

Da OldDay ja eigentlich immer den aktuellen Tag anzeigt, ist die Namenswahl vieleicht verwirrend. Besser wäre Tag.

Wenn Variablen des gleichen Typs auf denselben Wert gesetzt werden sollen, kann man auch schreiben Z3=Z4=0;

Please Login or Register to see this Hidden Content

ich persönlich finde, dass es übersichtlicher ist, wenn zueinander gehörende Klammern in derselben Spaltenposition stehen, aber das ist, wie die anderen genannten Dinge auch, nur Geschmackssache.

 

Bis auf die fehlende abschließende geschweifte Klammer ist dein Code korrekt.

 

ciao ping


P.S.: die Variablen werden mit dem ersten eintreffenden Tick des neuen Tages auf 0 gesetzt. (vorausgesetzt der Codeteil steht in der start-, OnTick-, oder OnCalculate-Routine)


  • Trendfolger2008 gefällt das

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


  #13
OFFLINE   Trendfolger2008

@Ping: Ich muss mir wirklich angewöhnen den Code übersichtlicher zu schreiben, so dass z.B. fehlende Klammern sofort ins Auge fallen. Ebenso bin ich dabei die Variablen nach einem einheitlichen Muster zu deklarieren, damit man sofort erkennt wofür diese stehen. Es ist dann aber immer noch was anderes seine guten Vorsätze im "Eifer des Gefechts" in die Tat umzusetzen. Auf jeden Fall, vielen Dank für deine guten Ratschläge und den kontrollierenden Blick.

 

Und da ich im Moment ein paar Tage Urlaub habe und Überstunden ausgleiche, zudem schlechtes Wetter ist, komme ich endlich dazu ein wenig zu programmieren. Dabei habe ich eine Frage zur OrderModify. Ich habe mir eine Funktion geschrieben, welche sofern kein Fehler vorhanden ist, jeweils den SL nachziehen soll. Vielleicht kannst Du oder ein anderer da auch kurz einen Blick drauf werfen. Fehler werden keine angegeben.

Please Login or Register to see this Hidden Content



  #14
OFFLINE   traderdoc

Please Login or Register to see this Hidden Content

traderdoc


  • Trendfolger2008 gefällt das

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

 


  #15
OFFLINE   Trendfolger2008

Da sieht man die Erfahrung! Deine Lösung ist definitiv eleganter. Davon abgesehen würde meine etwas umständlichere Form aber zum selben Ergebnis führen, oder?



  #16
OFFLINE   traderdoc

Da sieht man die Erfahrung! Deine Lösung ist definitiv eleganter. Davon abgesehen würde meine etwas umständlichere Form aber zum selben Ergebnis führen, oder?


Nein, weil Du bei folgender Zeile:

if(Stop_Loss<Stop_Loss_Old) Stop_Loss=Stop_Loss_Old;

zwar den neuen SL mit dem bestehenden SL vergleichst und sollte der neue SL kleiner sein, dann wird aber dem neuen SL wieder der alte SL zugewiesen, d.h. der SL würde immer an derselben Stelle verbleiben.

traderdoc

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

 


  #17
OFFLINE   Trendfolger2008

Hmmm, im moment bin ich ein wenig verwirrt.

 

Mit "if(Stop_Loss<Stop_Loss-Old)" vergleiche ich ob der neue SL < wäre als der bestehende. Das bedeutet doch, da ich eine Long-Order abändern will, dass der neue SL tiefer (weiter entfernt) liegt als der alte.

Wenn das der Fall ist, das heißt die If-Abfrage trifft zu, dann soll der alte Wert beibehalten werden. Daher habe ich der neuen Variablen Stop-Loss den Wert des bereits bestehenden SL zugeordnet. Eben mit der Zeile "Stop_Loss=Stop_Loss_Old". Wenn die If-BEdingung nicht erfüllt wird, dann wird die Zuweisung doch auch nicht erfolgen. Oder habe ich da jetzt einen so krassen Denkfehler?

Jetzt, wo ich mir das genauer anschaue muss ich sogar bei deiner Korrektur nachfragen.

Denn da ist es genau anders herum. Bei dir ist es so, dass wenn der neue SL kleiner ist (weiter entfernt) als der alte, der neue verwendet werden soll. Es soll aber der größere Wert (näher dran) genommen werden.


Bearbeitet von Trendfolger2008, 25 July 2017 - 14:29 Uhr,


  #18
OFFLINE   ping

... dann wäre das meine Variante:

Please Login or Register to see this Hidden Content

... denn wenn du nicht ändern willst, dann muss auch nicht die Order gesendet werden.


  • Trendfolger2008 gefällt das

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


  #19
OFFLINE   Trendfolger2008

... denn wenn du nicht ändern willst, dann muss auch nicht die Order gesendet werden.

 

Das ist dann ja ähnlich wie von Traderdoc. Habe auch seinen Code übernommen und lediglich das Ungleich umgekehrt damit es passt wie von mir gewollt. Funktioniert auch!!! Wie ich schon schrieb, seine Lösung war eleganter.



  #20
OFFLINE   traderdoc

Nun, dann war das mißverständlich kommuniziert. Also in dem Falle, dass immer der höhere SL gesetzt werden soll, wäre die von @ping geschriebene Zeile

 

if(Stop_Loss>OrderStopLoss())

 

die Richtige, denn wie bereits geschrieben, braucht der SL nur geändert werden, wenn auch tatsächlich ein höherer SL vorliegt.

 

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