Erreurs, bugs, questions - page 1026

 
tol64:

Il semble que ce soit la même chose pour tout le monde.

Aucune modification n'a été apportée au code de la classe, et une telle erreur n'existait pas auparavant.

C'est ainsi qu'il se compile :

#include <Canvas\Canvas.mqh>

static uint  CCanvas::m_default_colors[9] = 
  {0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444 };

CCanvas bmp;
 

Bonjour, aidez-moi à résoudre un problème.

J'ai commencé à transférer mes développements de mt4 à mt5. Pour la première fois, j'ai été confronté à un problème de chargement de DLL. Il compile bien mais quand je lance l'indicateur. Erreur "cannot open dll". Plus de messages d'erreur. J'ai lu tous les articles et je l'ai placé de la manière suivante : Bibliothèque dans le répertoire ...\Terminaux\MetaTrader 5\MQL5\Libraries

//+------------------------------------------------------------------+
//|                                                   Test MySQL.mq5 |
//|                                                               me |
//|                                                               no |
//+------------------------------------------------------------------+
#property copyright "me"
#property link      "no"
#property version   "1.00"
#property indicator_separate_window

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import 


int i = 0;
int mysql;
string query;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Print(GetLastError());
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag =0;
   int port = 3306;
   string socket="";
   int res = mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
   int err = GetLastError();
   if (res == mysql) Print("connected");
   else Print("error = ",mysql," ",mysql_errno(mysql)," ");
   //До этой строки все правильно работает.
   i++;   
   StringConcatenate(query, "INSERT INTO ",
                                    //CharToStr(039),
                                    "test", 
                                    //CharToStr(039), 
                                    " (", 
                                    //CharToStr(039), 
                                    "ID", 
                                    //CharToStr(039), 
                                    ", ",
                                    //CharToStr(039), 
                                    "text",
                                    //CharToStr(039), 
                                    ") VALUES (", 
                                    CharToString(039),
                                    DoubleToString(i,0),
                                    CharToString(039),
                                    ", ",
                                    CharToString(039), 
                                    "testtext",
                                    CharToString(039),
                                    ")"
                                    );
   Print("i = ", i);                                    
   Print(query);
   
 
   int length = StringLen(query);
   mysql_real_query(mysql,query,length);
   int myerr=mysql_errno(mysql);
   if (myerr>0)Print("error=",myerr); else Print(i, "good"); 
   return(0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   
  }
//+------------------------------------------------------------------+
 
MetaDriver:

c'est ainsi qu'il se compile :

Oui, mais à quoi ça sert tout ça ?

Dans le constructeur de la classe, ce tableau est également initialisé avec de nouvelles valeurs, écrasant celles que vous avez suggérées.

Bref, comme ça :

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
Compile sans erreur. Et laissez les développeurs dire la signification de m_default_colors dans l'aide.
 
avoitenko:

Oui, mais pour quoi faire ?

Dans le constructeur de la classe, ce tableau est également initialisé avec de nouvelles valeurs, effaçant celles que vous suggérez.

Bref, c'est tout :

Compile sans erreur. Et que les développeurs puissent dire la signification de m_default_colors dans l'aide.

Je vous ai dit que c'était un bug, alors allez à servicedesk avec.

Bien que, à en juger par la documentation, il s'agisse d'un bogue. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Les membres statiques de la classe n'ont pas besoin d'être initialisés explicitement de manière globale, ils seront initialisés automatiquement au démarrage du programme. ......

Le reste de mes suggestions est consacré à l'exécution du programme en présence de ce bogue. L'initialisation intermédiaire exécute cette fonction, de sorte que vous pouvez travailler sans attendre la correction du bogue.

Voici un schéma typique de mes actions dans de telles situations.

 

MetaDriver:

L'initialisation intermédiaire exécute cette fonction, de sorte que vous pouvez travailler sans attendre que le bogue soit corrigé.

Voici un schéma typique de mes actions dans de telles situations.

Et mes actions aussi. Merci.

Et le service d'assistance lit et relit ce fil de discussion, alors ils vont régler le problème.

 

Al_key:

Erreur "cannot open dll". Pas d'autres messages.

Le terminal ne trouve pas votre DLL.

Le chemin à copier peut être vu à travers MetaEditor, en prenant les propriétés du dossier MQL5 dans le navigateur, le chemin est écrit dans le champ "Location". Puis copiez votre DLL dans le dossier [chemin]\MQL5\Libraries\.

 
Vladon:

Chère administration, il y a un problème avec le serveur metaQuotes-DEMO.

Dit dans le journal : 2013.08.01 11:58:35 Réseau '1449777' : connexion à MetaQuotes-Demo perdue

Le compte a été banni par le serveur de trading pour activité de trading excessive. La plateforme de trading se protège et désactive les comptes qui envoient aveuglément des demandes de transaction à chaque tick.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

Le terminal ne trouve pas votre DLL.

Vous pouvez voir le chemin de copie dans MetaEditor, en prenant les propriétés du dossier MQL5 dans le navigateur, le chemin est écrit dans la colonne location. Puis copiez votre DLL dans le dossier [chemin]\MQL5\Libraries\.

Oui, mais comme je l'ai écrit, j'ai déjà copié libmysql [path]\MQL5\Libraries\\.
 
Al_key:
Oui, mais comme je l'ai écrit, j'ai déjà copié libmysql [path]\MQL5\Libraries\\.

Je vais dans l'éditeur méta et ouvre les propriétés du dossier MQL5, mais il y a un chemin qui n'est pas associé à mon dossier terminal. Est-ce que ce sera toujours comme ça à partir de maintenant, ou est-ce que je peux l'ajuster ? D'ailleurs, je l'ai fait et j'ai tout copié. Toujours la même erreur.


Ok, nouvelle modification du message. Tout semble fonctionner, il y a un tas d'autres erreurs, je vais y réfléchir maintenant. Et encore comment faire un dossier standard pour les indices et EAs et autres données. Le commutateur /portable va-t-il aider ?

 
Rosh:
Le compte a été banni par le serveur de trading pour activité de trading excessive. La plateforme de trading se protège et désactive les comptes qui envoient aveuglément des demandes de transaction à chaque tick.

Les requêtes commerciales sont compréhensibles, il y a eu une modification. C'est ainsi que la stratégie a été conçue. Je ne sais pas comment l'Expert Advisor va fonctionner maintenant, mais j'ai désactivé la modification sur chaque tick. Je vous demande de réactiver le compte. Il a 3 mois et de bonnes statistiques.