Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 877

 
evillive:
Richtig, wenn Sie Bollinger Bands verwenden, müssen Sie nicht iCustom aufrufen, sondern iBands, und zwar für jede Indikatorlinie separat. Der alternative Weg, ohne den Indikator aufzurufen ("ohne Puffer, Arrays und Schleifen zu verwenden"), besteht darin, im Expert Advisor den Algorithmus der Indikatorberechnung zu implementieren und den richtigen Wert zu lesen, wenn er benötigt wird (Sie können nur den richtigen Wert lesen, zum Beispiel nur die untere Zeile). Aber ganz ohne Schleifen und Arrays geht es nicht.

GUT. Wie schreibt man das dann richtig?

MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Wie kann man die Werte von ExtUpperBuffer[0] und ExtUpperBuffer[1] extrahieren, bzw. verringern?

 
rapid_minus:

GUT. Wie schreibt man das dann richtig?

MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

Wie extrahiert man die Werte von ExtUpperBuffer[0] und ExtUpperBuffer[1], also von oben und unten?

Auch hier ist der Indikatoraufruf falsch geschrieben.

Ich habe es hier schon richtig geschrieben. Sie müssen sich nichts selbst ausdenken, alles ist in der Referenz enthalten.

Noch einmal:

High_2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,2); //это и есть ExtUpperBuffer[2]
High_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,1); //ExtUpperBuffer[1]
High_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0); //ExtUpperBuffer[0]
Low_2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,2); //ну и нижние соответственно, ExtLowerBuffer[2]
Low_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,1); //ExtLowerBuffer[1]
Low_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0); //ExtLowerBuffer[0]
 
evillive:

Auch hier ist der Indikatoraufruf falsch notiert.

Den richtigen Weg habe ich hier bereits beschrieben. Sie müssen sich nichts ausdenken, es steht alles im Handbuch.

Ein weiteres Mal:

Nun, ich habe es beim dritten Mal geschafft. Es scheint so.

Der Fehler in MB_2 ist also, dass es keine aufrufbare Zeilenbezeichnung gibt, richtig? Aber ich habe noch nicht herausgefunden, wie ich die mittlere Bollinger-Linie aufrufen kann. Oder nur als gleitender Durchschnitt? MODE_SMA ?

 
rapid_minus:

Nun, ich habe es beim dritten Mal geschafft. Scheint so zu sein.

Der Fehler in MV_2 ist also, dass es keine aufrufbare Zeilenbezeichnung gibt, richtig? Aber ich habe noch nicht herausgefunden, wie ich die Bollinger-Mittelwertlinie aufrufen kann. Oder nur als gleitender Durchschnitt? MODE_SMA ?

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - bis Nullbar (letzte Ziffer in Klammern - Offset zum gewünschten Bar).

Kein Grund zur Eile, lesen Sie die Hilfe sorgfältig durch.

 
evillive:

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - bis zum Null-Bar (letzte Ziffer in Klammern - Offset zum gewünschten Bar).

Kein Grund zur Eile, lesen Sie die Hilfe sorgfältig durch.

Ich danke Ihnen!

Nur wie findet man sie in der Hilfe, wenn man nicht weiß, wie man die Frage formulieren soll - das ist die Frage!

Nochmals vielen Dank. Ich werde noch etwas weiter graben.

 
rapid_minus:

Ich danke Ihnen!

Nur wie findet man sie in der Hilfe, wenn man nicht weiß, wie man die Frage formulieren soll - das ist die Frage!

Nochmals vielen Dank. Ich werde noch ein wenig weiterforschen.

Zu lernen, die richtigen Fragen zu stellen, ist schon die halbe Antwort, also irgendwie ;)
 
mario065:
Hier ist ein Beispiel, in dem ich gezeigt habe, wie man einen Takt nach dem Überqueren von 2 Muves misst.

Ihren Code ausprobiert

Die Frage ist die Bar-Nummer?

Ich habe seinen Wert erklärt, er zeichnet verschiedene Zahlen, einschließlich der Null auf dem Stundenzeiger

Ich habe versucht, es durch ein Testgerät laufen zu lassen, und es ist dasselbe.

Wenn der Wert des einen gleich dem des anderen ist, wird er versuchen, die Zahlen so zu ziehen, wie ich es brauche

danke

 
sannin:

Ihren Code ausprobiert.

Die Frage ist die Bar-Nummer?

Ich habe seinen Wert erklärt, er zeichnet verschiedene Zahlen, einschließlich der Null auf dem Stundenzeiger

Ich habe versucht, es durch ein Testgerät laufen zu lassen, und es ist dasselbe.

Wenn der Wert des einen gleich dem des anderen ist, wird er versuchen, die Zahlen so zu ziehen, wie ich es brauche

Danke

Ich versuche nur, ein Beispiel zu geben.

Ich sehe, du hast es geschafft.)

Hier ist der Code:

//+------------------------------------------------------------------+
//|                                                    count bar.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

extern int limit = 300;
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    static datetime time,timeup,timedn;
    double spread=MarketInfo(Symbol(),MODE_SPREAD);
    double maslow1,mafast1,maslow2,mafast2;
    int    shift,shift1,shift2,f,j;
    
    for(shift=limit;shift>0;shift--){
        shift1=shift+1;shift2=shift+2;
        maslow1 = iMA(NULL,0,20,0,MODE_SMA,PRICE_OPEN,shift1);
        mafast1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_OPEN,shift1);
        maslow2 = iMA(NULL,0,20,0,MODE_SMA,PRICE_OPEN,shift2);
        mafast2 = iMA(NULL,0,5,0,MODE_SMA,PRICE_OPEN,shift2);
 
     if(mafast2<maslow2 && mafast1>maslow1){
        timeup=Time[shift1];
       } 
     if(mafast2>maslow2 && mafast1<maslow1){
        timedn=Time[shift1];
       } 
     
     if(timeup > timedn){
        time = timeup;
       } else {
        time = timedn;
       }
     }
 
      int b1=iBarShift(Symbol(), 0, time);      
      int b2=iBarShift(Symbol(), 0, TimeCurrent());
//Преброяване на баровете-от нулевия до началната дата
    for(j=b2;j<=b1;j++){
        f=b1-b2;
       }
      
   Comment("\n Време на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS)," Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\n Текущ спред: ",DoubleToStr(spread/10,1),
           "\n=====================",
           "\n Начална дата:           ",TimeToStr(time,TIME_DATE|TIME_SECONDS), 
           "\n Брой барове:            ",f,
           "\n=====================" 
             ); 
   return(0);
  }
//+------------------------------------------------------------------+

 
mario065:

Ich habe es als Beispiel geschrieben.

Ich sehe, du hast es geschafft :)

Hier ist der Code:

Ich danke Ihnen vielmals.

Ich werde teilen, wenn ich reich bin.

 
sannin:

Ich danke Ihnen vielmals.

Ich werde teilen, wenn ich reich bin.

Kaffee ist genug, wenn man reich wird ;)