Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 487

 
igrok333:

Come posso leggere la linea 8 di un file?

La domanda riguarda le operazioni sui file

https://docs.mql4.com/ru/files


Tutto in mql è fatto con la forza bruta, come mi ha detto qualcuno una volta?


Non si può fare in altro modo?

Tutti i tipi di dati hanno una certa dimensione di memoria occupata in byte. Di conseguenza, quando si scrive del codice, è possibile utilizzarlo e spostare il puntatore del file al numero di byte occupato dai dati di una stringa.

Se una linea contiene 4 valori di tipo doppio, prende 4*8 = 32 byte. Di conseguenza, per leggere la nona riga del file, dobbiamo spostare il puntatore del file a 256 byte.

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

Se spostato dalla fine del file, allora il valore deve essere negativo.

Ma non è tutto così liscio. Qualche tempo fa ho affrontato questo problema e ho scoperto che i file .txt e .csv non funzionano correttamente con questo, ma i file .bin non fanno errori. Forse questo problema è già stato risolto e potresti essere fortunato.

 
Alexey Viktorov:

Se ci sono 4 valori di tipo double

tutti i valori in un file csv non sono stringhe?


Ho una parola per ogni riga del file.
Quindi ho dei valori di stringa con una dimensione di 12 byte.
Quindi, per arrivare alla linea 8, ho bisogno di spostare il carrello di 84 byte.

bool  FileSeek(file_handle, 84, SEEK_SET);

Grazie per le informazioni.

 
Come faccio a scorrere tutte le posizioni aperte in mql 5?
 
Roman Sharanov:
Come faccio a scorrere tutte le posizioni aperte in mql 5?
questo è il topic di mql4
 
igrok333:
questo è il topic di mql4

No, questo argomento è sia mql4 che mql5

 
Roni Iron:

Buon pomeriggio!

Domanda: come accelerare il tester nel terminale?

Lo sto usando solo 1 thread della CPU su 4, e solo 150mb di RAM. (cioè non usa tutta la potenza del mio PC).

Quali sono le opzioni?

Se questo è già stato discusso, lasciate i link per favore!

Se MT4 allora solo la frequenza della CPU gioca un ruolo qui. Usa un solo filo? È possibile lanciare simultaneamente 4 terminali MT4 con diversi compiti di test o di ottimizzazione. Avrete lo stesso carico di CPU di un terminale.

 
Roman Sharanov:
Come posso fare un ciclo di tutte le posizioni aperte in mql5?

mql5 distingue tra posizioni e ordini. Una posizione è il risultato di uno scambio. E un trade è il risultato dell'attivazione di un ordine.

Prima di tutto, una richiesta di trading viene inviata al server, e appare un ordine pendente (se la richiesta era di impostarne uno) o un ordine a mercato (se la richiesta era di aprire una posizione).

Se l'ordine di mercato è scattato (si è verificata una negoziazione), appare una posizione (o una posizione esistente viene modificata) come risultato di questa negoziazione.

Su un conto di copertura ci possono essere molte posizioni separate (anche multidirezionali), su un conto di compensazione ci può essere solo una posizione.

Quindi, per fare un ciclo di tutte le posizioni, è necessario organizzare il ciclo per il loro numero - rispettivamente, usare PositionsTotal() invece del solito per mql4 OrdersTotal().

Se volete fare il loop di tutti gli ordini in mql5, allora (in mql5) usate il solito for mql4 OrdersTotal().

 
igrok333:

ma tutti i valori nel file csv non sono stringhe?


Ho una parola per ogni riga del file.
Quindi ho dei valori di stringa che sono di 12 byte.
Quindi ho bisogno di spostare il carrello alla linea 8 di 84 byte.


Grazie per le informazioni.

Il file di testo deve essere letto solo riga per riga. Non c'è altro modo per calcolare il numero di linea. Quindi - sì, solo con la lettura consecutiva in loop usando FileReadString.

 

Creo i livelli di Fibonacci nel grafico usando ObjectCreate(name,OBJ_FIBO, ...) e poi ObjectSetFiboDescription(name,0,"...") e imposto la descrizione dei livelli ma i nomi dovrebbero essere spostati dal bordo destro. Ho aggiunto lo spazio bianco, ma non solo allontana il testo, ma copre anche le linee. Inoltre, se si aggiungono altri spazi, il testo smette di tornare indietro.
Domanda: Posso aggiungere un simbolo "invisibile" al testo, in modo che non copra la linea sotto di esso?


 
Maxim Khrolenko:

Creo i livelli di Fibonacci nel grafico usando ObjectCreate(name,OBJ_FIBO, ...) e poi ObjectSetFiboDescription(name,0,"...") e imposto la descrizione dei livelli ma i nomi dovrebbero essere spostati dal bordo destro. Ho aggiunto lo spazio bianco, ma non solo allontana il testo, ma copre anche le linee. Inoltre, se si aggiungono altri spazi, il testo smette di tornare indietro.
Domanda: Posso aggiungere un simbolo "invisibile" al testo, in modo che non copra la linea sotto di esso?

prova i punti e un carattere con codice 0

Motivazione: