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)
-   -   Periodentrennung (http://www.expert-advisor.com/forum/showthread.php?t=2028)

Biatsch 08.03.12 15:36

Periodentrennung
 
Gibt es die Möglichkeit an den Einstellungen der Periodentrennung etwas zu ändern ?

Oder vielmehr interessiert es mich, ob jemand einen Indikator kennt, der die periodentrennung an vorgegebenen Perioden einzeichnet.

Ich hätte nämlich gerne je eine vertikale Linie um 6, 11, 15 und 19 Uhr und eine andere Farbe oder Linienart am Dienstag und Donnerstag.

Ich habe mich bisher noch nicht mit Zeitfunktionen in MQL4 außeinandergesetzt.
Wenn es einen Indikator in dieser Richtung gibt, kann ich ja ein wenig am Code ändern, aber mir fehlt eben das Grundgerüst.

Biatsch 09.03.12 00:52

Naja, weiß denn jemand, wie es möglich ist ein Histogramm in das Chartfenster zu zeichnen ?
Bei mir wird da nämlich nichts angezeigt.

Biatsch 09.03.12 01:20

Ich weiß jetzt, dass man mit der Funktion:
Code:

iHour=TimeHour(Time[i])
auf die Uhrzeit zugreifen kann. Das ist aber nur die Eröffnungs_Uhrzeit der entsprechenden Candle.

Gibt es auch die Möglichkeit auf die tatsächliche Uhrzeit während einer vergangenen Candle zuzugreifen ?

Meine Periodentrennung um 5 Uhr wird im 1_Tages_Chart z.B. nicht angezeigt, da in der unteren Leiste immer 0 Uhr steht.

Biatsch 09.03.12 09:57

Bevor ich hier noch tagelang meinen Monolog halte, sehe sich jemand bitte diesen Code an:

Code:

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT

double Session1[];
double Session2[];
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
int init()
{
  SetIndexBuffer(0,Session1);
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(1,Session2);
  SetIndexStyle(1,DRAW_LINE);
  return;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
int start()
{
  int counted_bars=IndicatorCounted();
  int i = Bars-counted_bars-1;
 
  while(i>=0){ 
     
      Session1[i]=0;
      Session2[i]=0;
      int iDayOfWeek=TimeDayOfWeek(Time[i]);        //Day
      int iHour    =TimeHour(Time[i]);            //Hour 
      int iMinute  =TimeMinute(Time[i]);          //Minute
       
        if(iMinute==0  && iHour==0  && iDayOfWeek==2)  Session1[i]=Low[i];
        if(iMinute==59 && iHour==23 && iDayOfWeek==2)  Session1[i]=Low[i];          //Dieser Teil wird nicht auf höheren Zeitebenen Abgebildet
        if(iMinute==0  && iHour==0  && iDayOfWeek==4)  Session2[i]=Low[i];
        if(iMinute==59 && iHour==23 && iDayOfWeek==4)  Session2[i]=Low[i];          //Dieser Teil wird nicht auf höheren Zeitebenen Abgebildet
  i--;
  }

  return;
}

Die Blaue Linie markiert den Dienstag, die Rote den Donnerstag.
Leider entsteht keine Markierung am Ende des entsprechenden Tages.

Was kann man da machen ?

Die Optik ist auch nicht das Wahre.
Daher wüsste ich gern, wie ich statt Draw_Line die Draw_Histogramm-Funktion im Chart_Fenster anwenden kann.
Denn dann könnte ich die Periodentrennung vertikal durchziehen.
Zudem weitet sich die Linie je weiter man verkleinert (1_Tages_Chart) untern auf.

naranjoe 10.03.12 10:18

Hallo,

also Indicator Buffers würde ich dafür nicht nehmen, ist eher etwas für horizontale Linien.
Ich würde das eher mit Objecten realisieren.
Schau dir das mal an
Code:

#property indicator_chart_window
extern int iHour1=6;
extern int iHour2=11;
extern int iHour3=15;
extern int iHour4=19;
int x=0;

int init()
{
}
 
int deinit()
{
 for(int z=1;z<=x;z++)
      {
      ObjectDelete("Time" + z);
      }
}
 
int start()
{
      int iIndicatorCounted=IndicatorCounted();
      if(iIndicatorCounted<0)
        {
          return(-1);
        }
       
      int iLimit=Bars-iIndicatorCounted;
      for(int i=iLimit;i>=0;i--)
        {
            if(TimeHour(Time[i])==iHour1 || TimeHour(Time[i])==iHour2 || TimeHour(Time[i])==iHour3 || TimeHour(Time[i])==iHour4 && TimeMinute(Time[i])==0)
              {
                if (TimeDayOfWeek(Time[i]) == 2 || TimeDayOfWeek(Time[i]) == 4)
                  {
                  x++;
                  ObjectCreate("Time" + x,OBJ_VLINE,0,Time[i],High[i]);
                  ObjectSet("Time" + x,OBJPROP_COLOR,Red);
                  ObjectSet("Time" + x,OBJPROP_STYLE,STYLE_DOT);
                  ObjectSet("Time" + x,OBJPROP_WIDTH,1);
                  ObjectSet("Time" + x,OBJPROP_BACK,true);
                  }
                else
                  {
                  x++;
                  ObjectCreate("Time" + x,OBJ_VLINE,0,Time[i],High[i]);
                  ObjectSet("Time" + x,OBJPROP_COLOR,Silver);
                  ObjectSet("Time" + x,OBJPROP_STYLE,STYLE_DOT);
                  ObjectSet("Time" + x,OBJPROP_WIDTH,1);
                  ObjectSet("Time" + x,OBJPROP_BACK,true);
                  }
               
               
              }
        }
  }

Gruß
naranjoe

starlighter 05.10.14 16:47

Vielen Dank für die Bereitstellung des Codes.

Kann jemand den Code erweitern, damit Periode H1 z.B. auf M15 zu sehen ist?

Merci.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01: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