Einzelnen Beitrag anzeigen
  #12 (permalink)  
Alt 22.08.14
Eberhard Eberhard ist offline
Neues Mitglied
 
Registriert seit: Mar 2014
Beiträge: 20
Eberhard befindet sich auf einem aufstrebenden Ast
Standard

Hallo fxdaytrader,
hallo traderdoc,

zunächst zum Vorschlag, meinen EA hier anzuhängen: Es handelt sich um einen MQL5-CExpert-basierten ExpertAdvisor mit schätzungsweise 20 vernetzten Includedateien, natürlich alle in MQL5 geschrieben. Diese gesamten Dateien sind von der Struktur her von der Firma MetaQuotes im MetaTrader 5 vorgegeben und stehen zur individuellen Abänderungen für die Erstellung eines eigenen EA zur Verfügung, sind aber alle miteinander vernetzt, sozusagen angeflanscht. Diesen Komplex an Dateien zu bearbeiten ist also die Grundidee der Firma MetaQuotes bezüglich des MQL5-basierten CExpert.

Die allermeisten von Euch werden dieses "Angebot" zur Erstellung eines EA nicht nutzen. Ich habe es getan und bereue es angesichts der bereits vorliegenden Ergebnisse nicht.

MQL5 hat eine völlig andere Sprachstruktur als die von MQL4, denn MQL5 ist im schnellen C++ geschrieben, während MQL4 in dem langsamen C geschrieben ist. MQL5 ist also in einer anderen, ziemlich kompilierten und damit sehr funktionellen Programmiersprache geschrieben (natürlich gibt es Ähnlichkeiten, weil C++ auf C basiert). Meinen Algorithmus zur Implementierung in einen Expert Advisor habe ich in der C-basierten Programmierhochsprache Mathematica entwickelt und es geht jetzt nur noch darum, eine Laufzeitbegrenzung in den C++ basierten EA einzufügen. Ihr könnt also davon ausgehen, dass ich selber programmieren kann. Allerdings umfasst die MQL5-Editoranleitung ca. 4000 Seiten und ist miserabelst aus dem Russischen in die Englische oder Deutsche Sprache übersetzt. Es ist mir völlig unverständlich, wie die Firma MetaQuotes soetwas überhaupt in die Welt setzen kann. Und ich hatte mir angesichts dieses stofflichen Umfangs erhofft, dass mir bei dem beschriebenen Laufzeitbegrenzungsproblem doch jemand behilflich sein kann, da ich inzwischen von ganz anderer Seite bestätigt bekommen habe, dass dieses auf den ersten Blick einfach zu lösen scheinende Problem offensichtlich doch in diesem speziellen Anwendungsfall einige Probleme bereitet - merkwürdigerweise. Hier scheint MQL4 einfachere Lösungen anzubieten.

Natürlich habe ich mich darüber gefreut, dass traderdoc mich mit seinem Hinweis, es mit

if(TimeCurrent() - PositionGetInteger(POSITION_TIME_MSC)>=3*24* 3600*1000)

zu versuchen, in meiner eigenen Vorstellung bestätigt hat.

Doch das Closing funktioniert jedenfalls im StrategieTester nicht. Vielleicht funktioniert es aber sogar in der realen Anwendung. Doch damit wären - ohne vorherige Backtests - natürlich erhebliche finanzielle Risiken verbunden, die ich nicht einzugehen bereit bin.

Also ist guter Rat teuer.

Andererseits gibt es in MQL5 und hier vor allem im Handler CTrade::OrderOpen die Möglichkeit, die "expiration", also die Order-Dauer einzustellen. Doch ich benötige die Position-Dauer, denn nur sie kann die Trade-Laufzeitbegrenzung regulieren. D.h. es stellt sich die Frage, die Position-Einstellung mit einer Expiration zu verbinden, nur hier fehlt mir die Erfahrung. Und die Includedateien sind kompliziert verschachtelt.

Der MQL5-Print-Befehl funktioniert per Definition überhaupt nur in wenigen "Handlern", insbesondere im OnInit-Handler, so dass genau das ausfällt, was ich mir auch gerne gewünscht hätte, nämlich die punktuelle Kontrolle über die Einzelprogrammierschritte. Was sich MetaQuotes dabei gedacht hat, bleibt sein Geheimnis.

Das von mir aufgetischte, zunächst einfach zu lösen erscheinende Problem, ist offensichtlich nicht so einfach zu lösen...

Ich danke Euch für Eure gutgemeinten Ratschläge.

Vielleicht kommt ja noch jemand auf einen interssanten Lösungsvorschlag, was hier allerdings wohl eigene tiefergehende Erfahrungen mit dem MQL5-basierten CExpert voraussetzt.