MetaTrader 5 herunterladen

Input Variablen

Speicherklasse input bestimmt die Aussenvariable. Modifikator input wird vor dem Datentyp angegeben. Den Wert von Variable mit dem Modifikator input innerhalb mql5-Programm darf man nicht verändern, diese Variable sind nur für Lesen zugaenglich. Den Wert von input-Variablen kann der Benutzer vom Fenster der Programmeigenschaften. Externe Variablen werden vor dem OnInit() Aufruf immer neu initialisiert.

Bespiel:

//--- input parameters
input int            MA_Period=13;
input int            MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMMA;

Input Variablen bestimmen Eingabeparameter des Programms, sie sind vom Fenster der Programmeigenschaften zugaenglich.

Werteinstellung fuer input-Parameter

 

Es ist moeglich, ein anderes Verfahren,  Eingabenparameter im Registerblatt "Inputs" darzustellen. Dafür wird einen Zeilenkommentar verwendet, der sich nach der Beschreibung des Eingabeparameters in der selben Zeile  befinden muss. So, können für Eingabeparameter die für den Benutzer verstaendlichere Namen gegeben werden.

Beispiel:

//--- input parameters
input int            InpMAPeriod=13;         // Smoothing period
input int            InpMAShift=0;           // Line horizontal shift
input ENUM_MA_METHOD InpMAMethod=MODE_SMMA;  // Smoothing method

Vernuenftige Methode der Darstellung der Eingabeparameter

Bemerkung: Felder und Variablen zusammengesetzter Typen können nicht als input-Variablen auftreten.
 

Parameterübergabe beim Aufruf der Benutzerindikatoren aus  mql5-Programmen

Benutzerindikatoren werden mittels der Funktion iCustom()aufgerufen.  Dabei muessen nach dem Namen des Benutzerindikators Parameter folgen in strenger übereinstimmung mit Erklaerung der input-Variablen des vorgegebenen Benutzerindikators. Wenn die Anzahl der angegebener  Parameter kleiner ist als die Anzahl der erklärten input-Variablen im aufgerufenen Benutzerindikator, werden die fehlenden Parameter von Werten ausgefuellt, die bei der Variablenerklärung angegeben wurden.  

Wenn im Benutzerindikator die Funktion OnCalculate erster Art (d.h. der Indikator ist auf einem Datenfeld) verwendet wird, muss als letzter Parameter beim Aufruf solches Benutzerindikators einer der Wete ENUM_APPLIED_PRICE oder handle eines anderen Indikators auftreten. Dabei muessen alle Parameter, die   input-Variablen entsprechen, explizit angegeben werden.

Enumerationen als input-Parameter

Als input-Variablen (Eingabeparameter für mql5-Programme) können nicht nur die von der Sprache MQL5 vorausgesehene eingebettete Enumerationen verwendet werden, sondern auch die vom Benutzer vorbestimmeten Enumerationen. ZB. können wir die Enumeration dayOfWeek erzeugen, die Wochentage beschreibt und input-Variable für Angeben konkretes Wochentages nicht als Ziffer, sondern in der gewoehnlicheren für Benutzer Art verwenden.

Beispiel:

#property script_show_inputs
//--- day of week
enum dayOfWeek 
  {
   S=0,     // Sunday
   M=1,     // Monday
   T=2,     // Tuesday
   W=3,     // Wednesday
   Th=4,    // Thursday
   Fr=5,    // Friday,
   St=6,    // Saturday
  };
//--- input parameters
input dayOfWeek swapday=W;

Damit dee Benutzer beim Scriptstart den noetigen Wert aus Eigenschaftsfenster waehlen kann, verwenden wir Preprozessorbefehl #property script_show_inputs. Dann aktivieren wir Script und können aus der Liste einen der Enumerationswerte dayOfWeek waehlen. Dann aktivieren wir Script EnumInInput und übergehen zum Registerblatt "Parameter"Ein Default-Wert des Parameters swapday ist Mittwoch (W=3), aber wir können einen anderen Wert zuordnen und diesen Wert für Anderung der Programmarbeit verweneden.  

Beispiel der Benutzeraufzaehlung als input-Parameter

Zahl der moeglichen Enumerationswerte ist begrenzt. Darum wird Auswahl des Eingabewertes Auswahlliste verwendet. Als Werte gezeigt in der Liste werden mnemonische Namen der Enumerationsglieder verwendet. Wenn dem mnemonischen Namen Kommentar gegenübergestellt wird, wie es in unserem Beispiel gezeigt ist, wird anstatt des mnemonischen Namens Kommentarinhalt verwendet.

Jeder Wert aus der Enumeration  dayOfWeek hat seinen Wert von 0 bis 6, aber in der Parameterliste werden Kommentare gezeigt angegeben für jeden Wert. Das verleiht zusaetzliche Anpassungsfaehigkeit für Programmschreiben mit vestaendlichen Beschreibungen der Eingabeparameter.

 

Variablen mit dem Modifikator sinput

Variablen mit dem Modifikator input erlauben nicht nur die Werte der externen Parameter bei dem Start der Programme anzugeben, sondern auch eine grosse Rolle bei der Optimierung der Handelsstrategien im Tester spielen. Jede im Expert Advisor erklärte input-Variable, mit Ausnahme des Typs string, kann an der Optimierung teilnehmen.

In einigen Fällen ist es notwendig, einige externe Parameter des Programms von der Erstellung des Bereichs von allen möglichen Durchgängen im Tester auszuschließen. Speziell für solche Fälle gibt es einen Modifikator von Speicher sinput. sInput ist eine Kurzform der Erklärung von statischer globaler Variable: sInput = static input. Es bedeutet die folgende Erklärung im Code des Expert-Advisors

sinput       int layers=6;   // Number of layers

wird gleichbedeutend mit der vollständigen Erklärung sein

static input int layers=6;   // Number of layers

Die mit dem Modifikator sinput erklärte Variable ist ein Eingabeparameter des MQL5-programms, der Wert dieses Parameters kann bei seinem Start geändert werden. Dabei nimmt diese Variable nicht an dem Optimierungsprozess der Eingabeparameter teil, das heißt werden ihre Werte bei der Suche des besten Satzes der Parameter nach dem angegebenen Kriterium nicht durchgesucht.

sinput-Parameter im Strategie-Tester

Die Abbildung zeigt, dass der Expert-Advisor fünf externe Parameter hat. Der Parameter "Anzahl von Ebenen" wird als sinput erklärt und ist gleich 6. Dieser Parameter kann nicht während einer Optimierung der Handelsstrategie geändert werden. Man kann für ihn den notwendigen Wert angeben, der weiter verwendet wird. Felder für Start, Stop und Schritt für diese Variable sind für die Einstellung der Werte nicht verfügbar.

Nachdem wir den Modifikator sinput für Variable angegeben haben, verbieten wir dem Benutzer diesen Parameter zu optimisieren. Es bedeutet, dass der Terminal Benutzer für sie die Anfangs-und Endwerte für automatisches Durchsuchen in einem bestimmten Bereich bei der Optimierung im Strategie-Tester nicht angeben kann.

Aber dabei gibt es eine Ausnahme von dieser Regel — sinput-Variablen kann man in Optimierungsaufgaben mit Hilfe der Funktion ParameterSetRange() variieren. Diese Funktion wurde für die Programmsteuerung des Raums der verfügbaren Werte für jede input-Variable speziell erstellt, einschließlich jener, die für static input (sinput) erklärt sind. Eine weitere Funktion ParameterGetRange() erlaubt es Ihnen (im Handler OnTesterInit ()) die Werte der input-Variablen zu erhalten, wenn Optimierung gestartet wird, und falls notwendig, den Schritt der Veränderung und den Bereich neu anzugeben, innerhalb dessen der Wert des optimisierten Parameters durchgesucht wird.

Daher erlaubt die Kombination von sinput Modifikator mit zwei Funktionen für die Arbeit mit input-Parametern die flexiblen Regeln für die Einstellung der Optimierungsintervallen von einigen input-Variablen je nach der Werten der anderen input-Variablen zu schaffen.

Sehen Sie auch

iCustom, Enumerationen, Programmeigenschaften