Inhalte aufrufen

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

Vorteile MT5

- - - - -

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

  #1
OFFLINE   Elatos

Leute, ich muss jetzt noch mal fragen, ob mir einer erklären kann, worin sich die Programmiersprache im MT5 von MT4 verbessert hat?

 

Ich habe mich jetzt langsam eingefitzt, aber ich sehe keinen Vorteil. Aber ich nehme an, dass da entscheidende Vorteile sein müssen, sonst hätte man das ja gewiss nicht so umgestellt...

 

Wäre ja schade, wenn ich die Vorteile nicht nutzen würde...

 

Interessanter Weise wird jetzt beispielsweise die Ticketdeklaration in

 

m_position.Ticket()

 

mit ulong vorgegeben? Wenn ich richtig gezählt habe, dann sind das 20 Stellen... Die MagicNumber bekommt glaub ich long...war früher beides int. Dazu kann ich nur mit den Schultern zucken - Wo ist der Vorteil?

 

Oder hier:

Neu:

SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE)==SYMBOL_TRADE_MODE_FULL

 

alt:

MarketInfo(Symbol(),MODE_TRADEALLOWED)

 

Sollte doch exakt denselben Sinn hergeben...aber jetzt mit der doppelten Zeichenanzahl...

Ja, man kann wohl auch vieles mit den Klassen ausdrücken, aber der Vorteil wird dabei auch nicht riesig und erst recht nicht im Vergleich zu früher oder???

 



  #2
OFFLINE   CashDigger

Kurz gesagt ist bei MT5 der Backtester schneller und vor allem sind die Historydaten besser. Ein weiterer Punkt ist das mit MT5 im Prinzip alle Märkte gehandelt werden können wie auch Aktien oder Futures.

 

Die Sprache ist, wie du festgestellt hast, tatsächlich bei vielen Dingen umständlicher geworden, allerdings gibt es auch neue Möglichkeiten. Ob man diese Möglichkeiten braucht ist wieder eine andere Sache.

Die OOP Möglichkeit in MT5 verbessert zwar nicht wirklich die Performance aber dafür die Übersicht des Codes. Ob man OOP nutzt ist aber freigestellt, es wird ziemlich gehypt und ist für viele das nonplusultra, ich finde es in bestimmten Fällen extrem praktisch aber man sollte OOP selektiv nach Bedarf einsetzen und nicht aus Prinzip immer das ganze Programm darauf aufbauen. Mit dem Porsche auf der Autobahn, mit dem Geländewagen im Gelände.

 

Das ganz ursprüngliche MT4 war eine leichte kleine Software. MT5 und MT4.5 sind, wie fast jede neue Software, dagegen ein schwerer Brocken. Das ist ein Trend, es geht heute leider nicht mehr um effiziente Programme da die Hardware immer besser wird und die Programmierer in einem immer weiter von der Hardware entfernten Abstraktionsniveau programmieren. Das wirkt sich auch auf den Ressourcenverbrauch aus zB schlucken die Programme ordentlich RAM weg etc. Trotz aller nützlichen und unnützlichen Möglichkeiten vermisst man doch schon manchmal die schönen alten Programme mit wenigen KB/MB ohne Datenausleitung, Overhead und den ganzen Schnick-Schnack. Manachmal wird Software kritisiert wenn es altbacken rüberkommt, für mich ist das auf das nötigste Reduzierte fast eher ein Qualitätsmerkmal. Ein positives Beispiel ist noch Amibroker, das Ding ist wirklich richtig effizient geschrieben, sieht man auch an der Dateigröße.

 

Mit MT5 kann man fast alles erdenkliche umsetzen und das Ganze ordentlich testen und zudem an diversen Märkten laufen lassen. Insofern erfüllt es vieles aber MQL5 finde ich als Sprache jetzt auch nicht so besonders.


Bearbeitet von CashDigger, 21 November 2018 - 01:45 Uhr,


  #3
OFFLINE   Joachim108

Ein anderer, wenn auch nicht jedem wichtiger Voteil bei MT5 ist die Möglichkeit aus dem EA heraus direkt zu zeichnen (Indikatoren, Pfeile etc.), was im MT4 den Indikatoren vorbehalten war.
Diese Möglichkeit führt allerdings auch dazu, dass die Programmierung viel komplexer geworden ist.
Ich will das mal am Beispiel eines einfachen Gleitenden Durchschnitts zeigen:

 

Im MT4 war es ja extrem einfach einer Variablen einen Gleitenden Durchschnitt zuzuweisen, auch wenn man das nicht zeichnen konnte und den GD dann als Indikator extra in den Chart legen musste.
Da reichte eine einzige Zeile für, die z.B. so aussehen könnte:

GD = iMA(NULL,PERIOD_CURRENT,20,0,MODE_SMA,PRICE_CLOSE,1);

 

Das gleiche sieht im MT5 dann so aus:

double ma[];

ArraySetAsSeries(ma,true);
int maHandle= iMA(NULL,PERIOD_CURRENT,20,0,MODE_SMA,PRICE_CLOSE);
CopyBuffer(maHandle,0,0,10,ma);

GD = ma[1];

 

Aus einer einzigen Zeile sind nun fünf geworden und in ähnlicher Weise muss man mit allen Indis umgehen, da man aus ihnen erst einmal eine aufsteigende Timeseries machen muss. Das ist für die Programmierung sicherlich keine Vereinfachung und dies ist nur ein Beispiel von vielen.

Der Vorteil von dieser Vorgehensweise ist, dass man den GD direkt in den Chart zeichen kann. Und dafür braucht man dann auch nur eine einzige Zeile:

ChartIndicatorAdd(0,0,maHandle);

 

Was man aber klar sagen muss ist, dass vieles in MQL4 und MQL5 ähnlich oder gleich geblieben ist. Wer also mit mql4 umgehen kann wird den Umstieg relativ gut hinbekommen.


Bearbeitet von Joachim108, 21 November 2018 - 09:27 Uhr,

  • Scusi 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   Elatos

Ja, das ist auf jeden Fall komplizierter geworden. Dabei hatte ich mich so schön eingefitzt...

 

Schade ist es auch, dass es nicht mehr immer funktioniert, dass man einen Befehlt markiert und auf dessen Beschreibung mit einem Klick in der Hilfe zugreifen kann.

 

Beispiel:

 

OrderSend(...)

 

Um mit diesem Befehl eine Order zu öffnen reicht, wenn ich bis jetzt alles richtig verstanden habe, eine Zeile lange nicht mehr aus...

Aber ich habe entdeckt, dass ich ähnlich der Struktur von früher, auch diesen nutzen kann:

 

m_trade.Sell(lot,m_symbol.Name(),m_symbol.Bid(),sl,tp)

 

Dabei ist jedoch die Funktionsweise des hierin enthaltenen Sell-Befehls nur zu finden, wenn man den von Hand sucht. Per OneKlick gehts nicht.

Aber noch spannender:Die OrderSend-Funktion hatte früher verlässlich funktioniert, wenn sie die Ticketnummer zurück gegeben hatte. Bei bei <0 nutzte man GetLastError().

 

Jetzt...nicht mehr...nöööö...da muss erst noch ResultDeal und ResultRetcode ran. Wem es immer noch nicht reicht, der zieht sich gleich noch ResultRetcodeDescription aufs Kreuz. Und keiner von den dreien ist per OneKlick zu finden.

 

Mmhh...sorry...ich muss mal schimpfen...


Bearbeitet von Elatos, 21 November 2018 - 22:28 Uhr,


  #5
OFFLINE   Elatos

Gerade sehe ich, dass in diesem Ausdruck zum Öffnen einer Order gar keine MagicNumber mehr untergebracht werden kann:

 

m_trade.Sell(lot,m_symbol.Name(),m_symbol.Bid(),sl,tp)

 

Ich nehme an, dass in m_trade diese Informationen stecken, also auch die MagicNumber. Das kann zwei Sachen bedeuten: entweder kann man im MT5 unter einem EA überhaupt nur noch eine MagicNumber vergeben (??) oder ich muss mir dazu eine eigene Klasse oder Funktion oder so etwas basteln(??), um mehrere MagicNumbern vergeben zu können. Also dann doch mit dem OrderSend(...,...) -Konstrukt.


Bearbeitet von Elatos, 21 November 2018 - 23:01 Uhr,


  #6
OFFLINE   Elatos

So, habs ausprobiert - Entwarnung - mehrere MagicNumbern funktioniert noch.



  #7
OFFLINE   Elatos

Hallo Leute,

 

eine neue spannende Frage im MT5 Labyrinth tut sich für mich auf:

 

Wie kann man sich im Tester eine Liste der aktuell gesetzten Globalen Variablen anzeigen lassen.

 

Also zuweisen mit GlobalVariableSet(...) geht auch wieder auslesen, mit GlobalVariableGet(...), aber an der Stelle wo die Anzeige beim MT4 im Testermodus abrufbar war, ist es jetzt nicht mehr möglich.

 

Weiß jemand wo das jetzt möglich ist?



  #8
OFFLINE   Joachim108

Hallo Leute,

 

eine neue spannende Frage im MT5 Labyrinth tut sich für mich auf:

 

Wie kann man sich im Tester eine Liste der aktuell gesetzten Globalen Variablen anzeigen lassen.

 

Also zuweisen mit GlobalVariableSet(...) geht auch wieder auslesen, mit GlobalVariableGet(...), aber an der Stelle wo die Anzeige beim MT4 im Testermodus abrufbar war, ist es jetzt nicht mehr möglich.

 

Weiß jemand wo das jetzt möglich ist?

Also bei mir hat sich da nichts geändert. Die Globalen Variablen kann ich immer noch mit "F3" aufrufen - genau wie im MT4!


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


  #9
OFFLINE   CashDigger

Denk auch daran das die globalen Variablen keine Persistenz haben, genau nur 4 Wochen. Echte Persistenz geht nur über zB csv Datei.



  #10
OFFLINE   Elatos

@Joachim: Sehr gut, F3 funktioniert tatsächlich auch im Tester - einen entsprechenden Button habe ich nicht gefunden, den habe ich nämlich bisher im MT4 immer genutzt, F3 ist natürlich viel effektiver. Dankeschön.

 

@CashDigger: Danke auch dir - ja das stimmt - ich nutze die globalen Variablen um die EA's zwischen den Charts kommunizieren zu lassen. Die gesetzten globalen Variablen erneuere ich dabei ständig.





Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer