Qualsiasi domanda da un PROFI a un SUPER PROFI - 1. - pagina 20
![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
Dato:
Nella funzione init() dell'EA, viene inizializzato un generatore MQL PSP: MathSrand(...). Quando il terminale si avvia, diverse (per chiarezza, diciamo tre) copie dell'Expert Advisor vengono caricate dal modello. Il caricamento è veloce, quindi è molto probabile (e lo è quasi sempre) che le funzioni TimeLocal() e TimeCurrent() restituiscano gli stessi valori in tutte le copie.
Domanda:
Quali trucchi ci sono per far sì che il PRNG inizializzi numeri diversi in diverse copie dell'EA? In altre parole, dove (con il minimo sforzo di programmazione) ottenere l'elemento di casualità?
Dato:
Nella funzione init() dell'EA, viene inizializzato un generatore MQL PSP: MathSrand(...). Quando il terminale si avvia, diverse (per chiarezza, diciamo tre) copie dell'Expert Advisor vengono caricate dal modello. Il caricamento è veloce, quindi è molto probabile (e lo è quasi sempre) che le funzioni TimeLocal() e TimeCurrent() restituiscano gli stessi valori in tutte le copie.
Domanda:
Quali trucchi ci sono per far sì che il PRNG inizializzi numeri diversi in diverse copie dell'EA? In altre parole, dove (con il minimo sforzo di programmazione) ottenere l'elemento di casualità?
GetTickCount ?
potrebbe funzionare, ma non per certo...
Un millisecondo per un programma può essere un'eternità).
potrebbe funzionare, ma non per certo...
opzione 2 - usare variabili globali per creare "semafori" per inizializzare gli esperti in sequenza.
Domanda sul recupero di righe da dll in mql.
la funzione mysql_fetch_row da libmysql.dll restituisce il tipo MYSQL_ROW
Questo tipo è definito come: typedef char** MYSQL_ROW
Come si arriva a questo array di stringhe restituito?
Le dimensioni dell'array sono note?
ma la lunghezza di ogni riga non lo è.
C'è un'altra cosa in quell'esempio di link - ottenere un puntatore *lengths.
], row[i] ? row[i] : "NULL"); }Risulta essere anche un array... Ma come arrivarci...
Ecco cosa si ottiene in MQL quando si passa solo il risultato di mysql_fetch_row alla stringa
p0ƒu0ƒ;1;a
dove
p0ƒu0ƒ è l'indirizzo (8 byte) della stringa
;1;a è il suo dato utilizzabile
ma se lo impostate su int, allora invece di p0ƒ l'indirizzo è 42152040
Se il puntatore alla stringa non cambia durante l'esecuzione del programma, potete restituire il puntatore alla stringa senza copiarlo nel buffer.
Quindi non c'è modo di farlo in MQL, nemmeno in MQL5?
Se il puntatore alla stringa non cambia durante l'esecuzione del programma, potete restituire il puntatore alla stringa senza copiarlo nel buffer.
Semplicemente