Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1498

 
Salve, vi prego di consigliarmi.

Salvataggio dei dati in un file.
void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_END);
      long tr = TimeGMT();
      trans = (tr > trans) ? tr : (trans + 1);
      FileWrite(handle,
                trans,
                request.action,
                request.magic,

Ottenere i dati dal file

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 3;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0));
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_SET);
      while(!FileIsEnding(handle))
        {
         string s = FileReadString(handle);
         string aS[];
         int cnt = StringSplit(s, ';', aS);
         if(cnt <= 0)
            continue;
         //---   ПРОБЛЕМНОЕ МЕСТО ОТ
          tr = StringToInteger(aS[0]);
         //---    ПРОБЛЕМНОЕ МЕСТО ДО
         if(tr <= trans)
            continue;

GetLastError() L'errore è dato dal fatto che -Parametro ditipo stringa viziato

Se si emette l'array aS[0] tramite Print(), il carattere è diverso dal resto.


Se si stampa solo il parametro tr , allora = 0

 
Mikhail Toptunov tipo stringa viziato

Se eseguo l'output di un arrayS[0] tramite Print(), il carattere è diverso dal resto.


Se si stampa solo il parametro tr , allora = 0

Avete provato a guardare il file stesso?

state scrivendo valori binari e leggendo una stringa di testo....

 
Maxim Kuznetsov #:

Avete provato a guardare il file stesso?

state scrivendo valori binari e leggendo una stringa di testo...

L'ho importato in questo modo

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

come questo per l'esportazione

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

è migliorato, ma la prima importazione della stringa del primo parametro (aS[0]) è sempre un errore.


successivo

tr - riflette la stringa tradotta in int(aS[0])

Il file viene visualizzato, tutto è al suo posto.


Ma l'importazione del primo parametro aS[0] della prima riga non lo traduce in int.
 
Aleksandr Slavskii #:

Se non si inizializza un array, spesso contiene spazzatura.

Grazie, mi sono anche ricordato di averlo già incontrato in passato (0 mi ha confuso). È un peccato che non sia specificato nella documentazione, devo tenere queste cose nella mia testa.

 
Mikhail Toptunov #:

importato

come questo per l'esportazione

ma la prima importazione della stringa del primo parametro (aS[0]) è sempre un errore.


successivo

tr - riflette la stringa tradotta in int(aS[0])

Il file viene visualizzato, tutto è al suo posto.


Ma l'importazione del primo parametro aS[0] della prima riga non lo traduce in int.

Come può essere? - il primo aS[0] è sempre interrotto (errore 5040)


 
Gentili persone, per favore datemi un suggerimento. Ho un task per eseguire l'ottimizzazione, ma per l'ottimizzazione ho bisogno di utilizzare dati esterni. Ho fatto così: ho creato un file con i dati e ad ogni passaggio apro il file, scrivo nell'array e lo chiudo. Come posso ottimizzare e velocizzare questo processo?
 
Mikhail Toptunov #:

Come può essere? - il primo aS[0] è sempre interrotto (errore 5040)


impostare la codifica UTF-8 in Esportazione e Importazione (o almeno la stessa codifica a un byte senza BOM).

(guardate il file in forma binaria - i primi due byte sono probabilmente BOM, cioè è Unicode) - quando si FileSeek(0,SEEK_SET) e poi si legge, si legge in una stringa e la conversione fallisce.

 
Maxim Kuznetsov #:
BOM

Sembra che abbia funzionato. Vero che una volta ancora non riflette, ma poi quando si cancella il file almeno ha smesso di glitchare.


FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8

Grazie mille!

 

Buongiorno e buon umore!

Ho riscontrato la mancanza della descrizione di ResultRetcodeExternal nel manuale di riferimento MQL5. Nel motore di ricerca ottengo la seguente risposta: Nothing was found for your request. In modo indiretto, ho scoperto che sembra essere "Codice di errore restituito da un sistema di trading esterno". L'ortografia e i tipi di questi errori dipendono dal broker e dal sistema di trading esterno a cui vengono inviate le operazioni di trading".

Domanda: ho trovato la definizione corretta o no?

E allo stesso tempo la seconda domanda agli sviluppatori della documentazione: se è così, perché non fornite immediatamente agli utenti informazioni complete, invece di farli cercare dappertutto quale sia questa definizione?

Saluti, Vladimir.

 
MrBrooklin #:
RisultatoCodiceEsterno

Non troverete una cosa del genere. Non esiste in MQL5.

Esiste MqlTradeResult, dove c'è un campo retcode_external e dove c'è una descrizione di questo campo.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5