Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 113
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Non vedo perché la mia soluzione sia peggiore, la metterò anche qui:
Perché in origine era una performance "vedi come faccio io" e richiedeva esattamente la soluzione che era stata pensata in precedenza. E il tuo non si adattava alla produzione.
Ma anche il direttore non ha tenuto conto che secondo la documentazione l'ordine di calcolo dei parametri non è garantito
Ma anche il direttore non ha tenuto conto che secondo la Documentazione, l'ordine di calcolo dei parametri non è garantito.
Per essere onesti, la documentazione MQL lo descrive:
Nota
Dovete ricordare che i parametri vengono passati alla funzione al contrario, cioè, il parametro più recente viene calcolato e passato per primo, poi il penultimo, e così via. Il parametro che viene prima dopo la parentesi di apertura è calcolato e trasmesso per ultimo.
Questo è certamente folle dal punto di vista del C++, ma se è una regola documentata in MQL, potrebbe essere ok, se non avete intenzione di portare il vostro codice in futuro. E se lo fate, potete assicurare questo posto controllando #ifdef __MQL__.
L'ordine in cui i parametri sono calcolati non è garantito
Ho appena prestato attenzione al tuo link. Infatti, non è garantito. Che MQL contraddittorio ))
Solo ora ho prestato attenzione al tuo link. Infatti, non è garantito lì. Questo è il controverso MQL ))
Su x32 invertire (penso che salverà), perché c'è un collegamento diretto allo stack. Mentre su x64 non ha senso il contrario ed è per questo che non ci sono garanzie per il futuro... inoltre sembra innaturale lì
Non mi sorprenderà nemmeno se l'ordine è diverso con e senza ottimizzazione
Per tutte le opzioni offerte, vorrei dire grazie. Hai aiutato costruttivamente a risolvere un problema pratico.
Il compito era ben dimostrato che non avrebbe funzionato se void TimeCurrent() fallirebbe. Il vuoto nella sua forma attuale è in grado di paralizzare molte cose.
Voglio chiamare il metodo padre
Ecco il codice, cosa sto sbagliando?
//+------------------------------------------------------------------+
class A
{
public:
virtual int Test_A()
{
return 100;
}
};
//+------------------------------------------------------------------+
class B :public A
{
public:
virtual int Test_A()
{
return 200;
}
};
B b;
//+------------------------------------------------------------------+
void OnStart()
{
Comment (A::b.Test_A());
}
//+------------------------------------------------------------------+
Voglio chiamare un metodo padre
la sintassi corretta è così:
ma in mql non c'è né giusto né sbagliato.
Ma la domanda è più per voi - se una funzione deve essere chiamata da una derivata, perché metterla in una funzione virtuale di base?
fxsaber:
Il compito ha mostrato bene che se il void TimeCurrent() è stato chiamato, niente funzionerebbe. Il vuoto nella sua forma attuale è in grado di mutilare molte cose.
A colpo d'occhio:
Due macro non sembrano fare molto male. Qualcosa di più elegante, per la potenza di μl, non mi viene in mente.
Così su due piedi:
Perché fare...while? Le parentesi graffe da sole sono sufficienti.
Per farlo funzionare: