[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 307

 
hoz:

Es ist keine Anprobe, es ist eine Art Selbstanpassung :)

Ein Beschlag ohne feste Markierung ist ein Beschlag.

Bis die wichtigsten Parameter richtig funktionieren, müssen sie durch Nachdenken, Ausprobieren, Testen im Tester, in der Demo und im echten Spiel und so weiter definiert werden, bis einem etwas Neues einfällt, das besser erscheint. Und das alles ohne Anpassung, sondern durch Logik, Theorie und Praxis!

 
Zhunko:
Jede Variable muss zuerst deklariert werden, bevor sie verwendet werden kann, sei es in Parametern, sei es auf der Ebene der globalen Bibliothek.


Und nicht nur das, sie muss auch ausdrücklich initiiert werden.
 
hoz:

Hier ist also eine Funktion aus der Bibliothek:

Vadim, über Funktionen in der Schleife Sie meinen, was der Schalterbetreiber zurückgibt? Aber es ist nicht so, dass ich Werte über die gesamte Anzahl von Schleifenvariablen erhalte. Ich vergleiche nur den Typ der Maske (Eingangsvariable der Funktion) und berechne dann den Wert der Maske. Es stellt sich heraus, dass es keine zusätzlichen Berechnungen gibt. Ich wähle einfach den Typ der Maske aus, und das war's! Ich möchte verstehen, was Sie damit meinen:

Können Sie das erklären?
Dies setzt voraus, was Sie mit dieser Funktion tun werden. Dies ist die Art von Funktion, die normalerweise in der Geschichte vorkommt.
FAQ:

Und nicht nur das, sie muss auch ausdrücklich initiiert werden.
Vorzugsweise für die Reihenfolge, aber in MQL4 werden sie bei der Deklaration standardmäßig mit Nullen initialisiert.
 
Ich habe ein Problem vor kurzem konfrontiert: wie zu wissen, dass der Indikator, die wir in der Expert Advisor durch iCustom() verwendet wurde initialisiert und wir können Daten von ihm nehmen? In anderen Fällen gibt es Situationen, in denen das Diagramm noch keine Zeit hatte, seine Objekte anzuzeigen, und der EA versucht, einige Daten aus seinen Puffern zu übernehmen. Infolgedessen erscheinen manchmal Nullwerte. Natürlich habe ich auf Nicht-Null-Werte geprüft und erst dann den EA weiterarbeiten lassen, aber ... Vielleicht gibt es eine elegantere Lösung?
 

Eine weitere Sache: Ich bin auf ein (für mich) seltsames Verhalten von UninitializeReason() gestoßen. Ich überprüfe den Wert in der Inite, und wenn der Zeitrahmen geändert wurde und es offene Positionen gibt, dann sollte es eine Aufforderung geben, diese zu schließen. Wenn wir den EA zunächst auf M5 laufen lassen und dann zu einem anderen Zeitrahmen wechseln, wird es keine Anfrage geben. Wenn wir zur ursprünglichen TF (M5) zurückkehren, wird es eine Anfrage geben. Ich denke, das ist nicht normal. Ich muss bei jeder Änderung der TF einen Antrag stellen.

Kann das jemand erklären?

 
artmedia70:

Eine weitere Sache: Ich bin auf ein (für mich) seltsames Verhalten von UninitializeReason() gestoßen. Ich überprüfe den Wert in der Inite, und wenn der Zeitrahmen geändert wurde und es offene Positionen gibt, dann sollte es eine Aufforderung geben, diese zu schließen. Wenn wir den EA zunächst auf M5 laufen lassen und dann zu einem anderen Zeitrahmen wechseln, wird es keine Anfrage geben. Wenn wir zur ursprünglichen TF (M5) zurückkehren, wird es eine Anfrage geben. Ich denke, das ist nicht normal. Ich muss bei jeder Änderung der TF einen Antrag stellen.

Kann das jemand erklären?

Damit es funktioniert, ist DeinitReason eine globale Variable

int deinit()
  {
//----
   DeinitReason = UninitializeReason( );
   Print("DeinitReason ",DeinitReason);
//----
   return(0);
  }
 
Mislaid:

Damit es funktioniert, ist DeinitReason eine globale Variable

Ganz genau. Die globale Variable Reason erhält einen Wert, aber nicht in deinit(), sondern in init(), so dass Sie bei der Ausführung von init() den Grund für die letzte Deinitialisierung sehen und auf der Grundlage des Wertes die eine oder andere Aktion ausführen können. Aber es funktioniert nicht so, wie es sollte.
 

Guten Tag.eine neue Frage ist aufgetaucht.Hilfe bitte.Für den Kenner gibt es eine Minute, aber für Anfänger ist schwierig.gegoogelt nichts hilft, aber vielleicht hat jemand konfrontiert.

Die Zeitschrift sagt

(2013.04.23 10:06:30 2013.04.01 00:00 xrust EURUSD,M1: 2 Parameter für SetIndexBuffer Funktion muss Array sein).

https://forum.mql4.com/ru/55137#786974

 
palomnik:

Guten Tag.eine neue Frage ist aufgetaucht.Hilfe bitte.Für die Wissenden gibt es eine Minute, aber für Anfänger ist schwierig.gegoogelt nichts hilft, aber vielleicht hat jemand konfrontiert.

Die Zeitschrift sagt

(2013.04.23 10:06:30 2013.04.01 00:00 xrust EURUSD,M1: 2 Parameter für SetIndexBuffer Funktion muss Array sein).

https://forum.mql4.com/ru/55137#786974


Er besagt, dass der zweite Parameter in der SetIndexBuffer-Funktion ein Array sein muss. Das heißt, nicht double znach1, sondern double znach1[]
 
Wie kann ich das neu bearbeitete Skript ausführen, ohne mt4 neu zu starten?