Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 234
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Si misura la durata e si ottiene il risultato. Mi è successo con TRADE_ACTION_MODIFY.
Da dove, verso dove, cosa e in quali condizioni è stato misurato?
solo OrderSendAsync MODIFY e l'operazione immediatamente successiva è durata 5 secondi.
risultato molto strano, spaventoso e improbabile - dobbiamo ricontrollare i test.
da dove, verso dove, cosa e in quali condizioni è stato misurato?
solo OrderSendAsync MODIFY e all'operazione immediatamente successiva 5 sec ????
risultato molto strano, spaventoso, improbabile - dobbiamo ricontrollare i test
Ho misurato il tempo prima e dopo la funzione, ho calcolato la differenza e ho ottenuto 5 secondi. Nei consiglieri di combattimento si misura tutto, in modo da avere più informazioni per risolvere una situazione anomala. Ho visto questo.
Era necessario creare strutture che potessero ricevere regole di azione diverse al loro interno, ma che potessero essere manipolate tra loro come se fossero identiche.
La tecnica utilizzata è stata formalizzata in questo esempio.
Purtroppo non ho capito perché i linguaggi OOP non hanno interfacce per i metodi statici.
Devo creare questo orrore.
Come lo immaginate?
Ogni funzione ha il suo indirizzo nel segmento .text.
Ogni funzione membro (metodo) accetta implicitamente questo puntatore come primo parametro.
I metodi statici non accettano questo puntatore e sono essenzialmente uno "zucchero" sintattico, essendo, di fatto, funzioni ordinarie.
Quando si chiama una funzione virtuale, l'indirizzo della funzione eseguibile viene preso dalla tabella delle funzioni virtuali, il cui puntatore è implicitamente contenuto nella classe in cui la funzione virtuale è dichiarata. L'inizializzazione del puntatore alla funzione eseguibile avviene al momento della creazione di un'istanza dell'oggetto; la logica è la seguente (la scrivo in mql apposta perché sia chiara a tutti i neofiti:
Naturalmente, nella realtà, non è tutto così, ma il meccanismo di inizializzazione del puntatore alla funzione è esattamente questo. Di conseguenza, non c'è modo, a partire dalla parola "affatto", di farlo nel modo desiderato in un linguaggio compilato.
Il C++ ha questa magia dei template:
Qualsiasi funzione ha il suo indirizzo nel segmento .text.
Ogni funzione membro (metodo) accetta implicitamente questo puntatore come primo parametro.
I metodi statici non accettano questo puntatore e sono essenzialmente uno "zucchero" sintattico, essendo di fatto funzioni ordinarie.
Quando si chiama una funzione virtuale, l'indirizzo della funzione eseguibile viene preso dalla tabella delle funzioni virtuali, il cui puntatore è implicitamente contenuto nella classe in cui la funzione virtuale è dichiarata. L'inizializzazione del puntatore alla funzione eseguibile avviene al momento della creazione di un'istanza dell'oggetto; la logica è la seguente (la scrivo in mql per renderla chiara a tutti i neofiti:
Naturalmente, nella realtà, non è così, ma il meccanismo di inizializzazione del puntatore alla funzione è esattamente questo.
Grazie per la spiegazione dettagliata con un esempio!
Qual è la sua idea in merito?
Se ti riferisci al mio rammarico per le possibilità delle interfacce. Voglio imporre solo restrizioni sintattiche alle classi/strutture. Cioè, solo in fase di compilazione, come avviene con lo stesso modificatore const. Per l'autocontrollo, insomma.
Non c'è modo, dalla parola "affatto", di fare quello che si vuole in un linguaggio compilato.
Sopra ho scritto una stampella. Volevo avere qualcosa di già costruito per questi casi.
Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading
Nuova versione di MetaTrader 5 build 3950: prelievo/riempimento nel terminale e rapporto di trading aggiornato
fxsaber, 2023.09.19 23:25
Come eliminare gli errori?La prima volta __LINE__/__COUNTER__ vengono passati all'interno del markos come testo, la seconda volta come numeri.
Ho trovato due soluzioni per aggirare l'errore.
1. Attraverso la classe base:
2. Attraverso una classe annidata: