Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 222
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
Questo non è niente di nuovo, è il modo in cui ha sempre funzionato dalla nascita.
Solo se i dati sono più grandi di __atomic__ l'accesso dovrebbe essere avvolto/protetto con sezioni critiche (o mutex al terminale std::thread)
Beh, non conoscevo questo comportamento e mi aspettavo un processo separato durante l'importazione.
Ho pensato che i puntatori DLL globali saranno nuovi, in ogni programma MT5 caricato.
Con quello che ho dovuto sudare per capire la logica, chiedendomi perché l'errore apparirà in memoria.
Ma quando ho capito la ragione con il metodo try (print), allora l'intero piano architettonico di lavorare con la DLL sarà costruito diversamente.
Amico, hai ragione sui mutex, non ci avevo pensato. Grazie per il suggerimento.
Sì, anche se se il metodo non ha parametri, è possibile farlo:
Applicazione:
Con l'esecuzione parziale degli ordini il campoORDER_TIME_SETUP_MSC cambia.
Di conseguenza, DEAL_TIME_MSC può essere inferiore a ORDER_TIME_SETUP_MSC del suo ordine.
Che ne dite di usare una funzione di confronto personalizzata:
Hai ragione, grazie! Ho esagerato su un punto piatto. Lascio la tua variante per l'ordinamento.
Applicazione.
ZZY È un peccato che, per sottocampo o metodo, non funzioni.
Ecco il QuickSort ottimizzato dalla mia libreria, leggermente adattato alle tue esigenze.
Può ordinare array enormi senza overflow dello stack (a causa della ricorsione incontrollata).
Ciao e grazie per aver condiviso!
Questo sarebbe perfetto se funzionasse. Tuttavia, quando incollato in uno script .mq5 ed eseguito purtroppo il tuo codice lancia il seguente errore:
Potresti per favore sistemare questo? Per te è probabilmente facile, mentre io non saprei da dove cominciare :-)
Quando si utilizza ArrayInsert, è possibile risparmiare memoria se Array_Destination[] è più piccolo di Array_Source[] da cui vengono aggiunti gli elementi.
A tal fine, è necessario applicare ArraySwap due volte: prima e dopo ArrayInsert.
Ad esempio, questo è importante quando si lavora con archivi MqlTick di grandi dimensioni, ecc.
Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading
Peculiarità del linguaggio mql5, sottigliezze e tecniche di lavoro
fxsaber, 2022.02.20 15:00
Hai ragione, grazie! Ho overmudryl su un posto dritto. Lascerò la vostra variante per l'ordinamento.
Applicazione.
C'era un errore nel metodo di partizione. Versione corretta.
C'era un errore nel metodo di partizione. Versione corretta.
Per il caso speciale in cui un campo numerico viene preso per l'ordinamento (la situazione più comune), ho scritto una variante che è di diversi ordini di grandezza più veloce della precedente. Ma consuma il doppio della memoria. È importante per gli array di grandi dimensioni.
Applicazione (con misurazione del tempo di esecuzione).
Risultato.