??
Du brauchst einen Broker, dort also eine Demo- oder Real-Konto, dann kriegst Du von dem die Kurse, die zum Testen und die für den/die Charts - was fehlt Dir dann noch?
habe ich ja. Und wie teste ich dann? Mit dem Strategietester?
Mit dem habe ich so meine Probleme!
Ich habe z.B. einen kleinen EA gebaut, der mir mit iCustom einen Indikator einbindet. Das funktioniert ja auch wunderbar, nur wenn den EA dann mit dem ST starte, schmiert mir das Programm ab!
Außerdem generiert er keine Files über die File Funktionen und zeigt auch keine "Comments" (nutze ich zur Überprüfung und Fehlersuche) an.
Was ich brauche sind fiktive oder historische Daten die meinem MT5 vorgaukeln der Markt wäre offen...
So was gibt es für den MT4 aber wohl nicht für den MT5! Zumindestens konnet ich bisher nichts finden...
Dass Du den Strategy Tester aus dem Terminal heraus startest (CTRL-R), weißt Du schon - oder?
Der Stratgie Tester braucht keine offenen Märkte, nur eine Verbindung zum Broker (s.o.), da er sich von dem die historischen Kurse holt!
Aber das habe ich schon gesagt!
Vielleicht liest Du mal hier: https://www.mql5.com/de/docs/runtime/testing.Und das könnte Dich auch interessieren: https://www.mql5.com/de/articles/4226.
Dazu gibt es oben rechts die Lupe. Gib mal "Strategy Tester" ein und dann wähle: Dok. Artikel, Forum, ...- 2018.03.02
- Vasiliy Sokolov
- www.mql5.com
ok, das er keine Files erzeugt nehme ich zurück, da habe ich wohl einen Fehler gemacht.
Aber ansonsten weiß ich nicht was an diesem Strategietester sinnvoll sein soll. Er ist ja schon mit der Funktion iCustom völligst überfordert und produziert nur Unfug!
Ich frage mich sowieso warum man solch ein Zusatzprogramm erstellen muss. Warum simuliert man nicht einen Datenserver mit historischen Daten, dann könnte man sich das ganze Programm sparen und hätte alle Funktionen inklusive.
Oder gibt es hier doch noch einen Vorteil von diesem ST???
ok, das er keine Files erzeugt nehme ich zurück, da habe ich wohl einen Fehler gemacht.
Aber ansonsten weiß ich nicht was an diesem Strategietester sinnvoll sein soll. Er ist ja schon mit der Funktion iCustom völligst überfordert und produziert nur Unfug!
Ich frage mich sowieso warum man solch ein Zusatzprogramm erstellen muss. Warum simuliert man nicht einen Datenserver mit historischen Daten, dann könnte man sich das ganze Programm sparen und hätte alle Funktionen inklusive.
Oder gibt es hier doch noch einen Vorteil von diesem ST???
Hmm... das klingt mir aber eher danach das du den Strategietester noch nicht richtig verstanden hast.
Man kann zwei Sachen dort testen, wie ein Indikator arbeitet wenn man diesen z.b. aus dem Markt geholt hat oder eben einen EA.
Bei start holt sich dieser über den gemachten Zeiteinstellungen die Historischen Daten zu dem Tim Frame der getestet werden soll. Das ganz ist dann auch nur über andere Funktionen aufgefächert, das geht dann soweit das sogar mit Real Tickdaten getestet werden kann. Ich teste gerade selbst einen und das ist wirklich gut geworden!
Kleine Hinweise zum Strategietester MT5:
Ja, er hat seine Eigenheiten, ist aber imho wesentlich besser und übersichtlicher als der vom MT4.
Du startest ihn am besten aus dem Metaeditor mit Ctrl+F5 (oder dem entsprechenden Button, der aber Standardmäßig, warum auch immer, nicht angezeigt wird).
Im Metaeditor gehören sowieso viele Buttons ergänzt damit man mit ihm halbwegs arbeiten kann.
Unter Tool->Options->Debug kannst du einiges einstellen.
Und schon wird es laufen.
Bei den Eingabeparametern ist er aber etwas störrisch. Ändert man die im Metaeditor, tut sich im Tester nichts.
Ich denke das hängt mit der Optimierung zusammen.
Du stoppst den Tester und gehst auf die Seite (Reiter) Inputs, wo du die Variablen und deren Werte siehst.
Dort Rechtsclick und Defaults wählen und schon sind die aktuellen Werte drin.
Mit diesem Wissen wird es dir gelingen. Viel Erfolg beim Testen
PS: Hat mir am Anfang auch viel Kopfzerbrechen bereitet
danke für die ausführliche Erklärung!
Momentan ist mein Hauptproblem, das er mit dem eingebundenen Indikator nicht zurechtkommt und ein Indikatorfenster nach dem anderen aufmacht...
Hier der Code:
void fBSI(int RangePeriod,int Slowing, int AvgPeriod, bool UsingVolumeWeight, double &arrReturn[]) { double arrPOS[], arrNEG[], arrMAIN[]; ArraySetAsSeries(arrPOS,true); ArraySetAsSeries(arrNEG,true); ArraySetAsSeries(arrMAIN,true); ArrayResize(arrReturn,3); int bsiHandle = iCustom(_Symbol,_Period,"Eigene\\bane_strenght_index",RangePeriod,Slowing,AvgPeriod,UsingVolumeWeight); CopyBuffer(bsiHandle,0,0,1,arrPOS); CopyBuffer(bsiHandle,1,0,1,arrNEG); CopyBuffer(bsiHandle,2,0,1,arrMAIN); arrReturn[0] = arrPOS[0]; arrReturn[1] = arrNEG[0]; arrReturn[2] = arrMAIN[0];
hier kann ich über das Array arrReturn[] die Werte von Buffer 1-3 des Indikators abrufen und verarbeiten. Im "Normalbetrieb" funktioniert das auch problemlos. Im Strategietester macht er ein Indikatorfenster nach dem anderen auf.
danke für die ausführliche Erklärung!
Momentan ist mein Hauptproblem, das er mit dem eingebundenen Indikator nicht zurechtkommt und ein Indikatorfenster nach dem anderen aufmacht...
Hier der Code:
hier kann ich über das Array arrReturn[] die Werte von Buffer 1-3 des Indikators abrufen und verarbeiten. Im "Normalbetrieb" funktioniert das auch problemlos. Im Strategietester macht er ein Indikatorfenster nach dem anderen auf.
Nutz den Debugger.
Setze Breakpoints und schau dir die Werte an bevor er das 2. Indikator Fenster aufmacht.
Und dann im Einzelschritt weiter bis das .2 Fenster aufgeht.
iCustom funktioniert im Tester. Das Problem liegt bei dir !
Dann vergleiche mit dem Beispiel:
#property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //---- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int MA_Period=21; input int MA_Shift=0; input ENUM_MA_METHOD MA_Method=MODE_SMA; //--- indicator buffers double Label1Buffer[]; //--- handle des Benutzerindikators Custom Moving Average.mq5 int MA_handle; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA); ResetLastError(); MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average", MA_Period, MA_Shift, MA_Method, PRICE_CLOSE // Schlusspreise verwenden ); Print("MA_handle = ",MA_handle," error = ",GetLastError()); //--- return(INIT_SUCCEEDED); ;} //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- Werte des Indikators Custom Moving Average in den Indikator-Puffer kopieren int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer); Print("copy = ",copy," rates_total = ",rates_total); //--- beim erfolglosen Versuch geben wir das aus if(copy<=0) Print("Erfolgloser Versuch, Indikatorwerte Custom Moving Average zu erhalten"); //--- return value of prev_calculated for next call return(rates_total); ;} //+------------------------------------------------------------------+
Ich hab von Indikatoren keine Ahnung(nie benutzt).
So müstest du dein Fehler finden ....anhand von Codeschnipsel ist es schwierig dein Problem zu finden.
folgender Fehler ist im Log:
2018.03.03 20:25:56.068 program file Indicators\Eigene\BSI_EA.ex5 read error
2018.03.03 20:25:56.068 loading of Eigene\BSI_EA EURUSD,M1 failed [532]
2018.03.03 20:25:56.068 2018.01.01 23:06:17 cannot load custom indicator 'Eigene\BSI_EA' [4802]
und es sind keine Codeschnipsel. Habe einen Test EA erstellt wo nur die Indikator Buffer geholt werden. Und auch da kommen die selben Fehler:
Hier nochmal der Code:
double arrPOS[], arrNEG[], arrMAIN[]; int bsiHandle; int OnInit() { //--- ArraySetAsSeries(arrPOS,true); ArraySetAsSeries(arrNEG,true); ArraySetAsSeries(arrMAIN,true); bsiHandle = iCustom(_Symbol,_Period,"Eigene\\BSIEA",20,3,3,true); CopyBuffer(bsiHandle,0,0,1,arrPOS); CopyBuffer(bsiHandle,1,0,1,arrNEG); CopyBuffer(bsiHandle,2,0,1,arrMAIN); //--- return(INIT_SUCCEEDED); }
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
habe gerade angefangen MQL5 zu programmieren und bastele gerade an meinem ersten EA.
Leider kann ich gerade am Wochenende wo ich am meisten Zeit dafür habe nicht weitermachen, da mir eine geeignete Simulationsumgebung fehlt!
Für den MT4 gibt es da ja einiges, warum nicht für den MT5?
Gruß,
Markus