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

 
Können Sie mir sagen, wie ich alle Werte im Text zusammenfassen kann?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
Dieser Code erzeugt sie nur
 
Дмитрий:

Guten Tag, bitte helfen Sie mir zu verstehen...

MathMax gibt das Maximum zweier numerischer Werte zurück, d. h. es gibt den maximalen numerischen Wert aus zwei identischen Arrays high[rates_total] mit einer Differenz von -1 und -2 Balken?

In einfachen Worten: Wird diese Funktion im ersten Feld 12345 und im zweiten Feld 1234 5 zurückgeben?

Nein. Die Funktion gibt 12345 zurück.

 
Дмитрий:

Guten Tag, bitte helfen Sie mir zu verstehen...

MathMax gibt das Maximum zweier numerischer Werte zurück, d. h. es gibt den maximalen numerischen Wert aus zwei identischen Arrays high[rates_total] mit einer Differenz von -1 und -2 Balken?

In einfachen Worten: das erste Array hat 12345 und das zweite 1234, wird diese Funktion 5 zurückgeben?

Es wird der Maximalwert der beiden Werte high[rates_total-1] und high[rates_total-2] zurückgegeben.

Wenn die Adresse high[rates_total-1] den Wert 12345 und die Adresse high[rates_total-2] den Wert 1234 enthält, welcher dieser beiden Werte ist größer?

12345 ist eindeutig um eine Größenordnung größer als 1234. Es wird der Wert 12345 von high[rates_total-1] zurückgegeben.

 
Artyom Trishkin:

Es wird der Höchstwert der beiden Werte high[rates_total-1] und high[rates_total-2] zurückgegeben.

Wenn high[rates_total-1] den Wert 12345 und high[rates_total-2] den Wert 1234 enthält, welcher dieser beiden Werte ist größer?

12345 ist eindeutig um eine Größenordnung größer als 1234. Es wird der Wert 12345 von high[rates_total-1] zurückgegeben.

Danke... Es stellt sich jedoch die Frage nach der Rationalität der Zeichenkette, wenn high[rates_total-1] bereits einen Balken größer ist als high[rates_total-2]

Oder gibt es hier eine andere Bedeutung?

Ich danke Ihnen.

 
Дмитрий:

Ich danke Ihnen... dies wirft jedoch die Frage nach der Rationalität der Zeichenfolge auf, wenn hoch[Preise_Gesamt-1] bereits einen Balken mehr als hoch[Preise_Gesamt-2] ist

Oder gibt es etwas anderes, das hier Sinn macht?

Ich danke Ihnen.

Was haben die Gitterstäbe damit zu tun?

Sie vergleichen hohe Werte auf zwei Balken desselben Arrays. Die Angaben rates_total-1 und rates_total-2 geben an, welche Werte der beiden Balken Sie vergleichen.

Sie vergleichen die Höchstwerte der Balken auf rates_total-1 und rates_total-2, nicht die Werte der Indizes.

Was Sie sich vorstellen, würde wie folgt aussehen: MathMax(rates_total-1, rates_total-2) - hier wird immer rates_total-1 zurückgegeben.

 
Rustam Bikbulatov:
Können Sie mir sagen, wie ich alle Werte im Text zusammenzählen kann? Dieser Code erzeugt nur

Möchten Sie den Saldo abzüglich der Eigenkapitalwerte erhalten?

 
Artyom Trishkin:

Was haben die Gitterstäbe damit zu tun?

Sie vergleichen die Werte von High, die auf...

Ich danke Ihnen... Zur Verdeutlichung)
 

Guten Tag an alle!

In MT4, auf dem Modell ALL TIKES, auf Minuten-Candlesticks, teste ich den Expert Advisor. Meine Aufgabe ist es, das Programm so zu gestalten, dass es so wenig Zeit wie möglich mit der Codeausführung verbringt. Aber was mich überraschte!!!!

In diesem Code prüft das Programm jeden Tick und verbringt 6 Sekunden mit der Codeausführung. 375 Millisekunden.

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

Ich hatte den Eindruck, dass das Programm nicht jeden Tick, sondern nur den ersten Tick jeder Minutenkerze überprüfen sollte, um viel weniger Zeit für die Codeausführung zu benötigen.

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



Aber das Programm verbrachte 6 Sek. 219 msec. Daraus schloss ich, dass das Programm, obwohl es den Ausdruck in Klammern nur einmal alle 60 Sekunden überprüfen soll, diesen Ausdruck dennoch bei jedem Tick überprüft und fast so viel Zeit für die Ausführung aufwendet wie im vorherigen Code.
Dann änderte ich das Modell in VALUABLE VALUES und führte die zweite Variante aus. Das Programm benötigte jedoch die gleichen6 Sekunden für die Ausführung.219 Millisekunden.


FRAGE . Ist es möglich, das Programm in MT4 auf dem Modell ALL TICK zu machen , überprüfen Sie nicht jeden Tick, und nur den ersten Tick einer neuen Minute Kerze, das würde viel weniger Zeit für die Code-Ausführung zu verbringen. Wenn dies möglich ist, welche Funktion oder welches Sprachkonstrukt kann verwendet werden?
Ich danke Ihnen.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

Ich habe meinen Code geändert, damit er mit Ihrem Code übereinstimmt.

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


Zeit, die das Programm zur Ausführung des Codes benötigt.... 6 , 235, d.h. weniger als mit meinem Code (6.375), aber nicht um ein Vielfaches weniger
. Meiner Meinung nach sollte es um ein Vielfaches weniger sein, da das Programm den Tickwert nur einmal bei der Eröffnung jeder Minutenkerze überprüfen muss.

Wer von uns beiden ist falsch....., scheint mir.