Errori, bug, domande - pagina 921

 
sergeev:

- Il broker supporta l'impostazione di un ordine a tempo?

Per farlo, premete F9 e controllate se l'ora può essere impostata.


Qui tutto funziona, cioè tutti gli ordini pendenti vengono eseguiti senza errori.
 
Ciao, ho questa domanda - ho comprato un EA installato sul mio computer, poi ho ordinato un server VPS e ho installato lo stesso EA. Alla fine ho rifiutato il server in affitto perché il broker ha un servizio gratuito, ma non posso installare l'Expert Advisor per la terza volta (su tre hardware). Cosa posso fare? Posso rinunciare a un server per un altro? Dove andare? Grazie!
 

Due domande sul lavoro con i file.

1. C'è un file di testo che contiene stringhe in varie lingue (tra cui giapponese, arabo, ecc.). Di conseguenza la codifica del file è UTF8. I dati nel file sono scritti come "Alias=Translation", dove l'alias è sempre in inglese e la traduzione è qualsiasi altra lingua. Ero sicuro che FILE_UNICODE dovesse essere usato durante la lettura. Ma se si apre il file in questo modo

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_UNICODE, 0, CP_UTF8);

si ottiene un insieme di geroglifici senza senso quando si leggono le stringhe. Ma se lo apri in questo modo

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);

poi legge e successivamente emette normalmente (ho controllato inglese, russo, ucraino, giapponese, arabo).

Domanda: perché dobbiamo usare il flag FILE_ANSI? Dopo tutto, ANSI è per i caratteri a byte singolo e UTF8 per la codifica dei caratteri unicode...


2. C'è una classe che ha un tale metodo:

string CTranslator::getTranslate(string str) {
//---
   int fileHandle = FileOpen(filename, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);
   
   if ( fileHandle == INVALID_HANDLE ) {
      return(str);
   }
//---
   string temp, alias, traslation;
   int delimiterPos;
      
   for ( ; !FileIsEnding(fileHandle); ) {
      temp = FileReadString(fileHandle);
      delimiterPos = StringFind(temp, "=");
      alias = StringSubstr(temp, 0, delimiterPos);
      
      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
   }
   FileClose(fileHandle);
//---
   return(str);
}

Il nome del file è una proprietà e gli viene dato un valore quando si inizializza un oggetto. Cioè, quando chiamate il metodo, apriamo il file, leggiamo riga per riga, e non appena troviamo la stringa corrispondente, restituiamo la sua sottostringa. Se il file non è aperto o non c'è una stringa corrispondente, restituiamo la stringa che è stata inserita nell'input.

Se chiamiamo il metodo una volta, tutto funziona. Ma se chiamate più volte di seguito - funziona solo la prima volta, mentre il secondo e i successivi tentativi di aprire il file - INVALID_HANDLE (controllato con print). Quale potrebbe essere il problema?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Rone:

2. C'è una classe che ha questo metodo:

Il nome del file è una proprietà e gli viene assegnato un valore durante l'inizializzazione dell'oggetto. Cioè, quando il metodo viene chiamato, apriamo il file, lo leggiamo riga per riga, e appena troviamo una riga adatta, restituiamo la sua sottostringa. Se il file non è aperto o non c'è una stringa corrispondente, restituiamo la stringa che è stata inserita nell'input.

Se chiamiamo il metodo una volta, tutto funziona. Ma se chiamate più volte di seguito - funziona solo la prima volta, mentre il secondo e i successivi tentativi di aprire il file - INVALID_HANDLE (controllato con print). Quale potrebbe essere il problema?

Questo potrebbe essere il motivo:

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
 
Rone:

...

2. C'è una classe che ha un metodo come questo:

Il nome del file è una proprietà e gli viene assegnato un valore durante l'inizializzazione dell'oggetto. Cioè, quando il metodo viene chiamato, apriamo il file, lo leggiamo riga per riga, e appena troviamo una riga adatta, restituiamo la sua sottostringa. Se il file non è aperto o non c'è una stringa corrispondente, restituiamo la stringa che è stata inserita nell'input.

Se chiamiamo il metodo una volta, tutto funziona. Ma se chiamate più volte di seguito - funziona solo la prima volta, mentre il secondo e i successivi tentativi di aprire il file - INVALID_HANDLE (controllato con print). Quale potrebbe essere il problema?

Forse perché se "restituisce la stringa che è stata data in input" il file non viene chiuso?
 

forse funziona lì

Ma la vostra società di intermediazione ha un'opzione di data?

 
Contender:

Forse è questa la ragione:

...

tol64

...


Grazie per le pronte risposte!

Scusa, l'ho trascurato, sono uscito a fumare e l'ho preso.

Ecco qui:

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
         FileClose(fileHandle);

         return(traslation);
      }

Ora funziona. Ma la prima domanda è ancora valida.

 
sergeev:

forse è lì che funziona.

ma la vostra società di intermediazione ha un'opzione di data?

Non ho sentito nulla di chiaro dal mio broker per una settimana ... rrrrrrrrr....

 
Rone:


Grazie per le vostre pronte risposte!

Scusa, l'ho trascurato, sono uscito a fumare e l'ho preso.

Ecco qui:

Ora funziona. Ma la prima domanda è ancora valida.

Sulla prima domanda.

Se il file è aperto come unicode, non viene fatta alcuna conversione (cioè il vostro CP_UTF8 viene semplicemente ignorato), i dati vengono letti "così come sono".

La pagina di codice funziona durante la conversione al testo interno Unicode ( dati di tipo stringa) quando si legge da un file di testo aperto in modalità ANSI.

 
Nikos52:

Non ho sentito nulla di chiaro dal mio broker per una settimana ... rrrrrr....


l'F9 sul vostro terminale di intermediazione è rotto?