Aprender e escrever juntos em MQL5 - página 5

 
maxandsoft :

A questão é que quando o compenso durante a depuração atira-me de volta para o editor MQL sem sequer dar um erro. E quando eu apenas puxo a EA para um gráfico, ela nem sequer aparece nele. Ou seja, nem a depuração nem o lançamento da EA dá erros em qualquer lugar


Encontrei um erro, mas diz que a DLL não é permitida - ou seja, não a vejo. A questão é onde deve estar? (na versão 4 não precisava de ser sobreescrito em lado nenhum, estava por defeito na pasta Sistemas do Windows)

 
maxandsoft   :


Mas encontrei um erro a dizer que a DLL não é permitida - ou seja, não a consegue ver. A questão é onde deve ser localizado? (na versão 4 não precisava de ser sobreescrito em lado nenhum, estava por defeito na pasta Sistemas do Windows)

Tente permitir a importação a partir de uma DLL


 

Penso que um bom compilador difere de um mau compilador na medida em que pode abater códigos não viáveis de códigos viáveis. E isto é o principal. Depara-se frequentemente com coisas de cortar a respiração e que não existem em nenhum contexto técnico. Isto contribui para o desenvolvimento e refinamento dos meios expressivos da língua. E se tiver de se preocupar com o formato de introdução de dados - não é o compilador, é ... Na minha opinião, o compilador em MQL5 precisa de ser melhorado nada menos do que a interface do programa.

 
Rosh   :

Tente permitir a importação a partir de uma DLL

Agora isto é o que diz

2010.01.14:27:56 GetInternet (EURJPY,H1) Violação de acesso lido a 0x00040017 em 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll

 
maxandsoft   :

Agora isto é o que diz

2010.01.14:27:56 GetInternet (EURJPY,H1) Violação de acesso lido a 0x00040017 em 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll

Por favor anexar o código fonte. Pode ser enviada como uma mensagem privada.
 
mql5   :

Por favor anexar o texto fonte. Pode ser enviada como uma mensagem privada.

//+------------------------------------------------------------------+
//|                                                  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:
Agora é isto que diz.

2010.01.14:27:56 GetInternet (EURJPY,H1) Violação de acesso lido a 0x00040017 em 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll

Obrigado pela sua mensagem, o bug foi corrigido. Aguardar por uma actualização.
 

er... com a construção 239 o erro desapareceu, mas não exactamente...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Erro na obtenção de dados do nó!

Como se verificou, a razão para estas últimas foram as funções, substituindo-as por unicode

InternetOpenW() e InternetOpenUrlW()

Resolvi ligeiramente* o problema...

Só não utilizei o Expert Advisor, corrigi o código como um guião.


*ligeiramente, apenas porque foi deixado para derrotar a codificação ytf-8 do site:

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

 
kombat:

er... com a construção 239 o erro desapareceu, mas não exactamente...

2010.01.14 23:55:33 GetInternet (USDJPY,H1) Erro na obtenção de dados do nó!

Como se verificou, a razão para estas últimas foram as funções, substituindo-as por unicode

InternetOpenW() e InternetOpenUrlW()

Estou um pouco* fora do problema...

Só não utilizei o Expert Advisor, corrigi o código como um guião.


*ligeiramente, apenas porque foi deixado para derrotar a codificação ytf-8 do site:

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

 
maxandsoft:
à espera da nova construção