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

 
hoz:


Dies ist die einfachste Variante. Aber ich beobachte Artikel, die von einem Programmierer geschrieben wurden, und in seiner Startfunktion ist überhaupt nichts deklariert.

Sie können eine statische Variable außerhalb der Funktionen deklarieren und müssen dann überhaupt nichts mehr über Referenzen übergeben.

hoz:

Wenn wir eine Variable per Referenz an eine Funktion übergeben, arbeiten wir mit einem Puffer der Ausgangsvariablen selbst, den wir anstelle ihres separaten Duplikats übergeben. Das bedeutet, dass es keine Rolle spielt, in welcher Funktion wir sie zuvor deklariert haben. Nicht wahr?

Du denkst nicht richtig. Wenn Sie eine Variable als Argument an eine Funktion übergeben, müssen Sie sie nicht im Funktionskörper deklarieren - sie ist bereits im Argument deklariert. Sie müssen die Funktion deklarieren, von der aus sie übergeben wird.
 
hoz:


Dies ist der einfachste Weg. Aber ich sehe mir gerade die Artikel eines Programmierers an, und in seiner Startfunktion ist überhaupt nichts deklariert.

Hier ist ein Link zu seinem Berater:

http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4

Mich interessiert vor allem, wie er intelligenten Code schreibt. Deshalb möchte ich lernen, wie man alles in separate Funktionen schreibt und nur das Wesentliche hinzufügt, ohne dort Variablen zu deklarieren.

Wenn wir eine Variable per Verweis an eine Funktion übergeben, arbeiten wir mit einem Puffer der ursprünglichen Variable, nicht mit ihrem separaten Double. Das bedeutet, dass es keine Rolle spielt, in welcher Funktion wir sie zuvor deklariert haben. Nicht wahr?


Außerdem schrieb er auf intelligente Weise

lesen

Ja, ändern Sie die Zeile

if(!Trade(signal, priceForBuy, priceForSell))

zu

if(!GetPriceToInput (signal))                                                                                                         
 
Roman.:

Wann bekommst du dein persönliches Wohnmobil, Diman?)

Sie haben in einem Jahr in der realen Welt kein Geld verdient, oder? Sie haben dort eine Menge START-Beträge zugewiesen bekommen, nicht wahr?)



Bald.
 
Reshetov:

Sie können eine statische Variable außerhalb von Funktionen deklarieren und müssen dann nichts mehr per Referenz übergeben.

Sie denken falsch. Wenn Sie eine Variable als Argument an eine Funktion übergeben, muss sie nicht im Funktionskörper deklariert werden - sie ist bereits im Argument deklariert. Die Funktion muss dort deklariert werden, von wo sie übergeben wird.


Ich meine, es ist egal, ob wir sie von der Startfunktion oder von einer anderen Funktion übergeben.

In diesem Fall habe ich die Variablen in der Funktiondouble GetPriceToInput(int signal) deklariert und die VariablenpriceForSell undpriceForBuy, die in derselben Funktion double GetPriceToInput(int signal) deklariert wurden, per Referenz an die Funktionbool Trade(int signal, double& priceForBuy, double& priceForSell) übergeben.

Ich habe diese Funktion zurStartfunktion hinzugefügt und sehe, dass sie dort bereits undefiniert sind. Ich möchte wissen, wie man das beheben kann.

Natürlich kann ich diese 2 Variablen gleichzeitig in start deklarieren, wie Sie gerade gesagt haben, aber ich kann sie direkt von der Funktiondouble GetPriceToInput(int signal) übergeben. Das ist es, was ich meine.

 
hoz:


Ich meine, es ist egal, ob wir sie von der Startfunktion oder von einer anderen Funktion übergeben.

In diesem Fall habe ich Variablen in der Funktiondouble GetPriceToInput(int signal) deklariert und die VariablenpriceForSell undpriceForBuy, die in derselben Funktion double GetPriceToInput(int signal) deklariert wurden, per Referenz an die Funktionbool Trade(int signal, double& priceForBuy, double& priceForSell) übergeben.

Ich habe diese Funktion zurStartfunktion hinzugefügt und sehe, dass sie dort bereits undefiniert sind. Ich möchte verstehen, wie man das Problem lösen kann.

Wo haben Sie sie übergeben und warum weisen Sie Werte zu, wo Sie sie nicht übergeben haben?

 
Reshetov:

Wo haben Sie sie übergeben und wo weisen Sie ihnen Werte zu?


Nun, ich habe die Werte der Variablen in der Funktiondouble GetPriceToInput(int signal)

Hier:

double priceForSell = secondBarClosed - deltaForSell;
double priceForBuy = secondBarClosed + deltaForBuy;

Ich gebe diese Werte zurück:

return(priceForSell);
return(priceForBuy);

D.h. die Werte sind bereits von der Funktion zurückgegeben worden.

Dann sende ich diese Werte per Referenz an die Funktion bool Trade(int signal, double& priceForBuy, double& priceForSell):

Das ist ganz offensichtlich!

 
hoz:

D.h. die Werte sind bereits von der Funktion zurückgegeben worden.

Wo wurden sie zurückgegeben, d.h. wo im Code hat die Funktion die Werte dieser Variablen zurückgegeben? Und wie kann eine Funktion mehr als einen Wert zurückgeben, wenn sie nicht per Referenz übergeben wurde?
 
hoz:


Nun, ich habe die Werte der Variablen in der Funktiondouble GetPriceToInput(int signal)

Hier:

Ich gebe diese Werte zurück:

D.h. es wurden bereits Werte von der Funktion zurückgegeben.

Diese Werte sende ich dann per Referenz an die Funktion bool Trade(int signal, double& priceForBuy, double& priceForSell):

Hier ist alles klar!


Lesen Sie einfach ein Lehrbuch. Lesen Sie insbesondere den Abschnitt über den Geltungsbereich von Variablen. Und beginnen Sie mit einfachen Beispielen.

SZS Es sieht so aus, als müssten Sie mit den Grundlagen der Programmierung beginnen.

 

Reshetov
:

Wo ist sie zurückgekehrt, d. h. zeigen Sie genau, wo im Code diese Variablenwerte von der Funktion zurückgegeben werden? Und wie kann eine Funktion mehr als einen Wert zurückgeben, wenn sie nicht per Referenz übergeben wurde?

Ehrlich gesagt, bin ich schon völlig verwirrt. Ich habe nicht einmal Beispiele, um zu sehen, wie andere es machen.

Ich verstehe, dass Sie die Werte nicht nur erhalten, sondern sie auch anderen Variablen zuweisen müssen?

VladislavVG:


Lesen Sie einfach das Lehrbuch. Lesen Sie insbesondere den Abschnitt über den Geltungsbereich von Variablen. Beginnen Sie mit einigen einfachen Beispielen.

Sieht so aus, als müssten Sie mit den Grundlagen der Programmierung beginnen.


Ich brauche die Grundlagen nicht. Ich bin mir der variablen Sichtbarkeit durchaus bewusst. Im Lehrbuch steht nichts über die Übergabe von Variablenwerten per Referenz. Warum schickst du mich dorthin? Machen Sie sich über mich lustig?

 

hoz:

Ich brauche die Grundlagen nicht. Ich bin mir der variablen Sichtverhältnisse durchaus bewusst. Im Lehrbuch steht nichts über die Übergabe von Variablenwerten per Referenz. Warum schickst du mich dorthin? Wollen Sie mich auf den Arm nehmen?

Dann auf Wiedersehen. Es ist sinnlos, einen Wissenschaftler zu belehren. Machen wir uns also nicht über Sie lustig, wenn Sie schon alles aufgegessen haben.