错误、漏洞、问题 - 页 427

 
uncleVic:

获取EMPTY_VALUE,因为如果文件没有打开,我们会返回它。如果得到0.0更方便,就返回0.0。

而且我需要归还一些东西。读取一个没有打开的文件是不好的。

关于开放性错误。这样写吧。

下面是测试器的截图。在终点站也是如此吗?


是的,在终端是相同的,并且错误这是它说的。

文件大小为20mb,约250万个数值。

在测试的最开始,在开放期间有20次成功。

在测试开始时,大约20次当我打开文件时,它成功地得到了我想要的值,然后错误5004不断出现--文件无法打开。

我试着用2mb的大约400k的值--它打开了,但没有人愿意得到更多,我看了看数据

任务管理器,2.5GB的内存足够了。(又有500MB免费的!)

 

CODE POLTERGHEIST已经在我的电脑上启动了,如果之前它没有打开一个 20mb的文件

目前,有一个38MB的开放文件的测试,有550万个值(2005年的数据)。

但自2001年以来--大约10百万的价值,并且大小低于65兆,它不会打开。这很有趣--也不清楚为什么?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
不幸的是,没有什么能对指定的卡片有所帮助了。如果是笔记本电脑,情况就没有希望了。否则,只要花1000-1500卢布,就可以买到一块相当强大的显卡,可以消除所有的性能问题。


因此,告诉我mt4 (mt5)通过DirectX 2D加速工作或什么 ...?


上述哪些参数对矢量图形加速很重要......或全部?

还有一个问题...嵌入在处理器中的HD2000的驱动程序,官方不支持 Windows Server 2008 r2 SP1 64位,----。

但只有Vista和7ka 64位 ....


这种不完整的兼容性可能有一些影响...?

(尽管驱动程序已经启动,工作甚至在高清游戏中运行...)


2.在Windows Server 2008 r2 SP1 64bit上具有2D视频硬件兼容性的mt4/mt5平台如何?


选择哪个厂家最好...辐射学...nVidia ?


对MT4/MT5进行的任何速度和适配器兼容性测试 ....?


谢谢。

 
Im_hungry:

是的,在终端中也是如此,并且出现了错误,这就是它所说的。

文件大小为20mb,约250万个值

在测试开始时,大约有20次在开场时有可能

在测试的开始阶段,打开文件大约20次是成功的,然后错误5004不断出现--文件无法打开。

我试着用2mb.大约40万个值--它打开了,但它不会打开更大的,我看了看数据

任务管理器,2.5GB的内存足够了(还有500MB的空闲!)。(又有500MB免费的!)

我没读多少,但突出显示的文字引起了我的注意......你在关闭文件吗?

你完全正确地处理了它的描述符吗?

 
AlexSTAL:

我没读多少,但突出显示的文字引起了我的注意......你在关闭文件吗?

一般来说,正确处理其描述符?

这个逻辑(从给出的代码判断)几乎是正确的。除了它在检查句柄后进行读写(然后也关闭文件)。

我认为这里的问题是不同的。

1.指标在每个tick上打开文件,写入数据,关闭文件。

2.专家顾问(我认为是在每个tick上)打开文件,读取数据,关闭文件。

由于它发生在不同的流程中,文件的大小越大,打开的文件被指标打开的可能性就越大。由于 没有使用 开放标志FILE_SHARE_READ ,所以会有一些后果

在我看来,对问题的处理可以如下。

1) 在OnInit中用 FILE_SHARE_READ标志打开文件(包括在指标和专家顾问中)

2.写完后在指标中调用 FileFlush(handle)。

3.在OnDeinit中关闭该文件。

像这样。


Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
tester_el_pro:


因此,告诉我mt4 (mt5)通过DirectX 2D加速工作或什么 ...?


终端使用正常的Windows GDI,需要一个2D加速器。

在选择卡片时,获得任何外部的3D,即使是最低的价格水平 - 它将是足够的。
而且你不必比较基本的显卡能力点。

 
uncleVic:

这个逻辑(从给出的代码来看)几乎是正确的。除了它在检查句柄后进行读写(然后也关闭文件)。

在我看来,解决问题的方法可以是这样的。

1.在OnInit中用 FILE_SHARE_READ标志打开文件(包括在指标和专家顾问中)

2.写完后在指标中调用 FileFlush(handle)。

3.在OnDeinit中关闭该文件。

像这样。


谢谢你在未来的实时使用中这样做

我将在未来使用您的建议来处理专家顾问和指标的文件。

 
AlexSTAL:

我没读多少,但突出显示的文字引起了我的注意......你会关闭文件吗?

你对描述符的处理完全正确吗?

是的,当然--它看到了文件,但由于打开错误5004而不想读它。
 
uncleVic:

这个逻辑(从给出的代码判断)几乎是正确的。除了它在检查句柄后进行读写(然后也关闭文件)。

我认为这里的问题是不同的。

1.指标在每个tick上打开文件,写入数据,关闭文件。

2.专家顾问(我认为是在每个tick上)打开文件,读取数据,关闭文件。

由于它发生在不同的流程中,文件的大小越大,打开的文件被指标打开的可能性就越大。由于 没有使用 开放标志FILE_SHARE_READ ,所以会有一些后果

在我看来,对问题的处理可以如下。

1) 在OnInit中用 FILE_SHARE_READ标志打开文件(包括在指标和专家顾问中)

2.写完后在指标中调用 FileFlush(handle)。

3.在OnDeinit中关闭该文件。

大约如此。



对不起,指标的工作是不同的。

1.在终端测试之前,我运行指标

2.它保存了每个条形的时间和它的相关值

3.我把文件放在测试者文件夹中,它应该是C:{Program Files\MetaTrader 5\tester\Agent-127.0.0.1-3000\MQL5\Files。

4.我启动了一个专家顾问,它通过打开条形图来工作 - 自2005年以来,它读取了所有记录的数据

它读取了(38Mb),但自2002年以来,它没有读取(67Mb)。

 

试图在同一工具中记录相同的内容,但在mt4中。

我把bin文件转移到mt5的测试文件夹中 - 没有任何文件

它不能打开--错误5004,在MT5中它仍然可以打开一些东西。


我在MT4指标中实现了数据记录(所有数据都正确写入),具体如下。

      Corr = GetCorrelation();
      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);
      Buffer[Pos] = NormalizeDouble(Corr,3);
//------
      datetime bar2 = iTime(Symbol1, 0, Pos);
      Print("Buffer[Pos]...",Buffer[Pos],"...bar2...",bar2);
      handle= FileOpen("kor.bin", FILE_BIN|FILE_READ|FILE_WRITE, ";");
      if(handle<1) Print("can't open file error-",GetLastError());
      if (handle>=1)
       {
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,bar2,DOUBLE_VALUE); 
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,Buffer[Pos],DOUBLE_VALUE); 
        FileClose(handle);
       }
//------
      CurrPos++;

但在mt5中由EA读取的数据仍然是一样的。

double proverka()
{
 if (FileIsExist("kor.bin",0)==true) Print("ФАЙЛ ОБНАРУЖЕН = ...");
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle < 0) Print("-----Неоткрывается :- Почему? Потому что произошла ошибка ",GetLastError());
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   //Print("1...kor=",kor,"N=",N,"file=",file,"New=",New);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     Print("2...ss=",ss);
     return (ss);
     break;
    }
   if (New < kor)
    {
     Print ("New=",New,"kor=",kor);
     return (0.0);
     break;
    }
  } 
 Print("ВСЕЕЕЕЕЕ",kor);
 FileClose(handle);
 return (kor);
}
//=

mt5中的EA有可能打开 mt4中创建的文件 吗?