Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 507

 
lil_lil:

Indicatore MTF, ho messo H1 nelle impostazioni esterne, lo collego al grafico M15. Il segnale lampeggia sulla barra 4. Quando la barra H1 è chiusa, il segnale non lampeggia, su M15 il segnale smette di lampeggiare sulla barra 4. Se lo metto su М1, rispettivamente, smette di lampeggiare sulla barra 60. Quindi i+N dovrebbe essere calcolato in modo che N vari a seconda del periodo selezionato nelle impostazioni e sul grafico del periodo, in cui l'indicatore è collegato.

Hai tutto il codice?

 

Buon pomeriggio. Non riesco a capirlo, apologeti dell'OOP, per favore aiutatemi.

Quindi, c'è una classe, per esempio CCandle. In questa classe, ci saranno gli stessi parametri per tutti gli oggetti di questa classe. Questi parametri possono anche essere inizializzati in OnInit() e saranno gli stessi per tutti gli oggetti di questa classe. Quindi, come posso farlo correttamente, in modo che non vengano inizializzati ogni volta quando si crea un nuovo oggetto. Supponiamo che siano tutti nella funzione CCandle::Init(). Non riesco a capirlo.

 
Juer:

Buon pomeriggio. Non riesco a capirlo, apologeti dell'OOP, per favore aiutatemi.

C'è una classe, per esempio CCandle. In questa classe, ci saranno gli stessi parametri per tutti gli oggetti di questa classe. Questi parametri possono anche essere inizializzati in OnInit(), e saranno gli stessi per tutti gli oggetti di questa classe. Quindi, come posso farlo correttamente, in modo che non vengano inizializzati ogni volta quando si crea un nuovo oggetto. Supponiamo che siano tutti nella funzione CCandle::Init(). Non riesco a capirlo.

Questo viene fatto nella lista di inizializzazione, che si trova nel costruttore della classe:

class CCandle
{
   int      m_nA;
   double   m_fB;
   datetime m_dtC;


   void CCandle::CCandle(void);
};

CCandle::CCandle(void)
            : m_nA(0)
            , m_fB(0.0)
            , m_dtC(0)
{
}
 
Juer:

Buon pomeriggio. Non riesco a capirlo, apologeti dell'OOP, per favore aiutatemi.

Quindi, c'è una classe, per esempio CCandle. In questa classe, ci saranno gli stessi parametri per tutti gli oggetti di questa classe. Questi parametri possono anche essere inizializzati in OnInit() e saranno gli stessi per tutti gli oggetti di questa classe. Quindi, come posso farlo correttamente, in modo che non vengano inizializzati ogni volta quando si crea un nuovo oggetto. Supponiamo che siano tutti nella funzione CCandle::Init(). Non riesco a capirlo.

Creare un costruttore parametrico in una classe e passargli i parametri necessari per inizializzare l'oggetto
 
Non ho capito niente. L'inizializzazione di un oggetto non è un problema. Come posso inizializzare una volta per tutti gli oggetti di una data classe? Cioè, viene creato un nuovo oggetto e i parametri sono già inizializzati con valori, senza doverli inizializzare ogni volta per ogni nuovo oggetto.
 
Colleghi, per favore consigliate se è corretto usare l'operatore di ritorno dal corpo del ciclo? Per esempio, abbiamo una funzione con un ciclo. Ad un certo momento abbiamo bisogno di restituire qualche valore e quindi uscire dalla funzione. Il modo corretto è usare break e poi return(value). Ma possiamo usare return(value) subito?
 
Juer:
Non ho capito niente. L'inizializzazione di un oggetto non è un problema. Come posso inizializzare una volta per tutti gli oggetti di una data classe? Cioè, viene creato un nuovo oggetto e i parametri sono già inizializzati con valori, senza doverli inizializzare ogni volta per ogni nuovo oggetto.
I parametri possono essere inizializzati a partire da quello che esiste.
 
lsv107:
Colleghi, per favore consigliate se è corretto usare l'operatore di ritorno dal corpo del ciclo? Per esempio, abbiamo una funzione con un ciclo. Ad un certo momento abbiamo bisogno di restituire qualche valore e quindi uscire dalla funzione. Il modo corretto è usare break e poi return(value). Ma possiamo semplicemente restituire (valore) in una volta sola?
Niente vi impedisce di uscire dal ciclo.
 
Artyom Trishkin:
I parametri possono essere inizializzati da qualcosa che esiste.

È una domanda semplice, vero? Il punto è inizializzare la stessa cosa.

 
Artyom Trishkin:
Non c'è nulla che vi impedisca di uscire dal circuito.

Avevo solo paura che il ciclo rimanesse attivo all'interno della funzione e che l'operatore di ritorno trasferisse solo il controllo dal ciclo attivo al punto di chiamata, ci sarebbe un rischio di overflow dello stack se la funzione fosse chiamata di nuovo (ricorsione). Questo era esattamente il caso in Pascal e, secondo le regole della programmazione strutturale in generale, i cicli dovrebbero essere terminati uno dopo l'altro e poi si esce dalla funzione. Se il ritorno, insieme a una funzione, termina il ciclo, ottimo, ma avrei dovuto chiarirlo, visto che sono tornato a programmare dopo una lunga pausa.