Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 93
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
Drucke können nur innerhalb einer Funktion eingefügt werden, aber ich verstehe nicht, wie ich diese Funktion aufrufen kann, damit der Druck oder die Warnung funktioniert. Können Sie mir helfen, indem Sie meinen Code mit drei einfachen Variablen korrigieren? Ich tue alles, wie in dem Artikel beschrieben, aber der Editor funktioniert nicht, oder etwas fehlt, oder etwas nicht verstanden wird, in jedem Fall, die Wand, so dass ich um Hilfe gebeten. Danke für den SKC.
Sie geben d mit einem Alert aus.
Wo wird sie berechnet?
//| TestASD.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int InputA=1;
input int InputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
int m_d=m_a+m_b;
d=m_d;
Print(__FUNCTION__);
return(c(m_a,m_b));
}
public:
int a;
int b;
int d;
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
ASD ar;
void OnStart()
{
//---
ar.a=InputA;
ar.b=InputB;
Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d);
}
//+------------------------------------------------------------------+
Nehmen Sie innerhalb der Klasse Drucke auf Werte vor. Und dann schauen Sie in das Protokoll, was bei der Ausführung des Skripts ausgegeben wird ;)
Und so ist es auch in Ordnung.
Klasse:
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int a_s;
int a_d;
int d;
int g ()
{d=a_s+a_d;
return (g());
}
public:
void fg (int a,int b)
{ a_s=a;
a_d=b;
}
void sf ()
{g ();
Alert (d);}
};
das Drehbuch
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
Und so ist es auch in Ordnung.
Klasse:
Und so auch nichts
//| TestASD.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int InputA=1;
input int InputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
public:
int a;
int b;
int d;
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
d=m_a+m_b;
Print(__FUNCTION__);
return(d);
}
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
ASD ar;
void OnStart()
{
//---
ar.a=InputA;
ar.b=InputB;
Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d,"\nar.c(",ar.a,",",ar.b,")=",ar.c(ar.a,ar.b));
}
//+------------------------------------------------------------------+
Es ist nicht klar - was wollen Sie bekommen?
Das tue ich:
1. Daten aus dem Skript an die Klasse zu übergeben
2. diese Daten in der Klasse summieren
3. Übergabe der Summe von der Klasse an das Skript
4. Drucken Sie aus dem Skript die Summe der Daten auf einem Monitor oder einem Drucker aus.
Alles!
Das tue ich:
1. Übergabe von Daten aus dem Skript an die Klasse
2. diese Daten in der Klasse summieren
3. Übergabe der Summe von der Klasse an das Skript
4 Geben Sie die Summe der Daten über das Skript auf einem Monitor oder Drucker aus.
Alle!
Siehe obiges Beispiel
Aber es berechnet auch nicht die Summe der Variablen a+b=d, während ich die Summe von d brauche!
Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;
Sie haben ihn nirgends aufgerufen und darauf gewartet, dass sich d irgendwie selbst berechnet.
Und was die Funktion c() berechnet, bleibt Ihnen überlassen
Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;
Sie haben ihn nirgends genannt und darauf gewartet, dass sich d irgendwie selbst berechnet.
Und was die Funktion c() zählt, müssen Sie selbst entscheiden!
Ich weiß und benutze, wie man die Funktion im Expert Advisor erstellt und aufruft. Die Frage bezieht sich auf den Unterricht!
Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;
Sie haben es nirgendwo genannt und darauf gewartet, dass d sich irgendwie selbst berechnet.
Und was die Funktion c() berechnet, bleibt Ihnen überlassen
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. Das war's bisher!
Aber auch Ihre Funktion berechnet nichts.