Apprendre et écrire ensemble en MQL5 - page 5

 
maxandsoft :

Le fait est que lorsque je le compile pendant le débogage, il me renvoie à l'éditeur MQL sans même donner d'erreur. Et lorsque je place l'EA sur un graphique, elle ne s'y affiche même pas, c'est-à-dire que ni le débogage ni le lancement de l'EA ne donnent lieu à des erreurs.


J'ai trouvé une erreur mais il est indiqué que la DLL n'est pas autorisée - c'est-à-dire que je ne la vois pas. La question est de savoir où il doit se trouver. (dans la version 4, il n'était pas nécessaire de l'écraser, il se trouvait par défaut dans le dossier Systèmes de Windows).

 
maxandsoft   :


Mais j'ai trouvé une erreur disant que la DLL n'est pas autorisée - c'est-à-dire qu'elle ne peut pas la voir. La question est de savoir où il doit être situé. (dans la version 4, il n'était pas nécessaire de l'écraser, il se trouvait par défaut dans le dossier Systèmes de Windows).

Essayer d'autoriser l'importation à partir d'une DLL


 

Je pense qu'un bon compilateur diffère d'un mauvais compilateur en ce qu'il peut éliminer le code non viable du code viable. Et c'est là l'essentiel. On tombe souvent sur des choses à couper le souffle qui n'existent dans aucun contexte technique. Cela contribue au développement et à l'affinement des moyens expressifs de la langue. Et si vous devez vous préoccuper du format de saisie des données, ce n'est pas le compilateur qui est en cause, c'est ... À mon avis, le compilateur de MQL5 doit être amélioré, tout comme l'interface du programme.

 
Rosh   :

Essayez d'autoriser l'importation à partir d'une DLL

Voici ce qui est écrit

2010.01.14:27:56 GetInternet (EURJPY,H1) Violation d'accès en lecture à 0x00040017 dans 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'.

 
maxandsoft   :

Voici ce qui est écrit

2010.01.14:27:56 GetInternet (EURJPY,H1) Violation d'accès en lecture à 0x00040017 dans 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'.

Veuillez joindre le code source. Peut être envoyé en tant que message privé.
 
mql5   :

Veuillez joindre le texte source. Peut être envoyé en tant que message privé.

//+------------------------------------------------------------------+
//|                                                  GetInternet.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#import "wininet.dll"
  int InternetAttemptConnect (int x);
  int InternetOpenA(string sAgent, int lAccessType, 
                    string sProxyName = "", string sProxyBypass = "", 
                    int lFlags = 0);
  int InternetOpenUrlA(int hInternetSession, string sUrl, 
                       string sHeaders = "", int lHeadersLength = 0,
                       int lFlags = 0, int lContext = 0);
          
  int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, 
                       int& lNumberOfBytesRead[]);
  int InternetCloseHandle(int hInet);



#import
input int Step = 300;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("Старт...");
   

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
    Comment(GetURL("http://www.forexremote.net"));
    
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------------------------------------+
//| Функция получения WEB страницы                                                                           |
//+----------------------------------------------------------------------------------------------------------+
string GetURL(string url)
{
   int rv = InternetAttemptConnect(0);
   if(rv != 0)
     {
       Alert("Ошибка при вызове InternetAttemptConnect()");
       return("");
     }

   int hInternetSession = InternetOpenA("Microsoft Internet Explorer", 1, "", "", 0);
   if(hInternetSession <= 0)
     {
       Alert("Ошибка при вызове InternetOpenA()");
       return("");         
     }

   int hURL = InternetOpenUrlA(hInternetSession, url, "", 0, 0, 0);
   if(hURL <= 0)
    {
       Print("Ошибка получения данных с узла!");
       //fComment("Ошибка получения данных с узла!",true);
       InternetCloseHandle(hInternetSession);
       return("");         
     } 
          
   int cBuffer[256];
   int dwBytesRead[1]; 
   string TXT = "";
   while(!IsStopped())
     {
       bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
       if(dwBytesRead[0] == 0)
           break;
       string text = "";   
       for(int i = 0; i < 256; i++)
         {
              text = text + CharToString(cBuffer[i] & 0x000000FF);
              if(StringLen(text) == dwBytesRead[0])
                  break;
              text = text + CharToString(cBuffer[i] >> 8 & 0x000000FF);
              if(StringLen(text) == dwBytesRead[0])
                  break;
           text = text + CharToString(cBuffer[i] >> 16 & 0x000000FF);
           if(StringLen(text) == dwBytesRead[0])
               break;
           text = text + CharToString(cBuffer[i] >> 24 & 0x000000FF);
         }
       TXT = TXT + text;
       //Sleep(500);

     }
     InternetCloseHandle(hInternetSession);
     return(TXT);
}
//+----------------------------------------------------------------------------------------------------------+
//| Конец Функции получения WEB страницы                                                                     |
//+----------------------------------------------------------------------------------------------------------+
 
maxandsoft:
Voilà ce que ça dit.

2010.01.14:27:56 GetInternet (EURJPY,H1) Violation d'accès en lecture à 0x00040017 dans 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'.

Merci pour votre message, le bug a été corrigé. Attendez une mise à jour.
 

er... avec le build 239 l'erreur a disparu, mais pas tout à fait...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Erreur lors de l'obtention de données à partir du nœud !

Il s'est avéré que la raison de cette dernière était les fonctions, en les remplaçant par unicode

InternetOpenW() et InternetOpenUrlW()

J'ai légèrement* résolu le problème...

Seulement je n'ai pas utilisé Expert Advisor, j'ai corrigé le code comme un script.


*légèrement, seulement parce qu'il a été laissé pour vaincre l'encodage ytf-8 du site :

<th width="50">&nbsp;ÐЎÐsбщеÐÑœЏ&nbsp;</th>

 
kombat:

er... avec le build 239 l'erreur a disparu, mais pas tout à fait...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Erreur lors de l'obtention de données à partir du nœud !

Il s'est avéré que la raison de cette dernière était les fonctions, en les remplaçant par unicode

InternetOpenW() et InternetOpenUrlW()

J'ai légèrement* résolu le problème...

Seulement je n'ai pas utilisé Expert Advisor, j'ai corrigé le code comme un script.


*légèrement, seulement parce qu'il a été laissé pour vaincre l'encodage ytf-8 du site :

<th width="50">&nbsp;ÐЎÐsбщеÐÑœЏ&nbsp;</th>

 
maxandsoft:
en attendant la nouvelle construction
Raison: