Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 406
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie schreibe ich eine Funktion mit einer variablen Anzahl von Parametern?
Sie können einige Parameter einer Funktion auf einen Anfangswert setzen (diese Parameter sollten die letzten sein). Wenn die Funktion aufgerufen wird, können diese Parameter je nach Bedarf gesetzt werden oder nicht. Wenn Parameter nicht explizit festgelegt werden, erhalten sie Anfangswerte.
Die zweite Möglichkeit ist die Überlastung. Schreiben Sie einfach eine Funktion mit demselben Namen, nur mit einer anderen Art/Anzahl von Parametern.
Was zum Beispiel?
Ich muss mehrere Parameter an eine Funktion übergeben, aber in verschiedenen Situationen muss ich eine andere, im Voraus bekannte Anzahl übergeben
In C wird dies zum Beispiel wie folgt umgesetztund verarbeiten diese Parameter dann in der Funktion
int func(int a, int b, ...)
Gibt es eine Möglichkeit, eine Schaltfläche "Rückgängig" in die Symbolleiste von MetaEditor einzufügen?
(diejenige, die Strg+Z implementiert)
Ich muss mehrere Parameter an eine Funktion übergeben, aber in verschiedenen Situationen muss ich eine andere, im Voraus bekannte Anzahl übergeben
In C wird dies zum Beispiel wie folgt umgesetztund verarbeiten diese Parameter dann in der Funktion
int func(int a, int b, ...)
Übergeben Sie das Array und die Anzahl der Parameter, die dem Array entnommen werden sollen
Übergeben Sie ein Array und die Anzahl der Parameter, die dem Array entnommen werden sollen
Die Zahlen, die ich weitergeben muss, sind also nicht in der richtigen Reihenfolge, d. h. es kann keine universelle Zahl erzeugt werden.
Nennen Sie mir wenigstens ein nicht-abstraktes Beispiel.
Zum Beispiel:
Abhängig von der Bedingung (NICHT wenn, sondern nur grundsätzlich, ich schreibe diese Zahlen selbst)
a = func(digit, 10, 18, 42); oder a = func(digit, 11, 18, 42, 15, 13); oder a = func(digit, 5);
double func(int num, ????)
{
return("Summe dieser Parameter"/num);
}
so:
Abhängig von der Bedingung (NICHT wenn, sondern nur grundsätzlich, ich schreibe diese Zahlen selbst)
a = func(digit, 10, 18, 42); oder a = func(digit, 11, 18, 42, 15, 13); oder a = func(digit, 5);
double func(int num, ????)
{
return("Summe dieser Parameter"/num);
}
Nun denn, was mir zuerst in den Sinn kam, und wie bereits hier oben vorgeschlagen - übergeben Sie in der Funktion array double, und in der Funktion berechnen Sie die notwendigen Werte aus den Werten des übergebenen Arrays - es ist möglich, sowohl die Menge der Zahlen(Array-Größe) zu kennen, und dementsprechend ihre Beziehungen zu berechnen. Nur die Formel bleibt bei jeder Größe des Feldes gleich. Wenn Sie auch die Formel ändern wollen, reicht das Array allein nicht aus, Sie müssen einen weiteren Parameter erstellen, der auf die richtige Formel für die Berechnung verweist. Sie können z.B. eine Aufzählung übergeben, die den Typ der Formel angibt (ENUM_TYPE_CALCULATED) und basierend auf dem Wert dieser Aufzählung, z.B. CALCULATE_SUMM, einfach die Summe aller Werte des übergebenen Arrays berechnen (in diesem Beispiel).
Die Zahlen, die ich dort übergeben muss, sind also nicht in der richtigen Reihenfolge, d.h. es kann keine universelle Zahl gebildet werden
Hier ist eine ausführliche Antwort, aber keine Antwort...
Forum für Handel, automatisierte Handelssysteme und Strategietests
Alle Fragen von Neulingen zu MQL4, Hilfe und Diskussion über Algorithmen und Codes
Alexey Kozitsyn, 2018.01.05 11:46
Sie können einige Funktionsparameter auf einen Anfangswert setzen (diese Parameter sollten die letzten sein). Wenn Sie die Funktion aufrufen, können Sie diese Parameter je nach Bedarf einstellen oder nicht. Wenn Parameter nicht explizit festgelegt werden, erhalten sie Anfangswerte.
Die zweite Möglichkeit ist die Überlastung. Schreiben Sie einfach eine Funktion mit demselben Namen, nur mit einer anderen Art/Anzahl von Parametern.
Hier ist eine ausführliche Antwort, aber keine Antwort darauf...
Wenn die Menge und die Anzahl der Zahlen nicht im Voraus bekannt sind, gibt es keine Funktion für jede neue Menge.