Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 163

 
Hallo, könnten Sie mir bitte sagen, wie ich programmgesteuert erkennen kann, dass sich der Kurs einem zirkulären Niveau genähert hat?
 
profitnik:
Hallo, könnten Sie mir bitte sagen, wie ich programmtechnisch erkennen kann, dass sich der Preis einem zirkulären Niveau genähert hat?
Normalisieren des Preises auf die gewünschte Anzahl von Dezimalstellen, NormalizeDouble().
 

Können Sie mir sagen, wie man mehrere Werte aus einer Funktion korrekt zurückgibt?

Nehmen wir an, ich habe eine ABC-Funktion und möchte die Werte von drei Variablen auf einmal abrufen, wie mache ich das?


int ABC()
  {
   int A=1;
   int B=1;
   int C=1;

  return (A,B,C)
 }
 
-Aleks-:

Können Sie mir sagen, wie man mehrere Werte aus einer Funktion korrekt zurückgibt?

Nehmen wir an, ich habe eine ABC-Funktion und möchte die Werte von drei Variablen auf einmal abrufen, wie mache ich das?

//int a, b, c;

OnTick()
 {
 //int a, b, c;
 ABC(a, b, c);
 Print(a," | ", b," | ", c);
 }

void ABC(int &A,int &B,int &C)
  {
   A=1;
   B=1;
   C=1;
 }
Wie diese
 
Vitaly Muzichenko:
Ich glaube schon.

Ich danke Ihnen.

Aber ich verstehe es nicht, wenn meine Eingabe ist 2 Variablen für die Berechnung, und die Ausgabe sollte 3 (mit verschiedenen int und double-Typen ) sein, was sollte ich tun?

 
-Aleks-:

Ich danke Ihnen.

Aber ich weiß nicht, wenn meine Eingabe ist 2 Variablen für die Berechnung, aber die Ausgabe sollte 3 sein (mit verschiedenen int und double-Typen ), was sollte ich tun?


OnTick()
 {
   double x,y,c;

   int    q=5;
   double w=0.1;
   ABC(q,w);

   Print(x," | ", y," | ", c);
 }

void ABC(int A,double B)
  {
   x=A+B;
   y=A-B;
   c=A*B;
  }
 
-Aleks-:

Ich danke Ihnen.

Aber ich weiß nicht, wenn meine Eingabe ist 2 Variablen für die Berechnung, aber die Ausgabe sollte 3 sein (mit verschiedenen int und double-Typen ), was sollte ich tun?

int a, b;
double c;

OnTick()
 {
 a=11; b=3;
 ABC(a, b, c);
 Print(a," | ",b," | ",c);
 }

void ABC(int &A,int &B,double &C)
  {
   A=B+4;
   B=A-2;
   C=(double)A/B;
 }
 

Ich entschuldige mich dafür, dass ich langsam bin, aber ich würde lieber mein Beispiel verwenden, um herauszufinden, wie man das organisiert - es gibt eine Funktion, die viele Male im Code an verschiedenen Stellen aufgerufen wird - jetzt gibt sie einen Wert zurück, aber ich brauche auch, sagen wir, 2 _High und _Low - wie sollte das gemacht werden?


int BarPeresek_iMAf(int PeriodMA)
  {
   int TFT=0;
   int shiftMAT=0;
   int typeMAT=0;
   int priceMAT=0;
   int BarPeresek=0;
   if(Bars>PeriodMA)
     {
      for(int X=1;X<1000; X++)
        {
         double MAT=NormalizeDouble(iMA(Symbol(),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X),Digits);
         if((Low[X]>MAT && High[X]>MAT) || 
            (Low[X]<MAT && High[X]<MAT))BarPeresek++;
         else {BarPeresek++; break;}
        }

     }
   double _High=High[BarPeresek]; //Надо получить сразу из функции
   double _Low=Low[BarPeresek];   //Надо получить сразу из функции
   return BarPeresek;
  }
 
-Aleks-:

Ich entschuldige mich für die Unbeholfenheit, aber ich würde lieber mein Beispiel verwenden, um zu verstehen, wie man es organisiert - es gibt eine Funktion, die viele Male im Code an verschiedenen Stellen aufgerufen wird - jetzt gibt sie einen Wert zurück, aber ich brauche auch, sagen wir, 2 _High und _Low - wie sollte das gemacht werden?



OnTick()
{
   double _High=High[BarPeresek_iMAf(Per_MA)];
   double _Low=Low[BarPeresek_iMAf(Per_MA)];
} 

int BarPeresek_iMAf(int PeriodMA)
  {
   int TFT=0;
   int shiftMAT=0;
   int typeMAT=0;
   int priceMAT=0;
   int BarPeresek=0;
   if(Bars>PeriodMA)
     {
      for(int X=1;X<1000; X++)
        {
         double MAT=NormalizeDouble(iMA(Symbol(),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X),Digits);
         if((Low[X]>MAT && High[X]>MAT) || 
            (Low[X]<MAT && High[X]<MAT))BarPeresek++;
         else {BarPeresek++; break;}
        }
     }
   return BarPeresek;
  }

 
Nikolay Gaylis:

Nein, ich muss einen Wert von einer Funktion erhalten - _High und _Low ist nur ein Beispiel...