Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   for-Schleife bringt im Strategietester seltsame Werte (http://www.expert-advisor.com/forum/showthread.php?t=6429)

Angel 26.05.19 10:12

for-Schleife bringt im Strategietester seltsame Werte
 
Inzwischen versuchte ich im Rahmen verschiedener "Lernprojekte" mit "for"-Schleifen zu arbeiten und die Werte der Kerzen im jeweilgen Zeitraum / Timeframe in einem Array zu speichern.
Dabei kam ich nie zu einem zufriedenstellenden Ergebnis, weil seltsame Werte entstanden.
Gerade beim Vergleich mit Kerze x und deren Vorgängerkerze entstehen irgendwann noch vor Erreichen der Zählvariablen "Sprünge".

Guckt mal hier bitte:

Code:

#property copyright "Angel"
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

int i;
int z;
//+------------------------------------------------------------------+
//| Expert initialization function                                                      |
//+------------------------------------------------------------------+
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                               
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                                     
//+------------------------------------------------------------------+
void OnTick()
  {
  for(i=50;i>1;i--)
    {
      for(z=i-1;z>0;z--)
        {
        Alert("  i= ",i,"    z= ",z);
        }
    }
  }

Ich checkte das mal im Strategietester auf H1. Die Ergebnisreihe der i- und z-Werte kann man im Journal sehen.
Wenn ich i=10 setze, dann ist noch alles ok. Aber sobald ich zB i= 50 setze, dann ergibt die Reihe ab ca. i=20 immer unterschiedliche und nicht kontinuierliche Werte. Kann mir das jemand erklären?? Ich meine , das bischen Code, da ist nix drin, was irgendwie querschlägt... es sollten bei i=50 rund 1250 Berechnungen stattfinden. Das ist eigentlich nix... Hat jemand Rat? Eine verschachtelte "for-Schleife" mit festgelegten Werten i=50 und z=i-1 kann doch kein Eigenleben haben?!?!?
Bitte macht Euch mal den Spaß , ladet den EA und seht selbst...!? Oder hat mein MT4 einen Hau weg?!:(:confused:

Angel 26.05.19 11:10

Ich habe mal nur auf die i-Schleife und i=50 reduziert:
Ab dem 5.ten Durchlauf (Also 5 x die i-Schleife durchlaufen) fangen die unregelmäßigen Werte an.
Und der Beginn der Anomalie ist stets unterschiedlich!
Ich weiß echt keinen Rat mehr.

Code:

#property copyright "Angel"
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

int i;
int z;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
  for(i=50;i>1;i--)
    {
        Alert("  i= ",i,"    z= ",z);
    }
  }


AVT 26.05.19 19:37

Ich denke es liegt an der OnTick. Ich hatte solche Aussetzer bei meinem ersten Candle Countdown, der war auch Tick-abhängig und zählte die Sekunden eben nicht gleichmäßig runter, sondern hatte "einen (ach was hunderte :D) Sprünge in der Schüssel". AVT

Angel 26.05.19 20:40

Ja, das dachte ich auch schon, aber selbst wenn ich eine "NewBar"-Funktion einbauen würde, so würde der nächste Tick ja das gleiche auslösen müssen. Zudem würde die Anomalie ja auch verteilt auftreten und nicht erst ab ca. der Hälfte der Zählvariablen.... Also dürfte es etwas anderes sein....
Ich denke, ich deinstalliere den MT4 , installiere ihn neu und berichte dann nach... Es kann doch nicht sein, dass die Hälfte des Ablaufs alles ok läuft und dann plötzlich alle Gesetze der Mathematik außer Kraft gesetzt sind....? :confused:

Angel 27.05.19 08:49

Ok. Jetzt habe ich ab Montag, Handelsbeginn, im Strategietester weiter gestestet. Immer noch seltsame Ergebnisse und das eingebaute Zeitglied wurde nicht angebsprochen, d.h. der Zeitraum belief sich auf den ersten Tick nach einer Stunde.
Umstellung von 1 Stunde auf 1 Minute brachte nichts.
Jetzt, im real-Betrieb, wo "Alert" nicht im Journal des Strategietesters ausgegeben wird, sondern im "Live-Alamfenster" des MT4, wird jede Minute eine neue Berechnung durchgeführt, sprich : Brav die For-Schleife durchgerechnet. Und zwar richtig und exakt! Wenn auch nur ca. 1 - 4 Sekunden verzögert,obwohl nach jeder neuen Minute einige Ticks erschienen, die wohl - unglaublicherweise - einfach "verschluckt" wurden.
Warum die unterschiedlichen Ergebnisse im Strategietester vs. Realbetrieb existieren, erschließt sich mir nicht - ich kann nur die Konsequenz daraus schließen, dass
a) ein Testen eines EA im Strategietester im Allgemeinen und am Wochenende im Besonderen nur bedingte bis gar keine Aussagekraft besitzt
b) eine Handelsentscheidung (bzw. im EA) auf Tickbasis unnsinnig ist, da einige Ticks nicht berücksichtigt / verschluckt werden, obgleich sie im Chart auf M1 zu sehen sind. Ob dies brokerabhängig ist, kann ich nicht sagen. Dies hat jedoch Einfluss auf EAs auf Basis kleiner Timeframes.

Beinahe faszinierend (oder erschreckend, ich bin hin- und hergerissen) finde ich, dass mein Broker "Leverate" / Direktbroker-FX trotz Anmahnung den gesamten Montag (!) die Ticks zwar in Echtzeit liefert, aber 5 Minuten später beginnt, d.h. Forex sonntags um 23:05 Uhr, was für die Montage erheblichen Einfluss auf die Kerzengestaltung / Aussehen haben kann (Und dies auch oft so ist). Auf M5 kann man dann montags gar nichts entscheiden, da mein M15 oder H1 anders aussieht als in Australien oder US oder eben bei anderen Brokern, deren Handelsbeginn eben um 23:00 Uhr beginnt. Sehr unbefriedigend, aber ich habe ohnehin vor, zu wechseln. Der Spread im EURUSD von 2-3 Pipetten bei Kommission von 2,4 pro Lot wird wohl eben auf diese Art und Weise erkauft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum