[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 350

 
sss2019:


Allora perché, uso la funzione FileReadString, in teoria, o l'intera stringa nella variabile o fino al separatore e il puntatore fino al separatore della prima dovrebbe essere letto.

Semplicemente, mostratemi un esempio di come estrarre tutti i dati tra i separatori da una linea di file csv come questa?

131322608;EURUSD;2;1;0;0;1346149440


Sai almeno leggere? L'ho descritto in dettaglio sopra.

esempio:FileOpen (filename,FILE_CSV|FILE_READ,";");

int FileOpen(stringa filename, int mode, int delimiter=';')
Apre un file per l'input e/o l'output. Restituisce il descrittore del file aperto o -1 in caso di fallimento. Chiama GetLastError() per ottenere maggiori informazioni sull'errore.
Nota: i file possono essere aperti solo nella cartella terminal_directory\experts\files(terminal_directory\tester\files in caso di test esperto) o nelle sue sottocartelle.
I modi FILE_BIN e FILE_CSV non possono essere usati simultaneamente.
Se FILE_WRITE non è combinato con FILE_READ, verrà aperto un file di lunghezza zero. Anche se c'erano dati nel file prima che fosse aperto, saranno distrutti. Se i dati devono essere aggiunti a un file esistente, questo deve essere aperto usando la combinazione FILE_READ | FILE_WRITE.
Se FILE_READ non è combinato con FILE_WRITE, il file sarà aperto solo se esiste già. Se il file non esiste, può essere creato usando FILE_WRITE.
Non si possono aprire più di 32 file allo stesso tempo in un singolo eseguibile. I descrittori dei file aperti in un modulo non possono essere passati ad altri moduli (librerie).
Parametri:
nome del file - Filename - nome del file.
modo - Metodo di apertura. Questo può essere un valore singolo o una combinazione di valori: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE.
delimitatore - Un carattere delimitatore per i file csv. Per default è ';'.

 
FAQ:


Non fatevi un'idea da soli.

FileReadString() legge fino al delimitatore (se specificato). Se non viene specificato alcun delimitatore, o se non viene specificato alcun delimitatore esistente, FileReadString() legge fino alla fine della stringa (il carattere caretransfer). Pertanto, nell'esempio precedente FileFlush() specifica un offset di lunghezza della stringa .

StrToInteger() in questo caso seleziona il primo valore numerico incontrato nella stringa e lo converte nel tipo [int].


Non c'è dubbio che si legge prima del separatore. Ma il puntatore del file è alla fine della linea. Non mi sono preso la briga di scrivere una sceneggiatura. Ecco perché l'ho scritto così.

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int fileid = FileOpen("File.csv",FILE_CSV|FILE_READ);
    int n1, n2;
      
      string ticket, ticket1;
      
      FileSeek(fileid,0,SEEK_SET);
      
      ticket = FileReadString(fileid);
      Print(ticket," ",FileTell(fileid));
      ticket1= FileReadString(fileid);
      Print(ticket1," ",FileTell(fileid));
      n1= FileReadNumber(fileid);
      Print(n1," ",FileTell(fileid));      
      n2= FileReadNumber(fileid);
      Print(n2," ",FileTell(fileid)); 
//----
   return(0);
  }
//+------------------------------------------------------------------+

Il separatore, come potete vedere, non è specificato.

06:54:18 111 EURUSD,H1: caricato con successo
06:54:18 111 EURUSD,H1: 131322608 37
06:54:18 111 EURUSD,H1: EURUSD 37
06:54:18 111 EURUSD,H1: 2 37
06:54:18 111 EURUSD,H1: 1 37
06:54:18 111 EURUSD,h1: uninit reason 0
06:54:18 111 EURUSD,H1: rimosso

 
Mislaid:


06:54:18 111 EURUSD,H1: 131322608 37


StrToInteger() in questo caso evidenzia il primo valore numerico incontrato nella stringa, e lo converte nel tipo [int].
 

Ciao, c'è un oggetto di tipo OBJ_TREND (cioè una linea di tendenza) costruito usando ObjectCreate.

Domanda: come posso ottenere il valore NUMERO che questa linea di tendenza prende in qualsiasi punto nel tempo, per esempio al momento attuale (Time[0])

 
ikatsko:

Ciao, c'è un oggetto di tipo OBJ_TREND (cioè una linea di tendenza) costruito usando ObjectCreate.

Domanda: come posso ottenere il valore NUMERO che questa linea di tendenza prende in qualsiasi punto nel tempo, per esempio al momento attuale (Time[0])


ObjectGetValueByShift()
 
drknn:

ObjectGetValueByShift()

Grazie per la sua pronta risposta?

 
Come si usa la funzione SendMail per inviare uno screenshot fatto con la funzione WindowScreenshot?
 
No, il file può essere inviato all'FTP
 
FAQ:
No, il file può essere inviato a ftp

Va bene, allora.

Allora ci arriverò da un altro punto di vista.

È possibile fare in modo che un'email in arrivo visualizzi immagini da FTP? (cioè l'immagine non è un allegato e l'email conterrebbe solo link a ftp)

 

Guru, una punta di civetta:

La linea di fondo è questa: il profitto di un trade (non ancora chiuso) inizia a diminuire (ho aperto il trade). Al raggiungimento del X % stabilito da me dalla somma della transazione - il robot chiude la transazione. In numeri così circa: $ 1 (già hanno dalla transazione) profitto cresce. Il Consiglio ha messo l'80% di stop. Profitto 1,2$ (ho anche l'80% di stop). Il mercato si è invertito e a (1,2*80%= 0,96) il gufo ha chiuso il trade.

Esattamente in %, gufi breakeven ho trovato punti lì ):

Grazie.