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

 
paladin80:
Vielleicht habe ich Ihre Frage anders verstanden, als Sie sie gemeint haben. In meinem Beispiel werden die Eröffnungskurse zwischen den Takten 3 und 2 sowie 2 und 1 verglichen. Die Takte 3 und 1 werden nicht verglichen. Wenn die verglichenen Werte gleich sind, passiert nichts, es wird einfach zum nächsten Vergleich übergegangen.
Warum x>1 (nicht >=). In der ersten Iteration wird Open[3]==Open[3-1] verglichen, d. h. Open[3]==Open[2]. GUT. Bei der zweiten (x=2), Open[2]==Open[1]. GUT. Es gibt keine dritte Iteration. Bei x>=1 wird der Vergleich Open[1]==Open[0] durchgeführt, was nicht in Ordnung ist, da ein Vergleich mit 0 bar durchgeführt wird.

Herzlichen Dank! Und wenn wir die Eröffnungs- und Schlusskurse jedes der drei Balken vergleichen, würde das den Code ändern?
extern int n=4;
//-----------------------------------------------+
for (x=n;x>1;x--)
   {
    if(Close[x]==Open[x]) continue;
      if(Close[x]<Open[x])
     {
      action
     }
     else{
      if(Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS:

Nein, bei jedem neuen Tick wird der Wert von Flag true sein . https://book.mql4.com/ru/variables/types

Sie können die Variable entweder global deklarieren, zum Beispiel am Anfang des Programms, außerhalb aller Funktionen.

Oder machen Sie die Variable statisch - static bool flag=true; .

Denken Sie nur daran, dass die Variable beim Neustart neu initialisiert wird. Dieser Ansatz ist also für einen Tester akzeptabel, aber nicht für den echten Handel.
 
Leute, könnt ihr einen Indikator vorschlagen? Sie basiert auf zwei Folien. Und wenn er sich kreuzt, gibt er die Richtung als Pfeile an. Ich kann es nicht finden, danke.
 
skyjet:

Herzlichen Dank! Und wenn wir die Eröffnungs- und Schlusskurse jedes der drei Balken vergleichen, ändert sich der Code dann so sehr?

Um das Problem zu verdeutlichen. Wir müssen den Eröffnungs- und den Schlussstand desselben Balkens vergleichen, d.h. ob der Balken Nummer n bärisch oder bullisch ist. Werfen Sie das folgende Skript in das Angebotsfenster.

extern int n=4;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for (int x=n; x>1; x--)
    {  
     if(Close[x]==Open[x])
      {
       Print("Бар номер ",n," плоский :)");
       continue;
      }
     if(Close[x]<Open[x])
      {
       Print("Бар номер ",n," медвежий");
       continue;
      }
     else // if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить
          // т.к. два случая (равно и меньше) уже обработаны
      {
       Print("Бар номер ",n," бычьий");
      }
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
paladin80:

Um den Code hier korrekt einzufügen, klicken Sie auf SRC und dann auf den Code dort.

Werfen Sie diesen EA in das Angebotsfenster.


Ich warf es in das Fenster, wie der Indikator schreibt nur die Verschiebung Wert, wie ich es verstehe, aber was sollte ich hinzufügen, um den Code, so dass ich hinzufügen kann, wie viele Ebenen ich in den Einstellungen benötigen?
 
Danila_mactep:

Ich habe es in das Fenster, wie der Indikator schreibt nur die Verschiebung Wert, wie ich es verstehe, aber was sollte ich in den Code hinzufügen, um in der Lage sein, um die Einstellungen, wie viele Ebenen ich brauche?

Es wird kein Verschiebungswert geschrieben. Wenn ich mich recht erinnere, gibt der Code keine Verschiebung an, sondern liest nur den Wert des MAHA. Es gibt also diesen Wert aus.

Um den Verschiebungswert im Verhältnis zum MA-Wert zu sehen, müssen Sie diesen Wert in externen Parametern einstellen und dann den MA-Wert + Verschiebungswert*Punkt für eine Verschiebung nach oben und den MA-Wert - Verschiebungswert*Punkt für eine Verschiebung nach unten ausgeben.

 
Danila_mactep:

Ich warf es in das Fenster, genau wie der Indikator schreibt nur die Verschiebung Wert, wie ich es verstehe, aber was sollte ich den Code hinzufügen, so dass ich so viele Ebenen, wie ich in den Einstellungen benötigen hinzufügen können?
extern int  sdvig=0;
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, sdvig);
  Comment("Для бара номер ",sdvig," значение МА = ",DoubleToStr(MA,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
}
 
paladin80:


Nein, das ist es nicht. Sie benötigen eine Verschiebung der MA um eine bestimmte Anzahl von Punkten nach oben und unten. Keine Barverschiebung in der Geschichte.
 
artmedia70:

Nein, das ist es nicht. Sie benötigen eine Verschiebung der MA um eine bestimmte Anzahl von Punkten nach oben und unten. Keine Barverschiebung in der Geschichte.
extern int move=100; 
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, 0);
  double Sdvig=MA+(move*Point);
  Comment("Сдвиг на ",sdvig," пунктов от МА = ",DoubleToStr(Sdvig,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
} 
 
paladin80:

Und jetzt auch im Minus... Und er wird glücklich sein :) Oder überlassen Sie es ihm, sich selbst Gedanken darüber zu machen, wie er herunterschalten kann?