28 !!! Währungspaare, 1 Experte. Ein weiterer Gral, aber ich glaube, den hat noch niemand gezeigt. + DEMO-KONTO - Seite 11

 
 
Das stimmt, der Umschlag ist derselbe.
 
MetaQuotes:
Bilderparade ohne Quellen und Belege...


2 Rosch

In Ihrem EA auf Seite 5 haben Sie nach Bid und Close Mismatches aller t/fs gesucht. Sie interpretieren das Fehlen solcher Unstimmigkeiten als Bestätigung dafür, dass der Blick in die Zukunft im Tester nicht möglich ist. Damals fand ich diese Verbindung noch seltsam. Meiner Meinung nach sollte nicht das Verhalten von Close getestet werden, sondern das Verhalten von High und Low des höheren t/f. Und nach dem oben erwähnten unfairen Vorwurf von MQ habe ich mich entschlossen, ihm etwas Zeit zu widmen. Doch es war zu spät.

Nachfolgend finden Sie den Code des Expert Advisors, der selbständig das aktuelle Hoch und Tief der Stunde oder des Tages im Ein-Minuten-Chart generiert. Bei jedem Tick wird er dann mit dem Höchst- und Tiefstwert der Stunde oder des Tages verglichen, der aus dem H1 oder D1 ermittelt wird, und bei einer Abweichung an das Protokoll und die Datei gesendet.

 
//+------------------------------------------------------------------+
//|                                           Simple Prospection.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2007, Yurixx"
#property link      ""
double curHi,curLo,HiH1,LoH1;
int    mm,hh,dd,curM1,curH1,curD1,kk,nn,handle;
string str,mHi,mLo,hHi,hLo;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  handle = FileOpen("FU.csv",FILE_CSV|FILE_WRITE," ");
  if(handle<1) { Print("File FU.csv not found, Error:", GetLastError());
                 return(false);   }
  if (Period()>PERIOD_M1)
  {  Print("Период тестирования не соответствует задаче");
     return(-1);
  }
  Print("Период тестирования ",Period()," минут");
  FileWrite(handle,"Date","Time","curHi","HiH1","curLo","LoH1");
  nn=D'2007.07.12 23:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:58:59';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  nn=D'2007.07.13 00:02:00';
  FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS),
                   TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn));
  curHi=0.0;
  curLo=1000.0;
  curD1=-1;
  curH1=-1;
  curM1=-1;
  nn=0;//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {  
//----
  mm = TimeMinute(TimeCurrent());
  hh = TimeHour(TimeCurrent());
  dd = TimeDay(TimeCurrent());
  if (mm!=curM1)
  {  if (hh!=curH1)
     {  if (dd!=curD1)
        {  curHi=NormalizeDouble(Bid,Digits);
           curLo=NormalizeDouble(Bid,Digits);
           curD1=dd;
        }
        //curHi=NormalizeDouble(Bid,Digits);
        //curLo=NormalizeDouble(Bid,Digits);
        curH1=hh;
     }
     curM1=mm;
  }
  if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits);
  if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits);
  //HiH1 = iHigh(NULL,PERIOD_H1,0);
  //LoH1 =  iLow(NULL,PERIOD_H1,0);
  HiH1 = iHigh(NULL,PERIOD_D1,0);
  LoH1 =  iLow(NULL,PERIOD_D1,0);
  HiH1 = NormalizeDouble(HiH1,Digits);
  LoH1 = NormalizeDouble(LoH1,Digits);
  str = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
  mHi = ", curHi=" + DoubleToStr(curHi,Digits);
  mLo = ", curLo=" + DoubleToStr(curLo,Digits);
  hHi = ", HiH1="  + DoubleToStr(HiH1, Digits);
  hLo = ", LoH1="  + DoubleToStr(LoH1, Digits);
  if (HiH1!=curHi||LoH1!=curLo)
  {  Print(str,mHi,hHi,mLo,hLo);
     FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1);
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{  Print("Работа закончена");
   FileClose(handle);
//---- done
   return(0);
}

Und dies ist ein Teil des Logs, das durch die Ausführung dieses EA auf EURUSD, M1 von 2007.07.10 bis 2007.07.14 erhalten wurde. Wie Sie aus dem Text des EA sehen können, war der Vergleich mit den täglichen Daten. Im Vergleich zu den stündlichen Daten ist die Situation jedoch nicht besser. Ich wollte eine Bestätigung für die Möglichkeit, in die Zukunft zu blicken, oder um sicherzustellen, dass es eine solche Möglichkeit nicht gibt. Es stellte sich jedoch heraus, dass es etwas ganz anderes war.

Wie Sie auf dem Bild sehen können, weichen die vom Tester im Protokoll ausgedruckte Zeit und die vom Expert Advisor angezeigte Zeit gelegentlich voneinander ab. Darüber hinaus gibt es einige unverständliche Rückschläge. Die Zeit 2007.07.13 00:58, 2007.07.12 00:58, 2007.07.13 00:02, 2007.07.13 00:04, 2007.07.13 00:06 und 2007.07.13 00:07. Und jedes Mal gibt der Expert Advisor 2007.07.12 23:58:59 aus.

Möglicherweise ist die damit verbundene Diskrepanz zwischen den Höchst- und Tiefstwerten zu diesen Zeitpunkten genau durch diese Zeitfehler verursacht worden.

Außerdem empfehle ich, auf den Test print to file zu achten, der in der Funktion init() enthalten ist. Dieser Ausdruck zeigt, dass die Sekunden im Prüfgerät nicht funktionieren. Dementsprechend funktionieren die Funktionen TimeToStr() im Sekundenmodus und TimeSeconds() nicht. Vielleicht war das so beabsichtigt, aber warum drucken dann sowohl der Tester als auch der Expert Advisor Daten mit Sekunden?

Ich stelle nicht einmal die Frage nach der Diskrepanz zwischen hohen und niedrigen Daten, denn es ist völlig unklar, woher diese Daten in dieser unklaren Zeit stammen.

Noch eine Sache. Beim Testen von 2007.07.09 bis 2007.07.14 und nicht von 2007.07.10 bis 2007.07.14 habe ich versucht, etwas seltsamen Unsinn zu erhalten - Daten von hohen und niedrigen Zahlern werden überhaupt nicht empfangen, d.h. die Variablen HiH1 und LoH1 haben immer Nullwerte.

Kann es sein, dass ich irgendwo einen Fehler gemacht habe?

 
Hallo Yurixx.
Ich habe Ihren Expert Advisor ausgeführt, ohne etwas am Code zu ändern. Hier sind alle Daten aus der Datei, die er ausgibt:
Datum Zeit curHi HiH1 curLo LoH1<br/ translate="no"> 2007.07.12 23:58:00 0 58 23 12
2007.07.13 00:58:00 0 58 0 13
2007.07.13 00:02:00 0 2 0 13
Hier ist das Protokoll:
2007.08.13 09:54:51 2007.07.13 22:59 Einfache Prospektion EURUSD,M1: Arbeit beendet
2007.08.13 09:54:48 2007.07.10 00:00 Einfache Prospektion EURUSD,M1: Testzeitraum 1 min
2007.08.13 09:54:48 Einfache Prospektion für Test gestartet
2007.08.13 09:54:45 Einfache Prospektion: erfolgreich geladen
Kein einziger Fehler im Test vom 2007.07.10 bis 2007. 14.07. Stimmt, dann habe ich mich daran erinnert, dass ich eine Test-Sonderanfertigung von letzter Woche habe. Der übliche 208er-Build vom 01. August (jetzt um einen Begriff aktualisiert durch LibeUpdate) hat ebenfalls keinen Fehler:
2007.08.13 10:13:04 2007.07.13 22:59 Einfache Prospektion EURUSD,M1: Arbeit beendet
2007.08.13 10:13:04 2007.07.10 00:00 Einfache Prospektion EURUSD,M1: Testperiode von 1 Minute
2007.08.13 10:13:04 Einfache Prospektion für Test gestartet
Das Problem ist, dass ich vor dem Test die verpassten Daten aus dem History Center heruntergeladen habe (ich habe dieses Terminal seit ein paar Monaten nicht mehr gestartet) und dann alle Zeitrahmen neu berechnet habe - ich habe im History Center zum zweiten Mal auf "Herunterladen" gedrückt, in diesem Fall schlägt es vor, alle t/f automatisch neu zu berechnen und der Periodenkonverter wird nicht benötigt (falls die Leute diese Funktion nicht kennen).


Davor gab es jedoch Fehlerausgaben im Protokoll:

2007.08.13 10:08:19 1999.05.26 02:01 Einfache Prospektion GBPUSD,M1: Arbeit abgeschlossen
2007.08.13 10:08:18 1999.01.04 09:31 Einfache Prospektion GBPUSD,M1: 1999.01. 04 09:31:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:30 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:30:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:29 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:29:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:28 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:28:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:27 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:27:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:26 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:26:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:25 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:25:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:24 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:24:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:23 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:23:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:22 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:22:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:21 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:21:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:20 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:20:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:19 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:19:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:18 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:18:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:17 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:17:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:16 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:16:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:15 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:15:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6684
2007.08.13 10:08:18 1999.01.04 09:14 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:14:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1. 6686
2007.08.13 10:08:18 1999.01.04 09:13 Einfache Prospektion GBPUSD, M1: 1999.01. 04 09:13:00, curHi=1.6682, HiH1=1.6697, curLo=1.6682, LoH1=1. 6597
2007.08.13 10:08:15 1999.01.04 09:13 Einfache Prospektion GBPUSD,M1: Testzeitraum 1 Minute
2007.08.13 10:08:15 Einfache Prospektion zum Testen gestartet

Ich habe diese Daten für EURUSD heruntergeladen, aber mit dem Test für GBPUSD begonnen, der nicht gepumpt und neu berechnet wurde. Das war der Grund für die Ungereimtheiten.
Versuchen Sie dasselbe - laden Sie Daten und synchronisieren Sie automatisch oder verwenden Sie das Skript für den Periodenkonverter.

Wir werden uns die Sache mit den Sekunden ansehen, danke.
 

Hallo Rosh!

Vielen Dank für Ihre Antwort. Soweit ich Sie verstehe, glauben Sie, dass die Diskrepanz zwischen den Höchst- und Tiefstwerten verschiedener Trichter auf die Qualität des Kursflusses zurückzuführen ist. So werden die Candlesticks auf verschiedenen Trichtern unterschiedlich geformt und können sich daher um 1-2-3 Pips unterscheiden. Das ist durchaus möglich.

Ich habe mit den Daten des MQ-Demoservers getestet. Und ich schreibe sie nicht in Echtzeit, sondern lade alle Daten einmal pro Woche, am Wochenende, herunter. Eigentlich dachte ich, dass die Candlesticks auf allen TFs, zumindest auf dem Server, von der Serversoftware synchron für alle TFs gezeichnet werden, basierend auf einem einzigen Kursverlauf und daher sind solche Unterschiede unmöglich. Wenn dies nicht der Fall ist, ist es schade, wir werden es irgendwie berücksichtigen müssen ... Daten zu kombinieren, zu synchronisieren usw., damit alles schön aussieht, ist meiner Meinung nach der falsche Weg. Sowohl Ihr Server als auch die Server der Makler liefern die Daten so, wie sie sie liefern. Und man muss mit diesen Daten handeln und nicht mit dem, was nach einiger Zeit daraus wird. Für den Testprozess ist das besonders wichtig. Jeder kennt das Problem der Grals - eine Lücke im Tester und ein Verlust im echten Handelsroboter. Woher kommt sie? MQ beharrt darauf, dass es unmöglich ist, in die Zukunft zu schauen, und dass die Tick-Modellierung für diesen Prozess durchaus geeignet ist. Man muss davon ausgehen, dass dies der Fall ist. Das Problem sind also in der Tat die Daten ? MQ kann dieses Problem nicht lösen, die Daten hängen nicht davon ab. Dann müssen Sie dafür sorgen, dass das Prüfgerät mit allen Daten korrekt arbeitet, nicht nur mit den sauber gekämmten Daten.

In meinem Beitrag ging es jedoch nicht um Diskrepanzen zwischen den Daten verschiedener T/Fs, sondern um die Verwirrung im Laufe der Zeit. Und die Tatsache, dass Sie einen Beitrag geschrieben haben, hebt das Problem nicht auf. Im Gegenteil, im Zusammenhang mit Ihrem Beitrag möchte ich Folgendes fragen.

In meinem Protokoll enthalten die Zeitangaben sowohl des Testers als auch des EA Sekunden. Bei Ihnen enthalten die Daten im Tester überhaupt keine Sekunden, und die Daten in Ihrem EA enthalten nur Null Sekunden. Das wirft die Frage auf: In welchem Modus haben Sie den Test durchgeführt? Ich möchte klar sein - dieser EA ist nur für das Testen im "All Ticks"-Modus gedacht. Und der Fehler, auf den ich gestoßen bin, kann nur in diesem Modus reproduziert werden. Wenn Sie also in einem anderen Modus getestet haben, wiederholen Sie bitte den Test, es dauert nur wenige Sekunden.

Im Prinzip ist es völlig egal, welches Paar und welcher Datumsbereich getestet wird. Und bei anderen TFs als M1 funktioniert der Expert Advisor nicht. Um jedoch unsere Ergebnisse vergleichen zu können, bitte ich Sie, einen Test für EURUSD in der Spanne zwischen 2007.07.10 und 2007.07.14 und, in einem separaten Test, in der Spanne zwischen 2007.07.09 und 2007.07.14 durchzuführen.

Ich danke Ihnen im Voraus.

 
Yurixx:

Hallo Rosh!

In meinem Protokoll enthalten sowohl die Zeitangaben des Testers als auch die des EA Sekunden. In Ihrem Fall enthalten die Testerdaten überhaupt keine Sekunden, und die EA-Daten enthalten nur null Sekunden. Das wirft die Frage auf: Welchen Modus haben Sie für die Tests verwendet? Ich möchte klar sein - dieser EA ist nur für das Testen im "All Ticks"-Modus gedacht. Und der Fehler, auf den ich gestoßen bin, kann nur in diesem Modus reproduziert werden. Wenn Sie also in einem anderen Modus getestet haben, wiederholen Sie bitte den Test, es dauert nur eine Sekunde.

Im Prinzip spielt es überhaupt keine Rolle, welches Paar und welcher Datumsbereich getestet wird. Und bei anderen TFs als M1 funktioniert der Expert Advisor nicht. Um jedoch unsere Ergebnisse vergleichen zu können, bitte ich Sie, einen Test für EURUSD in der Spanne zwischen 2007.07.10 und 2007.07.14 und, in einem separaten Test, in der Spanne zwischen 2007.07.09 und 2007.07.14 durchzuführen.

Ich danke Ihnen im Voraus.


In der Tat, ich habe jetzt nachgeschaut und gesehen, dass ich keinen Nachschlag hatte. Ich denke, es hat damit zu tun, dass ich beim ersten Test die Daten für GBPUSD nicht automatisch für 1 Stunde und 1 Tag geladen hatte (ich hatte überhaupt keine Charts im Terminal geöffnet), aber ich habe versucht, es jetzt zum zweiten Mal zu überprüfen, und es gab keinen Fehler - ich habe die erforderlichen Daten beim ersten Testlauf geladen.

Das heißt, beim ersten Mal gab es keine Daten für die H1- und D1-Perioden für GBPUSD und daher gab es Fehler bei der Modellierung.
 
Ich habe einen Test "auf EURUSD im Bereich 2007.07.10 bis 2007.07.14, und, in einem separaten Test, im Bereich 2007.07.09 bis 2007.07.14", wie Sie gefragt, keinen Unterschied.
 
Rosh:

Wir werden uns die Sache mit den Sekunden ansehen, danke.


Der Fehler mit den Sekunden wurde behoben (im Compiler). Der korrigierte Build wird bald verfügbar sein.
 
Rosh:
Der Fehler mit den Sekunden wurde behoben (im Compiler). Der korrigierte Build wird bald verfügbar sein.
Können wir hoffen, dass in der korrigierten Version der Tester grail77 nicht mehr funktioniert?
 
granit77:
Rosh:
Der Fehler mit den Sekunden wurde behoben (im Compiler). Der korrigierte Build wird bald verfügbar sein.
Können wir hoffen, dass im korrigierten Build Tester grail77 nicht mehr funktionieren wird?

Ich werde es morgen überprüfen.
Grund der Beschwerde: