在MQL5中一起学习和写作 - 页 5

 
maxandsoft :

问题是,当我在调试期间编译它时,它把我扔回了MQL编辑器,甚至没有给出一个错误。当我把EA拉到一个图表上时,它甚至不显示在图表上。 也就是说,无论是调试还是启动EA,都不会出现错误。


我发现了一个错误,但它说DLL是不允许的--也就是说,我没有看到它。问题是它应该在哪里?(在第4版中,它不需要被覆盖到任何地方,它默认在Windows的系统文件夹中。)

 
maxandsoft   :


但我发现一个错误,说DLL是不允许的--也就是说,它看不到它。问题是它应该设在哪里?(在第4版中,它不需要被覆盖到任何地方,它默认在Windows的系统文件夹中。)

尝试允许从DLL导入


 

我认为好的编译器和坏的编译器之间的区别在于,你可以用它来从可行的代码中剔除不可行的代码。而这是最主要的事情。你经常会遇到一些令人叹为观止的事情,在任何技术背景下都不存在。这有助于发展和完善语言的表达手段。如果你不得不担心以何种格式输入数据--这不是编译器的问题,而是......。在我看来,MQL5的编译器需要改进的地方不亚于程序界面。

 
Rosh   :

尝试允许从DLL导入

现在它是这样说的

2010.01.14:27:56 GetInternet (EURJPY,H1) Access violation read to 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

 
maxandsoft   :

现在它是这样说的

2010.01.14:27:56 GetInternet (EURJPY,H1) Access violation read to 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

请附上源代码。可以作为私人信息 发送。
 
mql5   :

请附上源文本。可以作为私人信息发送。

//+------------------------------------------------------------------+
//|                                                  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:
现在它是这样说的。

2010.01.14:27:56 GetInternet (EURJPY,H1) Access violation read to 0x00040017 in 'C:\Users\FujitsuAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries\winet.dll'

谢谢你的留言,该错误已被修复。等待更新。
 

呃......。构建239后,错误消失了,但还没有完全消失......。

2010.01.14 23:55:33 GetInternet (USDJPY,H1) 从节点获取数据时出错!

事实证明,后者的原因是函数,用unicode取代它们

InternetOpenW()和InternetOpenUrlW()。

我有点*卸货的问题...

只是我没有使用专家顾问,我把代码改成了一个脚本。


*轻微的,只是因为它是为了打败网站的ytf-8编码而留下的。

<th width="50">&nbsp;Ўs±Ñ‰械ÐœЏ&nbsp;/th>

 
kombat:

呃......。构建239后,错误消失了,但还没有完全消失......。

2010.01.14 23:55:33 GetInternet (USDJPY,H1) 从节点获取数据时出错!

事实证明,后者的原因是函数,用unicode取代它们

InternetOpenW()和InternetOpenUrlW()。

我已经稍微*解决了这个问题...

只是我没有使用专家顾问,我把代码改成了一个脚本。


*轻微的,只是因为它是为了打败网站的ytf-8编码而留下的。

<th width="50">&nbsp;PЎѕs±Ñ‰械ÐœЏ&nbsp;</th>

 
maxandsoft:
等待新的建设