错误、漏洞、问题 - 页 2237

 
fxsaber:

有些角色有超时,有些则没有。我如何知道OrderSend(没有[无价])仍能感知的最大刻度线的年龄?

他妈的知道。

 
Stanislav Korotky:
FILE_SHARE_WRITE标志似乎在这种组合中起作用,但另一个问题出现了:这种特殊的写入方式有什么意义?从逻辑上讲,如果你启用了写分离,它应该正好加在写标志上。

这正是我所尝试的,它也给出了一个错误。

打开MetaTrader,找到我以前的例子,加入FILE_SHARE_WRITE(虽然那里不需要)--结果没有变化......也许是因为另一个原因,它对我不起作用。
 

关于交易、自动交易系统和测试交易策略的论坛

向AMP期货客户提供MetaTrader 5交易平台

fxsaber, 2018.07.23 22:34

即使Bid/Ask是TickSize的倍数,也不可能发出市场订单的例子

这里的最后价格不是TickSize的倍数。 它与市场订单无关,但OrderCheck仍然有问题 - 不允许做市场订单。

 
fxsaber:

有些角色有超时,有些则没有。我如何知道OrderSend仍然可以接受的最大年龄的勾选(没有[无价])?

碰巧的是,16秒前收到的最后一次勾选并不被认为与OrderSend 有关。这一定是一个错误,毕竟。

 
A100:
我启用了MetaTrader,找到了我的旧例子,添加了FILE_SHARE_WRITE(尽管我不需要它)--结果没有变化......也许是因为另一个原因,它对我不起作用。

另外,你可以把文件放在内存(MemMap)中,并通过semaphore在那里工作,然后通过semaphore把数据转储到文件中。

顺便说一下,这个方法会给你带来很大的速度提升

 
Konstantin:

另外,你可以把文件放在内存(MemMap)中,并通过semaphore在那里工作,然后通过semaphore把数据转储到文件中。

顺便说一下,这种方法会给你带来很大的速度优势

问题是,我有一个小的配置文件,每个EA在开始工作前都要读一遍--最简单的操作--见上面链接中的例子......而你说的semaphores)
 
A100:
事情是这样的,我有一个小的配置文件,每个EA在开始工作之前只需要读取一次--最简单的操作--见上面链接中的例子......你说semaphores)

我说,关于这个问题的文章有好几页,鉴于胡须的问题和修复它的开发人员显然不能或不想,因为我给你提供了其中一个,如果你不喜欢用winapi有什么问题))但这比什么都不做就写同样的东西要好,你可以用同样的信号来从物理文件中读取,同样的信号是忙碌的,需要等待的

 
Stanislav Korotky:

在这个简单的脚本中,先运行写=真,然后在另一个图表中运行写=假,我得到一个错误。


#property script_show_inputs

input bool writing = false;

int OnStart()
{
  int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:0));
  if(handle == INVALID_HANDLE)
  {
    Print("FileOpen failed: ", GetLastError());
    return INIT_FAILED;
  }
  
  if(writing) FileWriteInteger(handle, 0);
  
  Print("handle=", handle);
  
  while(!IsStopped())
  {
    Sleep(1000);
  }

  Print("Closing");
  FileClose(handle);

  return 0;
}

读取的开启器缺少FILE_SHARE_WRITE(允许写入)标志,因为有一个写入器。

这是一个系统限制(WinAPI)。

下面是正确的标志,你的代码将在这些标志下工作。

int handle = FileOpen("xyz.foo", FILE_READ|FILE_BIN|FILE_SHARE_READ|(writing?FILE_WRITE:FILE_SHARE_WRITE));
 
Ilyas:

这里有正确的标志,使你的代码工作。

请修复文件加载

关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

fxsaber, 2018.07.10 19:26

在FileLoad中出错。如果使用FILE_COMMON 标志,两个本地Agent试图通过FileLoad读取数据,其中一个Agent会搞砸。

可以在FileOpen中设置适当的标志,但在FileLoad中不能。因此,如果其他 FileLoad 读取该文件,请允许通过 FileLoad 访问该文件。

 
TheXpert:

为什么?)

因为在标志的列表中没有零

识别器

价值

描述

文件_阅读

1

文件被打开供阅读。这个标志在打开一个文件时使用(FileOpen())。FILE_WRITE和/或FILE_READ必须在文件被打开时被设置。

文件_写入

2

文件被打开以便写入。这个标志用于打开一个文件(FileOpen())。当一个文件被打开时,FILE_WRITE和/或FILE_READ标志必须被设置。

文件_BIN

4

二进制读写模式(没有从或到字符串的转换)。该标志用于打开文件(FileOpen())。

文件_CSV

8

csv类型的文件(所有写入的项目都转换为适当类型的字符串,unicode或ansi,并用分隔符分开)。这个标志在打开一个文件时使用(FileOpen())。

FILE_TXT

16

简单的文本文件(与csv相同,但没有分隔符)。这个标志在文件被打开时使用(FileOpen())。

文件_ANSI

32

ANSI字符串(单字节字符)。这个标志在打开文件时使用(FileOpen())。

文件_UNICODE

64

UNICODE字符串(两个字节的字符)。这个标志在打开文件时使用(FileOpen())。

文件_共享_阅读

128

多个程序的共享读取访问。这个标志在打开一个文件(FileOpen())时使用,但在打开一个文件时并不代替FILE_WRITE和/或FILE_READ的需要。

文件_共享_写入

256

这个标志用于多个程序共享写入权限。这个标志用于打开文件(FileOpen()),但在打开文件时不会替代FILE_WRITE和/或FILE_READ。

文件_重写

512

文件可以被FileCopy()FileMove() 覆盖。该文件必须存在或可写。否则,该文件不能被打开

文件_COMMON

4096

文件在所有客户终端的共享文件夹中的位置/Terminal\Common\Files。在打开文件(FileOpen())、复制文件(FileCopy()FileMove())和检查文件是否存在(FileIsExist())时使用该标志。


而如果开发商修复了所有的缺点,很多人就不会喜欢它。远远超过一半的代码将停止工作。

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...