Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 73
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
Artem, ti sbagli. L'array dichiarato a livello globale è visibile in tutte le parti del programma e non è necessario passarlo da qualche parte. Basta riempirlo in un posto del programma, e ordinarlo in un altro, e leggerlo nel terzo, non importa.
La stessa funzione può ordinare e/o cercare con successo i dati in diverse matrici. Giusto? E se è così, è meglio passare l'array per riferimento - per il futuro. E quando si chiama la funzione, non farà male vedere con quale array funzionerà.
Sto solo facendo queste considerazioni. Dove mi sbaglio?
La stessa funzione può ordinare e/o cercare con successo i dati in diverse matrici. Giusto? E se è così, è meglio passare l'array per riferimento - per il futuro. E quando chiamate la funzione, dovreste anche essere in grado di vedere l'array con cui lavorerà.
Ho ragione solo su questo. Dove è sbagliato?
Capito. Il tuo consiglio è per i programmatori di lego. Non si fa questa perversione da soli.
Questo lascia una cosa sbagliata, nel senso che l'array deve essere dichiarato globalmente.
Sono contento che ci capiamo.
Capito. Il tuo consiglio è per i programmatori di lego. Tu stesso non fai queste perversioni.
Allora rimane una cosa, sbagliata sul fatto che l'array deve essere dichiarato globalmente.
Sono contento che ci capiamo.
Il mio punto in questo contesto è questo:
Per questo motivo, sarebbe meglio avere degli array globali - per gli ordini e le posizioni chiuse e aperte. Una volta su un nuovo tick, passiamo la quantità necessaria di ordini/posizioni una volta, riempiendo i due array con essi. E poi riceviamo da loro tutti i dati necessari nello stesso tick. Si noti che non solo l'ultimo ordine/posizione chiuso/aperto e tutti i suoi dati sono calcolati, ma anche tutti i tick genitori e figli di tutte le posizioni sono cercati in caso di chiusura parziale. Di conseguenza, in qualsiasi momento posso vedere da quale biglietto proviene questa o quella posizione, se è stata parzialmente chiusa più di una volta - tutto questo funziona già in una classe che gira in un timer. Ho molti altri dati di cui ho bisogno con un piccolo numero totale di cicli. La profondità di storia richiesta per gli array è impostata per il tester.
E così via...
In questo contesto, il mio punto è questo:
Per questo motivo, sarebbe meglio avere degli array globali - per gli ordini e le posizioni chiuse e aperte. Una volta su un nuovo tick, passiamo la quantità necessaria di ordini/posizioni una volta, riempiendo due array con essi. E poi otteniamo tutti i dati necessari da loro nello stesso tick. Si noti che non solo l'ultimo ordine/posizione chiuso/aperto e tutti i suoi dati sono calcolati, ma anche tutti i tick genitori e figli di tutte le posizioni sono cercati in caso di chiusura parziale. Di conseguenza, in qualsiasi momento posso vedere quale biglietto ha avuto origine da una o un'altra posizione, se è stato chiuso parzialmente più di una volta - tutto questo funziona già in una classe che gira in un timer. Ho molti altri dati di cui ho bisogno con un piccolo numero totale di cicli. Per il tester, la profondità di storia desiderata è impostata per gli array.
E così via...
Quindi non ci capiamo bene.
Se l'array è globale, perché passarlo in una funzione per riferimento se è già visibile dentro questa funzione?
Quindi non ci capiamo molto bene.
Se l'array è globale, perché passarlo in una funzione per riferimento, se è già visibile all'interno di questa funzione?
Sovraccarico di funzioni - esiste una tale nozione ;)
Se avete bisogno di fare le stesse azioni con diversi array in una funzione, allora...
Tuttavia - stiamo discutendo diversi casi speciali...
Sovraccarico di funzioni - esiste un tale concetto ;)
Se avete bisogno di fare le stesse azioni con diversi array in una funzione, allora...
Tuttavia - stiamo discutendo diversi casi speciali...
Beh, grazie al cielo ho capito i tuoi pensieri. Ma sono molto simili ai consigli per i programmatori di lego.
Sarebbe molto strano avere in magazzino un numero enorme di funzioni funzionanti al 100% e scriverle ogni volta da capo. Questo non è un consiglio per costruire case con i dadi. È un consiglio per accumulare le proprie librerie di funzioni e classi. E cosa c'è di sbagliato in una funzione che gestisce più array a seconda di quale le viene passato come riferimento? E cosa c'è di sbagliato nei modelli di funzione?
Se avete del codice per ordinare un array, perché scrivere una funzione separata per ogni tipo di array? Potete semplicemente sovraccaricare e ordinare qualsiasi tipo. Come pensate che funzioni ArraySort()? Si passano diversi tipi di array lì, e su un output si riceve quello ordinato che è stato passato - o le meta quote sono anche lego-coder o cosa?
Sarebbe molto strano avere in magazzino un numero enorme di funzioni funzionanti al 100% e scriverle ogni volta da capo. Questo non è un consiglio per costruire case con i dadi. È un consiglio per accumulare le proprie librerie di funzioni e classi. E cosa c'è di sbagliato in una funzione che gestisce più array a seconda di quale le viene passato come riferimento? E cosa c'è di sbagliato nei modelli di funzione?
Se c'è del codice per ordinare un array, perché dovremmo scrivere una funzione separata per ogni tipo di array? Puoi semplicemente fare un sovraccarico e ordinare qualsiasi tipo. Come pensate che funzioni ArraySort()? Ci passate diversi tipi di array, e l'output è un ordinato, che avete passato - o metaquote anche lego-coder, o cosa?
L'importante è non arrivare a questo.
https://www.mql5.com/ru/forum/165468/page3#comment_3978059
La cosa principale è non arrivare a questo.
https://www.mql5.com/ru/forum/165468/page3#comment_3978059
c'è una variabile
int Level = 0;
Mentre il programma è in esecuzione, cambia costantemente. Aiutami a scrivere una condizione: se Level NON è cambiato, non fare nulla, se Level è cambiato (non importa se è cambiato più o meno), fare qualche azione { operatore }