Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1498

 
Olá, por favor, avise.

Salvando dados em um arquivo.
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,

Obtenção de dados do arquivo

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() O erro é dado porque -Parâmetrodo tipo string estragado

Se você gerar a matriz aS[0] por meio de Print(), a fonte será diferente das demais.


Se você imprimir apenas o parâmetro tr , então = 0

 
Mikhail Toptunov do tipo string estragado

Se eu der saída a uma matrizS[0] por meio de Print(), a fonte será diferente das demais.


Se você imprimir apenas o parâmetro tr , então = 0

Você já tentou examinar o arquivo em si?

Você está gravando valores binários e lendo uma string de texto....

 
Maxim Kuznetsov #:

Você já tentou examinar o arquivo em si?

você está escrevendo valores binários e lendo uma cadeia de texto...

Eu o importei assim

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));

assim para exportação

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), ';');

ficou melhor, mas a primeira importação da cadeia de caracteres do primeiro parâmetro (aS[0]) é sempre um erro.


próximo

tr - reflete a cadeia de caracteres traduzida em int(aS[0])

O arquivo é visualizado, tudo está em seu lugar.


Mas a importação do primeiro parâmetro aS[0] da primeira linha não o traduz para int.
 
Aleksandr Slavskii #:

Se você não inicializar um array, ele geralmente conterá lixo.

Obrigado, eu até me lembrei que já havia encontrado isso antes (0 me confundiu). É uma pena que isso não esteja especificado na documentação, tenho que manter essas coisas em minha cabeça.

 
Mikhail Toptunov #:

importado

assim para exportação

é melhor, mas a primeira importação da cadeia de caracteres do primeiro parâmetro (aS[0]) sempre dá erro.


próximo

tr - reflete a cadeia de caracteres traduzida em int(aS[0])

O arquivo é visualizado, tudo está em seu lugar.


Mas a importação do primeiro parâmetro aS[0] da primeira linha não o traduz para int.

Como isso pode acontecer? - o primeiro aS[0] está sempre quebrado (erro 5040)


 
Por favor, me dêem uma dica. Tenho uma tarefa para executar a otimização, mas para a otimização preciso usar dados externos. Fiz o seguinte: criei um arquivo com dados e, a cada passagem, abro o arquivo, gravo na matriz e a fecho. Como posso otimizar e acelerar esse processo?
 
Mikhail Toptunov #:

Como isso pode acontecer? - o primeiro aS[0] está sempre quebrado (erro 5040)


Defina a codificação UTF-8 em Exportar e Importar (ou pelo menos a mesma codificação de um byte sem BOM).

(observe o arquivo em formato binário - os dois primeiros bytes provavelmente são BOM, ou seja, são Unicode) - quando você procura o arquivo FileSeek(0,SEEK_SET) e depois lê, você os lê em uma cadeia de caracteres e a conversão falha.

 
Maxim Kuznetsov #:
BOM

Bem, parece que funcionou. É verdade que uma vez ainda não reflete, mas quando você exclui o arquivo, pelo menos parou de apresentar falhas.


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

Muito obrigado!

 

Bom dia e bom humor!

Deparei-me com a falta de descrição do ResultRetcodeExternal no Manual de Referência MQL5. No mecanismo de busca, obtive a seguinte resposta: Nada foi encontrado para sua solicitação. De uma forma indireta, descobri que parece ser "Código de erro retornado por um sistema de negociação externo. A grafia e os tipos desses erros dependem da corretora e do sistema de negociação externo para o qual as operações de negociação são enviadas".

Pergunta: encontrei a definição correta ou não?

E, ao mesmo tempo, a segunda pergunta para os desenvolvedores da documentação: se é assim, por que não fornecem imediatamente aos usuários as informações completas, em vez de fazê-los procurar em qualquer lugar qual é essa definição?

Saudações, Vladimir.

 
MrBrooklin #:
ResultRetcodeExternal

Você não encontrará tal coisa. Ela não existe na MQL5.

Existe o MqlTradeResult, onde há um campo retcode_external, e onde há uma descrição desse campo.

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