Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 94
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
Es geht um den Aufruf einer Funktion innerhalb einer Klasse: wie private: public:, wie man Daten an die Klasse übergibt und wie man ein Ergebnis von der Klasse erhält. Das war's bisher!
Innerhalb der Klasse muss das Ergebnis irgendwie berechnet werden. Und wie soll die Klasse ohne Ihre Beteiligung verstehen, dass sie das Ergebnis jetzt zurückgeben muss, aber nicht zu einem anderen Zeitpunkt?
Sie benötigen also eine Methode innerhalb der Klasse, die von außen aufgerufen werden kann. Sie muss also öffentlich sein.
Natürlich können Sie auch eine private Methode erstellen, die alle Daten innerhalb der Klasse liest und in die Klassenvariable schreibt, und die öffentliche Methode ruft die private Methode auf. Aber irgendeine Methode muss trotzdem aufgerufen werden. Und was dort in der privaten Methode gezählt wird, wie komplex die Berechnungen sein werden und welche Variablen in die Berechnungen einfließen werden - alles nach Ihrem Ermessen und auf Ihre eigene Verantwortung.
Das ist der Punkt, wie man eine Funktion innerhalb einer Klasse aufruft, nämlich wie private: public:, wie man Daten an eine Klasse übergibt und wie man das Ergebnis von der Klasse erhält. So weit, so gut!
#property strict
#property script_show_inputs
//--- input parameters
input int inputA=1;
input int inputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
public:
int Add(int a,int b)
{
Print(__FUNCTION__,": Результат сложения: a",a," + b",b," = ",a+b);
return(a+b);
}
} ar;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
ar.Add( inputA, inputB );
}
//+------------------------------------------------------------------+
Ich denke, es sollte funktionieren, ich habe es nicht überprüft, um zu sehen, ob es richtig ist)
Hier, danke, ich fange schon an, mich zu bewegen -
das Drehbuch:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
Klasse:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Alert liefert ein Ergebnis von 8, aber es ist eine Meldung der Klasse, und ich brauche jetzt eine Meldung des Skripts
Bitte sehr, danke, ich fange schon an, mich zu bewegen -
das Drehbuch:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
Klasse:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Alert liefert ein Ergebnis von 8, aber es ist eine Meldung der Klasse, und jetzt brauche ich eine Meldung des Skripts
Ok, Sie deklarieren die Methode Alert() in der Klasse und nennen sie ar.Alert(), obwohl die Methode sf() jetzt dasselbe tut. Ich bin mir nicht ganz sicher, was Sie sehen wollen, nachdem Sie einen Wert in das Feld d geschrieben haben?
Sieht so aus, als sollte es funktionieren, habe es aber noch nicht überprüft)
Alle! Ich danke Ihnen vielmals! Ich hab's.
Drehbuch:
ASD ar;
void OnStart()
{
ar.fg (3,5);
Alert ( ar.sf ());
}
Klasse:
{
private:
int d;
int g (int a_s,int a_d) {return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
int sf () {return (d);}
};
Ich werde darauf herumkauen!
Ich kann mich nicht erinnern, wer mir in diesem Thread geschrieben hat, dass der Tester kaputt ist, aber ich kann antworten, dass er genauso gut kaputt sein könnte. Sie verschlingt entweder verschiedene Zeitabschnitte oder beginnt die Zählung ab einem beliebigen Abschnitt (obwohl alle Anführungszeichen vorhanden sind).
Ich denke, wer es sehen muss, wird es verstehen.
importiert werden kann?
(gibt eine Zahl zurück, die auf ein Vielfaches eines gegebenen Wertes aufgerundet ist)
oder wie man rundet, z. B. 2285,13 als Vielfaches von (0,25) 2285,00 __ 2285,25 ___ 2285,50 ___ 2285,75
Wie kann ich die Hebelwirkung eines Paares und nicht eines Kontos ermitteln?
Die Höhe der bereitgestellten Hebelwirkung: