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)
-   -   Im BackTest Tag auslesen?? (http://www.expert-advisor.com/forum/showthread.php?t=5893)

Trader6666 17.10.17 09:57

Im BackTest Tag auslesen??
 
Hi,

ich versuch grad ne Range zu ermitteln wo ich den Sonntag ausschließen möchte, da er nicht wirklich relevant ist und das Ergebnis verfälscht,meiner Meinung nach.

Nur Wie??????

Day() : gibt den aktuellen Tag im Monat zurück
DayofWeek() : gibt den aktuellen Wochentag zurück


nur sind diese Funktionen nicht brauchbar wenn man ne for schleilfe durchlaufen lässt, Sie geben nur den aktuellen Tag wieder sprich heute....

Hab keine anderen Funktionen gefunden, weiß jem wie ich das anstellen kann/welche Funktion brauchbar ist??

traderdoc 17.10.17 13:35

if (DayOfWeek() == 0) return;

traderdoc

Trader6666 17.10.17 13:50

Hi Doc

ja das hatte ich auch gedacht und ausprobiert, nur blöderweise funktioniert das nicht weil er den aktuellen Tag ausließt , also heute/jetzt, wahrscheinlich über die ServerTime, ich hab kein ArraySeries gefunden den man mit der for schleife durchlaufen kann, wo die Tage wiedergegeben werden, wenn ich das so abfrage sagt er mir ja "Heut ist nicht Sonntag" und rattert eben alles durch...

Aber ich muss ja die Candle abfragen ob diese Sonntag ist....sprich wenn ich die letzten 30 Tage auswerten möchte. Bei Indikatoren gehen wir ja mit der shift-Position die Kerzen durch von 0-Bars oder eben umgekehrt..

Also bräuchte ich quasi ne Funktion mit "shift" wo der Tag wiedergegeben wird, damit ich Ihn abgleichen kann.....hoffe das war verständlich?!
Hab selber noch nix gefunden :(:(

RetepM 17.10.17 16:53

Hi, probier mal das:

extern bool Monday = true;
extern bool Tuesday = true;
extern bool Wednesday = true;
extern bool Thursday = true;
extern bool Friday = true;
extern bool Saturday = true;
extern bool Sunday = true;


void WeekdayFilter()
{
if ((Monday && DayOfWeek() == 1) || (Tuesday && DayOfWeek() == 2) || (Wednesday && DayOfWeek() == 3) ||
(Thursday && DayOfWeek() == 4) || (Friday && DayOfWeek() == 5) || (Saturday && DayOfWeek() == 6) || (Sunday && DayOfWeek() == 0))
{
Do something...;
}
}

Grüße

traderdoc 17.10.17 19:10

Zitat:

Zitat von Trader6666 (Beitrag 39926)
Hi Doc

Aber ich muss ja die Candle abfragen ob diese Sonntag ist....sprich wenn ich die letzten 30 Tage auswerten möchte. Bei Indikatoren gehen wir ja mit der shift-Position die Kerzen durch von 0-Bars oder eben umgekehrt..

Also bräuchte ich quasi ne Funktion mit "shift" wo der Tag wiedergegeben wird, damit ich Ihn abgleichen kann.....hoffe das war verständlich?!
Hab selber noch nix gefunden :(:(

Wenn Du die Startzeit definierst und innerhalb der Schleife die Zeit weiterlaufen lässt (sekundenweise, tickweise, timeframe-periodenweise) dann wird irgendwann die Zeit des Sonntages kommen und dann schlägt erbarmungslos

if (TimeDayOfWeek(time) == 0)

zu!

traderdoc

Trader6666 18.10.17 09:54

Guten Morgen,

@RetepM , das is eig das gleiche in Grün:D , es bezieht sich ja immer noch auf den aktuellen Zeitpunkt, danke dennoch für den Versuch.

@Doc, ja genau das wollt ich eig umgehen, aber ne andere/leichtere Variante scheint es wohl nicht zu geben,

dank euch beiden für eure Ansätze

LG

traderdoc 18.10.17 11:38

Aber was gibt es da zu umgehen? Wenn Du in der Schleife per Shift-Incementierung oder -Decrementierung die einzelnen Kerzen und deren OHLC-Werte aufrufst, dann hängt da automatisch auch die Kerzenzeit dran und die wird in TimeDayOfWeeks() nur noch eingesetzt - fertig!

traderdoc

RetepM 19.10.17 11:07

Zitat:

Zitat von Trader6666 (Beitrag 39931)
Guten Morgen,

@RetepM , das is eig das gleiche in Grün:D , es bezieht sich ja immer noch auf den aktuellen Zeitpunkt, danke dennoch für den Versuch.
LG

OK, hatte Dich wohl falsch verstanden, meine Idee dazu war, dass Du die Wochentags-Funktion benutzt, um an den Tagen, die auf true gesetzt wurden, deine Range berechnest und sonst eben nicht, zusätzlich mag ich selbst immer ganz gern die Möglichkeit, interaktiv die Tage zu bestimmen, an denen etwas passieren soll.
Ja, das geht natürlich ebenfalls mit dem anderen Vorschlag.

Trader6666 19.10.17 22:33

ahhh mist hab diese Funktion ühaupt nicht ausprobiert :o dachte die ist ähnlich der DayofWeek und hab sie dann einfach ignoriert -.-

is eig genau das was ich gesucht hab:D Geduld ist eben eine Tugend....


Code:


  int Wochentag = DayOfWeek();
  int Counter  =  DayOfWeek()-1; 
  for(int i=1;i<=20;i++)
    {           
      if(Counter!= 0 )
        {
          PL("Pfeil"+i,Time[i],High[i],clrYellow);
          Range5    =    Range5  +  (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point/10;         
        }                   
      if(Counter == 0)
        {         
          Counter = 6;
        }
        Counter--;
    }

so gehts auch nur eben umfangreicher :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 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