Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43252
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- Thomas75
vor 14 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 545
Gesamt: 545
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 07.07.22
Mitglied
 
Registriert seit: Jun 2022
Beiträge: 42
TraderMike befindet sich auf einem aufstrebenden Ast
Standard EA funktioniert im Chart - nicht im Tester?!

Hallo
EA funktioniert im Chart aber nicht im Tester!

Fehlermeldung: history cache build error

Keine Kompilierfehler oder Warnings
Keine Fehlermeldungen im Journal oder Expert Log
Keine Fehlermeldungen im Tester Log

Code:
FP	0	07:16:06.333	Startup	MetaTester 5 x64 build 3320 (03 Jun 2022)
HF	0	07:16:06.341	Server	MetaTester 5 started on 127.0.0.1:3000
OO	0	07:16:06.343	Startup	initialization finished
NM	0	07:16:06.641	127.0.0.1	login (build 3320)
HJ	0	07:16:06.647	Network	4412 bytes of account info loaded
EL	0	07:16:06.647	Network	1478 bytes of tester parameters loaded
OI	0	07:16:06.647	Network	708 bytes of input parameters loaded
GO	0	07:16:06.647	Network	402 bytes of symbols list loaded (68 symbols)
GJ	0	07:16:06.648	Tester	expert file added: Experts\Advisors\1.ex5. 172075 bytes loaded
CK	0	07:16:06.649	Tester	7492 Mb available, 93 blocks set for ticks generating
PN	0	07:16:06.649	Tester	initial deposit 10000.00 USD, leverage 1:100
CK	0	07:16:06.650	Tester	successfully initialized
FQ	0	07:16:06.650	Network	169 Kb of total initialization data received
FD	0	07:16:06.650	Tester	AMD Ryzen 7 3700X 8-Core, 11998 MB
QL	0	07:16:06.656	Symbols	GBPUSD: symbol to be synchronized
LH	0	07:16:06.656	Symbols	GBPUSD: symbol synchronized, 3720 bytes of symbol info received
HL	0	07:16:06.657	History	GBPUSD: load 27 bytes of history data to synchronize in 0:00:00.000
DS	0	07:16:06.657	History	GBPUSD: history synchronized from 2020.01.01 to 2022.06.28
CK	0	07:16:06.721	History	GBPUSD,Daily: history cache allocated for 700 bars and contains 312 bars from 2020.01.01 00:00 to 2020.12.31 00:00
LI	0	07:16:06.721	History	GBPUSD,Daily: history begins from 2020.01.01 00:00
RH	0	07:16:06.722	Tester	GBPUSD,Daily (DecodeGlobal-Server): every tick generating
GE	0	07:16:08.316	History	GBPUSD,Monthly: history cache allocated for 32 bars and contains 12 bars from 2020.01.01 00:00 to 2020.12.01 00:00
OJ	0	07:16:08.316	History	GBPUSD,Monthly: 1 bar from 2021.01.01 00:00 added
DS	0	07:16:08.316	History	GBPUSD,Monthly: history begins from 2020.01.01 00:00
NI	2	07:16:08.392	History	: history cache build error
CP	2	07:16:08.472	History	: history cache build error
.....snip
Weitere Probleme: StringConcatenate, funktioniert nicht im Loop, EA detached sich vom Chart...keine Fehlermeldung!
Wurde bereits mehrmals im MQL5 Forum beschrieben...
Aussagen:
"You have to deal with this error"
"MetaTrader 5 has no problems"
"Try StringAdd instead"
= Für unvorgesehene MT5 Ergebnisse oder Verhalten, muss es immer und überall Error, Emergency Routinen geben,
was den Code zeilemäßig verdoppelt.

Und noch eines:
iStochastic produziert Memory Leaks (Garbage Collection, wird andere Indis auch betreffen)->gogl

Und noch eines: Time[] array error, trotz array resize, Workaround mit iTime

...Umso länger ich mich mit MT5 befasse umso schlechter wird meine Meinung (viele Fehler wurden bereits gelistet),
das der EA im MQL4 mit über 7000 Code Zeilen ohne Probleme läuft versteht sich von selbst.
1 Monat Neuschreiben (Ohne MQL4 Kompatibilität) auf native MQL5 fürs Nirvana...
Nicht einmal 30 Jahre C/C++ Coding Erfahrung helfen bei er Crapware!

Denke ich beerdige das Projekt MT4->MT5 fürs erste und mache dann weiter wenn Metatrader,
bzw. die Broker ihre MT4 Server Umgebung deaktivieren-was sicher nicht so schnell passieren wird,
ausserdem bin ich da längst in Rente, da habe ich genug Zeit zum ärgern und kopfschütteln

Mike

AchJa: Von Profi Software sind wir da Welten entfernt, nicht einmal auf die Domain0-X kann man zugreifen um HFT, Arbitrage,
Korrelation, Parallel Trading in einem Terminal mit verschiedenen Brokern gleichzeitig machen zu können
...mit nur einem Broker im Wechsel geht das natürlich, oder es braucht mehrere MT5 Installationen.
= kein Vorteil gegenüber MT4
  #2 (permalink)  
Alt 07.07.22
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TraderMike Beitrag anzeigen
EA funktioniert im Chart aber nicht im Tester!

Fehlermeldung: history cache build error
Das deutet eher darauf hin dass du ein Problem mit deinen historischen Daten hast, als mit deinem EA.

Zitat:
Zitat von TraderMike Beitrag anzeigen
AchJa: Von Profi Software sind wir da Welten entfernt, nicht einmal auf die Domain0-X kann man zugreifen um HFT, Arbitrage,
Korrelation, Parallel Trading in einem Terminal mit verschiedenen Brokern gleichzeitig machen zu können
...mit nur einem Broker im Wechsel geht das natürlich, oder es braucht mehrere MT5 Installationen.
= kein Vorteil gegenüber MT4
Bleibst du dann dennoch bei MT4, weil der die o.g. schwächen ja auch hat?
  #3 (permalink)  
Alt 07.07.22
Mitglied
 
Registriert seit: Jun 2022
Beiträge: 42
TraderMike befindet sich auf einem aufstrebenden Ast
Standard

War auch mein Verdacht, aber mehr als History löschen und neu laden geht nicht.
Eventuell liegt es auch am Broker, müßte einen 2ten MT5 installieren, ...

Natürlich hat MT4 die gleichen Nachteile wie MT5, für das Live Trading braucht es kein OOP und Multithreading auch nicht, da sowieso immer alles seriell abgearbeitet wird. Die 2-5ms Vorteil bei einem Threading sind im Retail belanglos, im HFT natürlich Pflicht, aber da kommt sowieso kein MT4/5 zum Einsatz. OOP kann man auch mit MT4 machen, wenn man es braucht.

Alles was man im MT5 machen kann geht auch mit MT4, ausgenommen Backtest Threading, aber das ist für mich nicht relevant, da ich den Tester nur zum Code prüfen brauche.

Was mir noch aufgefallen ist:
MT4 7300 Code Zeilen kompilieren, 2-3 Sekunden
MT5 8700 native MQL5 Code Zeilen kompilieren, 9-12 Sekunden

Im Live-Trading sehe ich keine Performance Vorteile von MT5, da kein Threading verwendet wird.

Ich denke, ich lege das MT5 Projekt zur Seite, sehe ab und zu rein, vielleicht baut MetaQuotes eine MQL4 Runtime im MT5 ein, kann mir das gut vorstellen, denn der MT4 Kundenverlust ist eindeutig zu hoch wenn die Broker die MT4 Umgebung abdrehen.
Für viele ex4 gibt es kein ex5.

Was mich aber am meisten nervt das es keine Fehlermedungen gibt, damit ist das weitere eingrenzen und arbeiten kaum möglich...
Und der Compiler läßt auch viel Blödsinn zu... der ist auch keine Hilfe


Mike
  #4 (permalink)  
Alt 07.07.22
Mitglied
 
Registriert seit: Jun 2022
Beiträge: 42
TraderMike befindet sich auf einem aufstrebenden Ast
Standard

Jetzt wird es ganz lustig...

Habe eine "Abnormal Termination" provoziert - macht er auch

Schafft es ins Log zu schreiben, aber unfähig wo die Termination auftritt, ich weiß natürlich wo ich sie angefordert/codiert habe, wollte sehen ob MT5 in der Lage ist genau den Punkt, wo der Fehler auftritt zu nennen = NEIN (Compiler hat es sowieso nicht erkannt)

2022.07.07 14:34:26.012 1 (AUDCAD,D1) Abnormal termination

Das heißt ich/man muss den gesamten Code (8700 Zeilen, native MQL5) mit Breakpoints, Bookmarks, Profiler etc. Zeile für Zeile durcharbeiten, inkl. aller includes....sicher nicht!

Für statische EA's reicht das vorliegende MQL5 Scriptwerzeug natürlich, aber bei weitem nicht für hoch dynamische Strategien, die z.B. Trend+Range unterscheiden können und zwischen mehreren dynamischen Profilen automatisch wechseln und sich permanent dem Markt anpassen können.

Fazit: Für echte anspruchsvolle Programmierung wie "Quantitative Technologies with live and predictive data" reicht es auf keinem Fall...

Mike
  #5 (permalink)  
Alt 08.07.22
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Was du aber auch alles verlangst - Abnormal Termination!
Kommt vor, aber nicht oft. Da muss man schon Bockmist verzapft haben.
Ich denke, die Stelle wirst du auch schnell finden.

Ansonsten hat eben jede Sprache so ihre Vor- und Nachteile - halt wie im richtigen Leben. Für meine Programmierung der unzähligen EAs, Indikatoren und Scripte auch für viele Kunden hier aus dem Forum, hat der Umfang sowohl von MQL4 als auch 5 bisher immer gereicht. Außer bei der Herausforderung, einen horizontalen Strich in den Kerzenkörper bei einem bestimmten Preis zu zeichnen. Oder auch einen vertikalen Strich zwischen zwei Kerzen!!
Das würde ich gern mal sehen wollen. Klingt einfach - probiert es aus!

In Summe kann man schon zufrieden sein. Und ja, das Handling von Zeit und Datum ist auch aus meiner Sicht am Meisten optimierungsbedürftig. V.a. das Problem, dass am Tageswechsel nicht sofort die Historie der Preise abrufbar ist, behindert v.a. dann die Programmierung, wenn es darauf ankommt, just am Tageswechsel eine Aktion einzuleiten.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #6 (permalink)  
Alt 08.07.22
Mitglied
 
Registriert seit: Jun 2022
Beiträge: 42
TraderMike befindet sich auf einem aufstrebenden Ast
Standard

Bei der Antwort hat man nicht das Gefühl das du den Thread von Beginn gelesen hast! Ich bitte darum!

Mein EA funktioniert im Chart ABER nicht im Tester! (History Fehlermeldung)

Um herauszufinden warum im Tester eine History Fehlermeldung kommt, ohne weitere sinnvolle Fehlermeldung! habe ich eine Abnormal Termination testweise einprogrammiert! (Ja, die History wurde mehrmals gelöscht, Symbolwechsel ditto, steht in den Postings davor)

Keine EA Kompilierfehler oder Warnings im Editor
Keine EA Fehlermeldungen im Journal oder Expert Log
Keine EA Fehlermeldungen im Tester Log nur History Fehler
EA funktioniert im Chart!
EA funktioniert nicht im Tester!

Es kann doch KEIN Bockmist sein wenn der EA im Chart funktioniert, im Tester aber nicht!

Das würde bedeuten das man im MT5 mit einem EA auch mal "blind" Live gehen muss -ohne das man den Code im Tester vorherher (sichtbar) prüfen konnte.

Das bedeutet das der Tester nur bei echt grob fahrlässigen Fehlern aufschreit, welche aber eigentlich der Compiler schon abfangen müßte aber durchgelassen hat. Beispiel

PositionSelect und HistoryOrderGetInteger innerhalb einer Funktion!
Der Compiler meldet nicht einen Fehler, trotz "GetLastError" Routine

Auch PositionsTotal und HistoryOrderSelect erzeugt keine Fehlermeldung innerhalb einer Funktion beim kompilieren

Das geht gar nicht!

Und weil mein EA im Chart funktioniert im Tester aber nicht, wäre der gesamte Code Zeile für Zeile zu debuggen...

Ausserdem ist zu erkennen das du nicht weißt wieviel Geld dich eine nicht vorhandene "Garbage Collection" im Jahr an Geld kostet! Einfach mal Live und Demo gleichzeitig laufen lassen und die Demo 1x täglich um Mitternacht durchstarten, gute 10% an nicht durchgeführter Trades zwischen Live und Demo sind die Differenz - das Problem hat MT4 auch, damit ist die Verwunderung erklärt warum der gleiche EA in der Forward Demo eine Order aufmachte, im Live aber nicht! Umso mehr Charts umso schlimmer wird es...MT5 Forum ist voll von Memory Leak Einträgen.
Der Terminal Forward Demo Restart erzwingt, das löschen, freigeben des Arbeitsspeichers.
Bei einer "angeblichen" Profi Software erwarte ich mir eine eingebaute Garbage Collection! Denn nicht viele kennen den Trick des täglichen Neustarts oder zeitgesteuerten ReInits
Vom lustigen Compiler rede ich schon mal nicht...
  #7 (permalink)  
Alt 09.07.22
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TraderMike Beitrag anzeigen
Es kann doch KEIN Bockmist sein wenn der EA im Chart funktioniert, im Tester aber nicht!
Man wird aber einen Code Live nie solange laufen lassen wie im Tester. Sobald man kompiliert, müsste man mit Livetest neu anfangen. Daher wird beim Tester (zb 10 Jahre) statistisch gesehen immer eher ein Fehler zu Tage kommen als Live wo man im Vergleich nur einen kurzen Zeitraum testet bis man wieder mit Änderung kompiliert und neu startet (zb jeden Monat). Es gibt Fehler die treten nur alle 4 Jahre auf und sowas fällt dann im Livetest nie auf.

Im Grunde muss man nicht jede Zeile prüfen, es reicht ja einzelne Module des Ganzen auszukommentieren (Ordermanagement, Signalmanagement, etc) und damit einzugrenzen in welchem Codeabschnitt der Fehler liegt. Dann immer weiter ins Kleinteilige bis man den Fehler hat, dieser Prozess der Fehlersuche ist nervig aber es ist eher ein reinzoomen als ein Zeile für Zeile.

Ob am Ende der Fehler durch eine MQL Eigenart oder durch ein normalen Fehler passiert ist spielt keine Rolle, in beiden Fällen muss man es finden und dann damit umgehen solange man mit MT arbeiten will.

Wer möglichst sicher coden will muss zB zu Sprachen wie Rust gehen und sich dann irgendwo mit API anbinden. ZB mit C oder C++ kann man sich sogar noch viel schlimmer ins Bein schießen als mit MQL. Aber am Ende hat man egal welche Plattform/API immer das Thema Anbindung an den Broker wo man mit dem Gegebenen arbeiten muss.

Wenn der Fehler gefunden ist gerne mal Rückmeldung hier woran es lag.
  #8 (permalink)  
Alt 09.07.22
Mitglied
 
Registriert seit: Jun 2022
Beiträge: 42
TraderMike befindet sich auf einem aufstrebenden Ast
Standard

Der History Fehler tritt bei 1.1.2021 - 30.3.2022 auf! Das ändern der Zeitspanne brachte nichts.
Ohne Fehlermeldung ist es kein Spass zu debuggen, im besonderen das der Compiler auch nur echte harte Fehler bestraft...umso verwoben der EA, es nicht leicht möglich ist, einzelne Module zu remarken für einen Test, da damit andere Teile in Abhängigkeit nicht funktionieren = umso dynamischer ein System ist umso komplizierter greifen die Module in einander = ich müßte die Struktur komplett neu designen, nur das Alert+Data (Quantitative) Management sind als Module realisiert

Mein EA läuft seit fast 8 Jahren auf MT4 durch, um das Garbage Collection Problem zu umgehen, mache ich um 6:00 ein zeitgesteuertes Re-Init.
Ansonsten läuft alles voll automatisch.

MT4 wir noch lange laufen, der Kundenverlust wäre zu hoch wenn die Broker ihre MT4 Server abdrehen.

MT5 brauche ich eigentlich noch nicht, da ich Futures über eine OCaml Klient verarbeite. Einige wenige US Option* über einen WebClient im Set -and Forget Modus nutze.

Erst wenn MT5 in der Lage ist einen Zugriff auf Domain 0-X zu zulassen, dann könnte man mittels MT5 EA parallel Orders an verschiedene Märkte und verschiedene Broker senden - mit einem Broker geht das natürlich bereits jetzt - dann ist MT5 eine echte Alternative um das Problem Mehrfach Broker/Programme/Konten zu lösen.
Jeder bessere Webmail Klient kann Multi Login mittels Scripting, Multi Domain, Multi Account...
Im kleinen "Ansatz" kann das MT5 ja schon, mit dem vom Broker erlaubten Transfer von Funds zwischen verschiedenen Broker Konten im MT5.

Ja, leider bieten zuwenige Broker Api, Bidge Anbindung an

Fazit: Ich verschiebe eine mögliche Umstellung auf MT5, da nicht zeitkritisch und mache eine Rundabfrage wieviele Broker API, Bridge anbieten, OCaml, C# und natürlich das sichere und bessere Rust (hat sich einiges von OCaml abgeschaut!) als C/C++, sind mögliche Alternativen
  #9 (permalink)  
Alt 13.07.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Außer bei der Herausforderung, einen horizontalen Strich in den Kerzenkörper bei einem bestimmten Preis zu zeichnen. Oder auch einen vertikalen Strich zwischen zwei Kerzen!!
Das würde ich gern mal sehen wollen. Klingt einfach - probiert es aus!
Manuell geht das mit dem anghängten Script.
Man ist da aber immer auf den Benutzer angewiesen, der mit der Maus den Punkt genau bestimmt, für solche Sachen wie PriceToY oder TimeToX gibt es wohl keine Lösung.
AVT
Angehängte Dateien
Dateityp: mq4 testImpossibleBarLines.mq4 (11,3 KB, 1x aufgerufen)
  #10 (permalink)  
Alt 13.07.22
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ne, das ist keine Lösung, das müsste schon automatisch gehen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------