Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie erkennt EA ob Sonntag gehandelt wurde?

Geschrieben

Hallo,

meine EAs nutzen als Filter das Tageshoch & -tief der Vortages, obwohl der EA im 5 min Chart läuft. Aber wenn der Broker am Sonntagabend schon anfängt zu traden, wird für die eine Std. Handel am So. ein Tageshoch & -tief ausgegeben. Um diese Daten zu überspringen und die Daten des Fr. zu nutzen, kann in meinen EAs die Einstellung 'SundayIsTrading' auf 'true' gestellt werden. Soweit kein Problem. Aber diese Lösung hilft in längerfristigen backtests wenig, wenn diese Einstellung durch die Zeitumstellungen zur Sommerzeit immer wieder geändert werden müsste.

Wie kann der EA erkennen ob Sonntag gehandelt wurde oder nicht? Ich habe etwas über das Volume versucht, bin aber zu keiner Lösung gekommen.

Featured Replies

Geschrieben
Eventuell müsste sich das über die Zahl der Stäbe definieren lassen, weil am So. sollten das sehr wenige sein.
Geschrieben

Du arbeitest in TF M5.

 

if (TimeDayOfWeek(TimeCurrent())==1)

{

...

}

In diesem Block

per iTime und TimeDayofWeek im Tageschart den Vortag herrausfinden.

Bei 0 (Sonntag) halt noch einen Balken zurückgehen so dass du 5 (Freitag) erhälst - "shift" abspeichern.

Jetzt per iHigh und iLow an entsprechenden shift im Tageschart die Variablen zwischenspeichern.

Geschrieben
  • Autor
Du arbeitest in TF M5.

 

if (TimeDayOfWeek(TimeCurrent())==1)

{

...

}

In diesem Block

per iTime und TimeDayofWeek im Tageschart den Vortag herrausfinden.

Bei 0 (Sonntag) halt noch einen Balken zurückgehen so dass du 5 (Freitag) erhälst - "shift" abspeichern.

Jetzt per iHigh und iLow an entsprechenden shift im Tageschart die Variablen zwischenspeichern.

 

Danke erstmal, erst fiel mir es schwer es zu verstehen und umzusetzen, aber ich habe eine Lösung gebastelt.

Mir scheint es funktioniert. Unten mein Weg, darin eingeschlossen Werte für den Vor-Vortag und das auch

für Dienstags. Es gibt wahrscheinl. elegantere Wege ...

(Die Rundung per NormalizeDouble um gl. Werte bei 4 & 5-Digit Brokern zu bekommen.)

 

double SunT=false; double SunT2=false;
       
       double tday = iTime(NULL,PERIOD_D1,1); double tday2 = iTime(NULL,PERIOD_D1,2);
       
       if (TimeDayOfWeek(tday) ==0 && DayOfWeek()==1) SunT=true;
       
       if (TimeDayOfWeek(tday2) ==0 && DayOfWeek()==2) SunT2=true;     
       
       double o1d; double c1d; double h1d; double l1d; double h2d; double l2d;
         
        if(SunT==true)
       {
        o1d = NormalizeDouble(iOpen(NULL,PERIOD_D1,2),4);
        c1d = NormalizeDouble(iClose(NULL,PERIOD_D1,2),4);
       
        h1d = NormalizeDouble(iHigh(NULL,PERIOD_D1,2),4);
        l1d = NormalizeDouble(iLow(NULL,PERIOD_D1,2),4);
        
        h2d = NormalizeDouble(iHigh(NULL,PERIOD_D1,3),4);
        l2d = NormalizeDouble(iLow(NULL,PERIOD_D1,3),4);
       }
       
               if(SunT2==true)
       {
        o1d = NormalizeDouble(iOpen(NULL,PERIOD_D1,1),4);
        c1d = NormalizeDouble(iClose(NULL,PERIOD_D1,1),4);
       
        h1d = NormalizeDouble(iHigh(NULL,PERIOD_D1,1),4);
        l1d = NormalizeDouble(iLow(NULL,PERIOD_D1,1),4);
        
        h2d = NormalizeDouble(iHigh(NULL,PERIOD_D1,3),4);
        l2d = NormalizeDouble(iLow(NULL,PERIOD_D1,3),4);
       }
       
               if(DayOfWeek()>2||(SunT==false&&SunT2==false))
       {
        o1d = NormalizeDouble(iOpen(NULL,PERIOD_D1,1),4);
        c1d = NormalizeDouble(iClose(NULL,PERIOD_D1,1),4);
       
        h1d = NormalizeDouble(iHigh(NULL,PERIOD_D1,1),4);
        l1d = NormalizeDouble(iLow(NULL,PERIOD_D1,1),4);
        
        h2d = NormalizeDouble(iHigh(NULL,PERIOD_D1,2),4);
        l2d = NormalizeDouble(iLow(NULL,PERIOD_D1,2),4);
       }

Geschrieben

Die frage die ich mir stelle: Wie umgeht man außerplanmäßige Feiertage?

Oder gibts die quasi nicht?

Erstellt mql evtl Kerzen ohne Ausdehnung? Die könnte man dann ja recht leicht ausfinden.

Und zumindest auf höherer Zeiteinheit hat man so gutes Kriterium.

Geschrieben
IM FX Handel gibt es -ausser 2 Tage an Weihnachten und an Neujahr und eventuell den nächsten Tag- keine Feiertage. Wobei natürlich nationale Feiertage teils zu spüren sind.
Geschrieben
  • Autor

Einen jd. Monat wiederkehrenden 'Feiertag' ;-) würde ich meinen EA gerne erkennen lassen: Den 1. Fr. im Monat, wenn die US-Arbeitsmarktdaten veröffentlicht werden.

Es fehlt mir im metatrader die Funktion 'DayOf Month'. Dann könnte man ganz einfach über:

 

if (DayOf Month()<8 && DayOfWeek==5 && Hour()==14)

 

den EA hier z. B. aussetzen lassen.

Wie kann man das anders umsetzen?

Bearbeitet von forextrading24

Geschrieben
int TimeDay( datetime date)

Returns day of month (1 - 31) for the specified date.

das dürfte doch dein "DayOf Month()" sein :ot:

 

warum überprüfst du den Dienstag in deinem Code?

jetzt ohne den Code auf Richtigkeit zu prüfen dachte ich ehr an sowas hier

 

int shift;
double dHigh, dLow;
if (TimeDayOfWeek(TimeCurrent())==1) //Blockbearbeitung nur am Montag
{
  if (TimeDayOfWeek(iTime(NULL,PERIOD_D1,1))==0) //VortagsTagesbalken==Sonntag?
  shift=2;
  if (TimeDayOfWeek(iTime(NULL,PERIOD_D1,1))==5) //VortagsTagesbalken==Freitag?
  shift=1;

  dHigh = iHigh(NULL, PERIODE_D1, shift); //FreitagsHigh
  dLow = iLow(NULL, PERIODE_D1, shift); //FreitagsLow
}

 

Das ist jetzt ins blaue gecodet und wurde nicht überprüft. Dies sollte auch nur zur Orientierung dienen.

Geschrieben
  • Autor

Danke Frühaufsteher!

Tatsächlich, das ist mein "DayOfMonth()"

Ich hätte mich ein wenig mehr mit der metatrader Reference auseinandersetzen sollen, es war auch mehr so eine Frage ins Blaue hinein.

Ich beachte den Dienstag in meinem Code, weil ich den korrekten Vor-Vortageswert an jd. Tag, auch am Die. haben möchte.

Liegt z. B. der TP einer evtl. long Position über dem Tageshoch des Vortages kann das problematisch sein. Liegt aber der TP zusätzlich über dem Tageshoch des Vor-Vortages, also beide Hochs liegen nah beieinander, soll der EA den Trade definitiv nicht ausführen. Zu unwahrscheinlich, dass das was wird.

 

Dein Code ist natürlich eleganter, meine Lösung etwas holprig. Werde gleich mal meine Lösung mit deinem Codeschnipsel vereinen. Danke, es war mal wieder sehr lehrreich!

 

Schönes Wochenende allerseits!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.