[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 512

 
hoz:


Questo è il modo più semplice. Ma sto guardando gli articoli di un programmatore e nella sua funzione di avvio non viene dichiarato proprio nulla.

Ecco un link al suo consulente:

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

In particolare, sono molto interessato a come scrive il codice in modo intelligente. Quindi, voglio imparare a scrivere tutto in funzioni separate, e aggiungere solo l'essenziale periniziare senza dichiarare variabili lì.

Se passiamo una variabile per riferimento in una funzione, stiamo lavorando con un buffer della variabile originale, non con il suo doppio separato. Questo significa che non importa in quale funzione l'abbiamo dichiarato in precedenza. Non è vero?


Ha anche scritto con intelligenza

leggere

Sì, cambiare la linea

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

a

if(!GetPriceToInput (signal))                                                                                                         
 
Roman.:

Quando avrai il tuo camper personale, Diman?)

Non hai fatto soldi in un anno nel mondo reale, vero? Hai un sacco di importi START assegnati lì, vero?)



Presto.
 
Reshetov:

Potete dichiarare una variabile statica al di fuori delle funzioni e poi non dovrete passare nulla per riferimento.

State pensando in modo sbagliato. Se passate una variabile come argomento a una funzione, non deve essere dichiarata nel corpo della funzione - è già dichiarata nell'argomento. La funzione deve essere dichiarata da dove viene passata.


Cioè, non importa se lo passiamo dalla funzione di inizio o da qualche altra funzione.

In questo caso, ho dichiarato le variabili nella funzionedouble GetPriceToInput(int signal) e ho passato le variabilipriceForSell epriceForBuy dichiarate nella stessa funzione double GetPriceToInput(int signal) per riferimento nella funzionebool Trade(int signal, double& priceForBuy, double& priceForSell).

Ho aggiunto questa funzione alla funzione diavvio e vedo che lì sono già indefiniti. Voglio sapere come risolvere il problema.

Naturalmente, posso dichiarare queste 2 variabili in una volta sola in start, come hai detto tu, ma posso passarle direttamente dalla funzionedouble GetPriceToInput(int signal). Questo è quello che voglio dire.

 
hoz:


Cioè, non importa se li stiamo passando dalla funzione di avvio o da qualche altra funzione.

In questo caso, ho dichiarato delle variabili nella funzionedouble GetPriceToInput(int signal) e ho passato le variabilipriceForSell epriceForBuy dichiarate nella stessa funzione double GetPriceToInput(int signal) per riferimento nella funzionebool Trade(int signal, double& priceForBuy, double& priceForSell).

Ho aggiunto questa funzione alla funzione diavvio e vedo che lì sono già indefiniti. Voglio capire come risolvere il problema.

Dove li avete passati e perché state assegnando dei valori dove non li avete passati?

 
Reshetov:

Dove li avete passati e dove gli avete assegnato dei valori?


Bene, ho ottenuto i valori delle variabili nella funzionedouble GetPriceToInput(int signal)

Qui:

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

Restituisco questi valori:

return(priceForSell);
return(priceForBuy);

Cioè i valori sono già stati restituiti dalla funzione.

Poi invio questi valori per riferimento alla funzione bool Trade(int signal, double& priceForBuy, double& priceForSell):

Questo è abbastanza ovvio!

 
hoz:

Cioè i valori sono già stati restituiti dalla funzione.

Dove li ha restituiti, cioè dove nel codice la funzione ha restituito i valori di queste variabili? E come può una funzione restituire più di un valore se non è stata passata per riferimento?
 
hoz:


Bene, ho ottenuto i valori delle variabili nella funzionedouble GetPriceToInput(int signal)

Qui:

Restituisco questi valori:

Cioè i valori sono già stati restituiti dalla funzione.

Poi invio questi valori per riferimento alla funzione bool Trade(int signal, double& priceForBuy, double& priceForSell):

Qui tutto è chiaro!


Basta leggere un libro di testo. In particolare, leggete la sezione sullo scopo delle variabili. E iniziare con esempi semplici.

SZS Sembra che tu debba iniziare con le basi della programmazione.

 

Reshetov
:

Dove ha restituito, cioè mostra esattamente dove nel codice questi valori variabili sono restituiti dalla funzione? E come può una funzione restituire più di un valore se non le sono stati passati per riferimento?

Onestamente, sono già completamente confuso. Non ho nemmeno esempi per vedere come lo fanno gli altri.

Ho capito che, oltre a ottenere i valori, bisogna assegnarli a qualche altra variabile?

VladislavVG:


Basta leggere il libro di testo. Leggete soprattutto la sezione sullo scopo delle variabili. E iniziare con alcuni semplici esempi.

Sembra che tu debba iniziare con le basi della programmazione.


Non ho bisogno delle basi. Sono ben consapevole della visibilità variabile. Non c'è niente nel libro di testo sul passaggio di valori variabili per riferimento. Perché mi mandate lì? Mi stai prendendo in giro?

 

hoz:

Non ho bisogno delle basi. Sono ben consapevole della visibilità variabile. Non c'è niente nel libro di testo sul passaggio di valori di variabili per riferimento. Perché mi mandate lì? Mi stai prendendo in giro?

Arrivederci, allora. È inutile insegnare a uno scienziato. Quindi non prendiamoci in giro se state già mangiando tutto.
 
Reshetov:
Allora addio. È inutile insegnare a uno scienziato. Quindi non prendiamoci in giro se sei già tutto preso.

Perché mandarti via subito? Non c'è niente nel libro di testo sui trasferimenti di parametri al link. Perché dovrei leggere la stessa cosa 100 volte? Ho fatto una domanda specifica. Ho letto il libro di testo un sacco di volte. E l'ho sfogliato oggi, non c'è niente nel trasferimento di parametri per riferimento!