Discussão do artigo "Como acessar o banco de dados MySQL a partir do MQL5 (MQL4)" - página 20

 
Dmitry Melnichenko:

Criei um novo usuário, tentei me conectar com os detalhes dele, mas não adiantou!

então é improvável que seja um problema de organização do MySQL ou do banco de dados, ou seja, obviamente há algum erro no EA/script ou na biblioteca de interface.

Você pode me dar um exemplo em que isso seja minimizado? Para que eu possa demonstrar um código curto e descobrir seus problemas aqui em um tópico do fórum.

 
Maxim Kuznetsov:

então é improvável que seja um problema de organização do MySQL ou do banco de dados, ou seja, obviamente algum bug no EA/script ou na biblioteca de interface.

Você pode dar um exemplo em que isso seja minimizado? Para que você possa demonstrar um código curto e, em seguida, descobrir seus problemas em um tópico do fórum aqui

if(connect >= 0)
   {
      string sql = SelectNewOrdersSQL();
      
      int Cursor1 = MySqlCursorOpen(connect, sql);
      
      if(Cursor1 >= 0)
      {
         int Rows = MySqlCursorRows(Cursor1);
         
         for(int i = 0; i < Rows; i++)
         {
            ResetLastError();
            
            if(MySqlCursorFetchRow(Cursor1))
            {
               int ticket = MySqlGetFieldAsInt(Cursor1, 0);
               string s = MySqlGetFieldAsString(Cursor1, 1);
               int order_type = MySqlGetFieldAsInt(Cursor1, 2);
               double lot = MySqlGetFieldAsDouble(Cursor1, 3);
               double open_price = MySqlGetFieldAsDouble(Cursor1, 4);
               
               string symbol = GetSymbol(s);
               
               Print(ticket);
               
               int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
               int open_ticket = -1;
               if((open_ticket = OrderSend(symbol, order_type, NormalizeDouble(lot, 2), NormalizeDouble(open_price, digits), 150, 0, 0, (string)ticket)) <= 0)
               {
                  Print(symbol, ": Falha ao abrir uma posição. Erro ", GetLastError());
               }
               else
               {
                  MySqlExecute(connect, SqlModifyClient(ticket, open_ticket));
               }
            }
         }
         
         MySqlCursorClose(Cursor1);
      }
   }
string SelectNewOrdersSQL()
{
   string res = "SELECT Ticket, Symbol, OrderType, Lot, OpenPrice, StopLoss, TakeProfit ";
   res += "FROM orders (WHERE Client2 = 0 AND HistoryMaster = 0 AND Account = " + (string)MasterAccount;
   res += " AND Magic = " + (string)MasterMagic + ")";
   
   return res;
}
 
Você tem MQL4 ou 5???
 
Maxim Kuznetsov:
Você tem MQL4 ou 5???
MQL4
 
Dmitry Melnichenko:
MQL4
e o erro ocorre somente ao fechar o cursor, ou seja, todos os registros são extraídos normalmente, mas no final aparece esse absurdo?
 
Maxim Kuznetsov:
e o erro ocorre somente ao fechar o cursor, ou seja, todos os registros são extraídos normalmente, mas no final aparece esse absurdo?
Sim, ele grava o número de linhas selecionadas (impresso em Print), mas ao fechar o cursor ele grava esse erro.
 
Amy Liu:

Oi Eugeniy,

Desculpe-me pela resposta tardia. Aqui está o que fiz com seu código. Apenas modifiquei uma função cMySqlGetRowField para usar MultiByteToWideChar. O código original está comentado para comparação.

Obrigado, vocês são ótimos. Tentei seu código, mas não se esqueça de incluir o cabeçalho widechar, ou ele não funcionará.

#include <wchar.h>



 

Olá professor, estou usando o software mt4, sistema local win10 usando ea para conectar mysql pode ser usado normalmente, mas colocar no servidor win2008 não vai funcionar, foi solicitado '... \libraries\MQLMySQL.dll' não está carregado... ...' erro.

Baixei todas as versões, incluindo mt4, mt5, 64bit, 32bit, mas ainda não funciona. O que devo fazer?

 

Olá, carreguei a dll na pasta Libraries, mas ela reporta um erro ""Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

Como isso é possível?

 
GreenKobra:

Olá. Carreguei a dll na pasta Libraries, mas ela informa um erro ""Cnnot call 'cMySqlVersion', '....\Libraries\MQLMySQL.dll' is not loaded

Como isso é possível?

Estou com o mesmo problema que você.

Estou usando o MT5 com o Windows 10 - 64bits.