Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 225

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
Cosa significa? Può spiegarlo meglio?
Ho avuto il tempo di controllare: sì, il trucco è fallito, ChartID()=12345 per visuale e non visuale... (tale ChartID costante del tester).
Ma ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS) dà un onesto -1 se non c'è uno schermo. È possibile utilizzarlo per determinare la fisica, ovvero se c'è un posto per l'output di qualcosa o meno. Poiché ci sono molti flag, e non sappiamo affatto cosa ci sia su VPS
Un'altra sfumatura improvvisa di MQL: i metodi virtuali non vengono chiamati dai costruttori.
nel codice
non si può fare così :-)) OnAttach della classe genitore sarà chiamato dal costruttore; e durante il normale accesso - della classe figlio.
Non sipuò capire, bisogna memorizzarlo:-)
Un'altra sfumatura improvvisa di MQL: i metodi virtuali non vengono richiamati dai costruttori.
nel codice
non si può fare così :-)) OnAttach della classe genitore sarà chiamato dal costruttore; e durante il normale accesso - della classe figlio.
non si può capire, bisogna memorizzarlo:-)
Perché è impossibile da capire? L'inizializzazione di un puntatore a un metodo nella tabella dei metodi virtuali avviene nel costruttore. Il costruttore della classe madre viene chiamato per primo, poi il costruttore del successore. Di conseguenza, quando viene eseguito il corpo del costruttore della classe padre, nella tabella dei metodi virtuali il puntatore punta all'indirizzo del metodo della classe base.
PS. Questo è per l'eterno cholivar sull'opportunità di imparare il C++. Se lo si studia, scavando fino all'essenza delle cose e non facendo il pieno, queste cose diventano evidenti).
Perché è impossibile da capire? L'inizializzazione di un puntatore a un metodo nella tabella dei metodi virtuali avviene nel costruttore. Il costruttore della classe genitore viene chiamato per primo, quindi il costruttore del successore. Di conseguenza, quando viene eseguito il corpo del costruttore della classe genitore, il puntatore punta all'indirizzo del metodo della classe base nella tabella dei metodi virtuali.
PS. Questo è per l'eterno cholivar sull'opportunità di imparare il C++. Se lo si studia, scavando fino all'essenza delle cose e non facendo il pieno, queste cose diventano evidenti).
Dopo gli script, dove tutto è possibile, è un po' sorprendente che "un costruttore non può essere virtuale" :-))
dopo gli script, dove tutto è possibile, è un po' sorprendente che "un costruttore non può essere virtuale" :-)
Per il vostro "problema", c'è una soluzione: https: //habr.com/ru/post/64369/.
PS. Non esattamente la stessa cosa, naturalmente, ma come direzione generale di pensiero
dopo gli script, dove tutto è possibile, è un po' sorprendente che "un costruttore non può essere virtuale" :-)
inaspettato?
Immaginate se venisse chiamato HiLow::OnAttach. Se ci fossero nuovi campi in HiLow e OnAttach li leggesse, ci sarebbe un "utilizzo di variabili non inizializzate" (perché il costruttore di HiLow non ha ancora iniziato l'esecuzione).
POSITION_TIME_UPDATE è rilevante solo nella modifica del lotto di una posizione. Ad esempio, la chiusura parziale di una posizione su qualsiasi tipo di conto o un refill su netting.
Le modifiche dei livelli SL/TP non influiscono su POSITION_TIME_UPDATE.
Per parafrasare, POSITION_TIME_UPDATE è influenzato solo dalle modifiche che si riflettono nella Trading History - trades. I livelli SL/TP non fanno parte di tali modifiche, quindi non le influenzano.
Sì, in effetti è così su un conto reale.
Ma dopo aver creato l'Expert Advisor, l'ho provato nel tester e ho scoperto che nel tester le modifiche dei livelli SL/TP influenzano POSITION_TIME_UPDATE.
Ecco un estratto dei log.
Qui ho evidenziato in giallo il momento dell'apertura della posizione e poi (al tick successivo) in rosso il momento della modifica (posizionamento) di SL e TP. Poi controllo i tempi POSITION_TIME e POSITION_TIME_UPDATE usando la stampa -sono diversi.
Se la modifica di SL e TP avviene nello stesso secondo, i tempi POSITION_TIME e POSITION_TIME_UPDATE sono ovviamente gli stessi.
Grazie per le informazioni!
Il campo ORDER_TIME_SETUP_MSC cambia quando gli ordini vengono eseguiti parzialmente.
Di conseguenza, DEAL_TIME_MSC può essere inferiore a ORDER_TIME_SETUP_MSC dell'ordine.
Esempio.