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

 
gyfto:

Meiner Meinung nach kann Close[] in der Schleife von Bars-1 bis 0 übergeben werden, und Sie können dieses Array in dll sammeln und dort damit arbeiten. Ich habe es noch nicht ausprobiert, aber es ist in Vorbereitung.

Das Array selbst brauchen Sie nicht zu übergeben. Es genügt, einen Zeiger auf die Datei und ihre Größe zu übergeben.

https://docs.mql4.com/ru/array/ArrayCopySeries

https://docs.mql4.com/ru/array/ArrayCopyRates

 

Leute, bitte gebt mir eine einfache Bedingung "wenn aktuellerPreis>Eröffnungskurs des Balkens dann Aktion ausführen". Ich habe noch nicht mit Bars gearbeitet. Und mein Gehirn schafft es nicht bis 4:49

 
oDin48:

Leute, bitte gebt mir eine einfache Bedingung "wenn aktueller Preis>open bar Preis, dann Aktion ausführen". Ich habe noch nicht mit Bars gearbeitet. Und mein Gehirn schafft es nicht bis 4:49



if(Close[0]>Open[0])
    {
  //Ваше действие
    }
 
Hallo zusammen .... wie kann der folgende Ausdruck gekürzt werden: if(a>b && a>c && a>d)
 

Grüße!

Ich weiß nicht, wo ich besser fragen kann, aber ich habe beschlossen, doch kein neues Thema zu erstellen. Ich habe versucht, einen Expert Advisor in CodeBase zu finden, und es scheint genug davon zu geben, aber da ich kein Experte in mql bin, wurde mir klar, dass ich nicht in der Lage sein werde, die Funktionen zuzuweisen, die ich brauche. Können Sie mich beraten, wenn es ein einfaches EA, das hält den Überblick über bereits geöffnete Aufträge (und neu geöffnete) und wenn einer von ihnen schließt (durch Stop, vor allem), eine neue schwebende Bestellung mit Parametern eines geschlossenen (Preis, nehmen, Stop) erstellt wird?

Und noch eine Frage. Wir haben den Indikator i-SignalOfTrade. Da mobile Endgeräte keine akustischen Benachrichtigungen über Ereignisse liefern, kann dieser Indikator sehr nützlich sein. Es verfügt jedoch über einige zusätzliche Funktionen, die nicht deaktiviert werden können, wenn Sie selbst handeln - es benachrichtigt Sie über Ereignisse wie die Erstellung und Änderung von schwebenden Aufträgen usw. D.h. Benachrichtigung über Aktionen, von denen Sie bereits wissen. Ich wäre Ihnen dankbar, wenn Sie mir helfen könnten, sie zu deaktivieren (oder vielleicht gibt es einen anderen ähnlichen Indikator), ich muss nur die Benachrichtigung über ausstehende Orderauslösungen, Take- und Stop-Auslösungen lassen.

 
i999i:
Hallo zusammen, .... wie kann man den folgenden Ausdruck kürzen: if(a>b && a>c && a>d)

Man könnte auch if((b-a)*(c-a)*(d-a)>0) schreiben, aber nicht unbedingt schneller. Das logische UND ist eine binäre Multiplikation, es ist nur eine andere Schreibweise desselben Ausdrucks, der einzige Unterschied ist die Größe der Variablentypen. a>b ist eine boolesche Variable, 4 Bytes, während b-a, wenn sie doppelt sind, die doppelte Differenz ergibt (8 Bytes), und diese Multiplikation ist mindestens 2-mal länger.

Zhunko:

Sie brauchen das Array selbst nicht zu übergeben. Es genügt, einen Zeiger darauf und seine Größe zu übergeben.


Unbezahlbarer Rat.

gyfto:

a>b ist eine boolesche Variable, 4 Bytes

Lassen Sie mich das erklären. Sie können Ihren Ausdruck als if(((a>b)*(a>c)*(a>d)==1) umschreiben, da Ausdrücke in Klammern die Werte 0 oder 1 annehmen (und diese wiederum in define im Precompiler als false und true definiert sind).
 
gyfto:

Sie können if((b-a)*(c-a)*(d-a)>0) schreiben, aber nicht unbedingt schneller. Das logische UND ist eine binäre Multiplikation, es ist nur eine andere Schreibweise desselben Ausdrucks, der einzige Unterschied ist die Größe der Variablentypen. a>b ist eine boolesche Variable, 4 Bytes, und b-a, wenn sie doppelt sind, dann ist die Differenz doppelt so groß (8 Bytes), und diese Multiplikation ist mindestens 2-mal länger.


Unbezahlbarer Rat.


gyfto:

Sie können if((b-a)*(c-a)*(d-a)>0) schreiben, aber es ist nicht sicher, dass es schneller geht. Das logische UND ist eine binäre Multiplikation, es ist nur eine andere Schreibweise desselben Ausdrucks, der einzige Unterschied ist die Größe der Variablentypen. a>b ist eine boolesche Variable, 4 Bytes, und b-a, wenn sie doppelt sind, dann ist die Differenz doppelt so groß (8 Bytes), und diese Multiplikation ist mindestens 2-mal länger.


Unbezahlbarer Rat.

danke für den Tipp .... gibt es noch eine andere Möglichkeit, den kleinsten und größten Wert aus a,b,c zu berechnen?
 
i999i:

Danke für den Tipp .... gibt es noch eine andere Möglichkeit, die kleinsten und größten Werte von a,b,c zu berechnen?


MathMax(MathMax(a,b),c) und umgekehrt MathMin. Wenn vier Werte, dann int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Wenn die Werte eine Wagenladung sind, bilden Sie mit ArrayMaximum ebenfalls ein Array.
 
gyfto:

MathMax(MathMax(a,b),c) und umgekehrt MathMin. Wenn vier Werte, dann int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Wenn Sie ein Array auch über ArrayMaximum bilden müssen.
.

Sie müssen ArrayMaximum verwenden, es gibt Dutzende von Werten ....a ArrayMaximum wird schneller sein als diese - a>b && a>c && a>d
 
i999i:

Danke für den Rat .... gibt es noch eine andere Möglichkeit, die kleinsten und größten Werte von a,b,c zu berechnen?


Sagen Sie mir zunächst, warum Sie es brauchen. Sie müssen den Grund dafür kennen. Ist es nur zum Spaß und aus Interesse, oder steckt ein bestimmter Zweck dahinter?