Strategietester dreht durch - Seite 2

 
Christian:

Ich finde die Arbeitsweise von einigen wie auch @lindomatic genau richtig.

Man erkennt das vieles schnell verstanden wird. Egal wie "wild" der Code auch aussieht.

Und genau so arbeite ich heute noch mit dem Unterschied das ich nach dem Prototyp dann den Code mit Struktur und System neu schreibe.

Der Vorteil in meinen Augen ist:

Schnelles erstellen eines Prototyps, ausloten der Fähigkeiten, und am Ende ist dann doch der "richtige" Code da.

Aber darüber kann man eine Menge Philosophieren und jeder entwickelt einen eigenen Stil beim Programmieren.

Was meinst Du mit Prototyp?

Aber auch Du versuchst doch wohl, wenn möglich, aus dem großen Fundus von fertigem Code zu kopieren, statt alles selber noch einmal zu schreiben - oder?

Man könnte doch wohl sagen, es gibt fast nichts, was nicht schon für MQ4/5 programmiert wurde, warum also das Rad immer neu erfinden?
 
Carl Schreiber:

Was meinst Du mit Prototyp?

Aber auch Du versuchst doch wohl, wenn möglich, aus dem großen Fundus von fertigem Code zu kopieren, statt alles selber noch einmal zu schreiben - oder?

Man könnte doch wohl sagen, es gibt fast nichts, was nicht schon für MQ4/5 programmiert wurde, warum also das Rad immer neu erfinden?

Prototyp steht hier im Zusammenhang mit einer Strategie am Markt.

So in etwa die erste Version der Strategie, wenn sie vielversprechend ist, wird ein echter EA draus.


Auch in der Hardware Entwicklung geht man dieses Schema.

Knete-Model .... Optik.

Holz-Model .... Aerodynamische Eigenschaften.

Stahlversion (Teuer) .... Verkaufsfertiges Produkt.


Natürlich kopiere ich viel, es ist nun mal die schnellste Art zu programmieren.

Aber ich muss auch Verstehen was ich kopiere und das tut man als Anfänger eben nicht und dann entsteht so Code wie im Beispiel.

Und solange man eben diese Fähigkeiten nicht hat, nützt kopieren auch nicht viel.

Ich muss ja auch verstehen wo ich kopierten Code einfüge mit welchen Parametern.


Mein Lehrer hat mir damals gesagt:

Junge wenn du nur Abschreibst wird nichts aus dir.Du must verstehen was du Abschreibst :-)

 
Christian:

Prototyp steht hier im Zusammenhang mit einer Strategie am Markt.

So in etwa die erste Version der Strategie, wenn sie vielversprechend ist, wird ein echter EA draus.


Auch in der Hardware Entwicklung geht man dieses Schema.

Knete-Model .... Optik.

Holz-Model .... Aerodynamische Eigenschaften.

Stahlversion (Teuer) .... Verkaufsfertiges Produkt.


Natürlich kopiere ich viel, es ist nun mal die schnellste Art zu programmieren.

Aber ich muss auch Verstehen was ich kopiere und das tut man als Anfänger eben nicht und dann entsteht so Code wie im Beispiel.

Und solange man eben diese Fähigkeiten nicht hat, nützt kopieren auch nicht viel.

Ich muss ja auch verstehen wo ich kopierten Code einfüge mit welchen Parametern.


Mein Lehrer hat mir damals gesagt:

Junge wenn du nur Abschreibst wird nichts aus dir.Du must verstehen was du Abschreibst :-)

Den lehrer hatte ich auch

 
Otto Pauser:

Ich glaub ich hab da zu viel versprochen. Der Code ist, entschuldige, schrecklich und unübersichtlich.

Ich stelle ein Beispiel auf Basis des Codefragments rein, wie das prinzipiell geht.Umschreiben (besser neu schreiben) musst du dir das selbst :(

Kann ich aber erst Montag oder Dienstag reinstellen weil ich an meinem 'Ding' über's Wochenenden was verbessern möchte.

Bis dahin: Schönes Wochenende!

PS: Home Office ist perfekt zum Traden ;)

Gibt nichts zu entschuldigen, ich hab ständig tage- und gar wochenlang keine Zeit und dann selbst nicht mehr durchgeblickt.. das ist gerade das etwas chaotische Ergebnis, ist aber eigentlich recht einfach:
- Abfrage ob Bedingung (gerade iMA, werden dann weitere durchprobiert, wie sie in welchem Timeframe auf welches Instrument wirken) für buy oder sell gegeben ist
- dann jeweils das Trademonitoring/handling für den Trade:
  - Setzen von initialen SL und TP
  - sobald der Trade in den Win läuft, wird er abgesichert, indem der SL auf Einstand +/- winpips gesetzt wird und der TP vorgeschoben wird
  - wenn der Trade noch weiter in den Win läuft, wird per meinem trailstep der SL weiter rangezogen und der TP um das Doppelte vor
  - hier landet er dann im winclose oder wird via dem SL beendet

Das ist auch schon alles; nun sind die Helfer eingebunden, vieles von Dir und ne Menge Debug-Output, den ich mal ausdünnen muss, den brauche ich nicht mehr.
Aber wenn man sich das 100x angesehen hat, ist's auch schon übersichtlich =)

Bin gespannt auf Deine sortierte Lösung.

HomeOffice ist immer gut und Traden auch, wenn man eine Strategie hat, die funktioniert.. ich arbeite dran.

 
Christian:

Die Abfrage wird nicht ignoriert.


Du hast ein Ablaufproblem wo ein Zeitpuffer fehlt.

Bei dir werden die Trades regulär geschlossen aber bevor der nächste geöffnet wird fehlt ein Zeitpuffer.

Das sieht man schon ohne Debugger:


Es werden innerhalb einer Sekunde 4 Trades ausgeführt !

Du musst vor dem TradeEntry als Bedingung einen Zeitpuffer machen.

Über IsNewBar() oder ähnliches.

Es steht quasi ja schon da ist aber ausgeklammert. Ob es funktioniert habe ich jetzt nicht geprüft.


Des Weiteren steht die Frage warum der Trade so schnell geschlossen wird.

Ursachen sind oft zu enge stopps.



Noch was zum Code:


Gehe sparsam mit Print() um . Eben beim Test war die Log Datei mal eben 4 GB !

Nutze Debug Schalter wie sowas hier

So kannst du auch mal schneller Testen ohne die Ausgaben.

Das CTrade Objekt brauchst du auch nur einmal. Solche Objekte sind groß im Hintergrund

Aber das nur am Rande.

Ja, NewBar als Bedingung hinzuzufügen wäre mein nächster Versuch gewesen. Dennoch sollte es, aus meiner beschränkten Sicht, nicht passieren, dass eine weitere Position geöffnet wird, wenn doch als Bedingung gefordert ist, dass keine offen sein darf.
Aber hinter den Kulissen geht das wohl unter.. wie Du sagst mit dem Zeitpuffer.. also werde ich NewBar hinzufügen -> habe ich gerade gemacht, hilft leider nichts, verstehe ich heute nicht mehr, muss ich morgen mit dem Debugger durch.. 

Danke, dass Du Dir mein Chaos ansiehst =) Ich musste dieses 2te CTrade Objekt umbenennen, da gab es einen Fehler.. dachte mir aber, dass das so nicht optimal sein kann. Ich arbeite dran und komme gerade gut rein, aber ab Mai steht schon mein nächstes Projekt ins Haus und dann verliere ich wieder den Faden.. 
Das mit dem Debug Schalter ist auch ein guter Hinweis, danke.

Zu enge Stopps sind hier nicht das Prob für das schnelle Schließen, die liegen verhältnismäßig weit weg, 40 pips oder 20.. da schlägt der Chart in meinem Testzeitraum (1.4-2.4) nicht hin aus.
 
amando:

Den lehrer hatte ich auch

Aber wenn man oft genug besinnlich und nachgrübelnd abschreibt, versteht man mit der Zeit auch etwas und es kann gar eine Lernmethode sein.
Man muss es aber schreiben, nicht copy & paste.
Aber dennoch läuft mein Hirn immer wieder an den gleichen Stellen ins Leere.. irgendwelche Verknüpfungen, Parameterübergaben in Klassen oder Objekte rein.. da bleibe ich immer wieder zurück.
Aber ich habe auch Jahre gebraucht um das Loopen mittels for-Schleifen über Listen und Arrays zu begreifen; mein Kopf ist dafür nicht geschaffen, aber es ist meine Challenge und mit dem Traden und dem Metatrader hat mich der Programmiereifer echt gepackt.



 
lindomatic:

 Dennoch sollte es, aus meiner beschränkten Sicht, nicht passieren, dass eine weitere Position geöffnet wird, wenn doch als Bedingung gefordert ist, dass keine offen sein darf.

Wenn du deine Sicht-Einheiten mal ganz scharf auf die Trade-Liste (Deals) aus dem Backtest richtest, siehst du das es nicht 2 offene Positionen gleichzeitig gibt.

Immer fein IN-OUT-IN-OUT-IN-OUT....usw. oder siehst du da was anderes ?

Sieht aus wie beim Arzt ...immer eine fortlaufende Ticket Nummer :-)

 
Christian:

Wenn du deine Sicht-Einheiten mal ganz scharf auf die Trade-Liste (Deals) aus dem Backtest richtest, siehst du das es nicht 2 offene Positionen gleichzeitig gibt.

Immer fein IN-OUT-IN-OUT-IN-OUT....usw. oder siehst du da was anderes ?

Sieht aus wie beim Arzt ...immer eine fortlaufende Ticket Nummer :-)

Nein, ich sehe dort nichts anderes; aber in/out sagt mir nichts, wofür steht das? 

Ich schau' jetzt mal, ob ich herausfinde, wieso das NewBar ignoriert wird.

 
Tja, da will man debuggen und bekommt plötzlich einfach mal so keine Werte mehr angezeigt, siehe Bild.


Hab schon neu gestartet, die ganze VM.. hilft nicht.. wie debugged man den Debugger?


 

Zwei Möglichkeiten:

  1. Durch falsch gesetzte Klammern sind die Variablen nicht (mehr) sichtbar.
  2. Die Datenabfrage geschieht vor deren Deklaration, wie zB. CandleCounter in Deinem Bild.