错误、漏洞、问题 - 页 2634

 

你好!

我想用一个批处理文件来运行一些MT4。

请告诉我如何做,为什么我的代码不起作用。

SET MY_PATH=C:\"Program Files (x86)"
%MY_PATH%\001\terminal.exe
TIMEOUT /T 160
%MY_PATH%\002\terminal.exe
TIMEOUT /T 160
%MY_PATH%\003\terminal.exe
TIMEOUT /T 160
%MY_PATH%\004\terminal.exe
TIMEOUT /T 160
%MY_PATH%\005\terminal.exe
TIMEOUT /T 160
%MY_PATH%\006\terminal.exe
TIMEOUT /T 160
%MY_PATH%\007\terminal.exe
TIMEOUT /T 160
%MY_PATH%\008\terminal.exe
TIMEOUT /T 160
%MY_PATH%\009\terminal.exe
TIMEOUT /T 160
%MY_PATH%\010\terminal.exe
TIMEOUT /T 160
%MY_PATH%\011\terminal.exe
TIMEOUT /T 160
%MY_PATH%\012\terminal.exe
TIMEOUT /T 160

它最多只能运行几个MT4,然后就挂了。

当然,也不乏有RAM的存在。

此外,我在不同的电脑上都试过了

 
Igor Zakharov:

不,不是这样的。

顺便说一下,服务器时间并没有在星期六停止。这里是相反的:在终端,服务器时间随着新报价的到来而更新。 例如,你在市场概览中只有一个符号打开(不仅在测试器中,而且在现实中)。而且有五秒钟没有刻度--所有这些时间服务器时间的计时器都不会移动。星期六也是如此:服务器时间正在运行,但终端不知道它,因为没有刻度。测试器将直接错过这段时间。

我已经检查过了。在测试器中,TimeLocal 在周末工作,TimeTradeServer 也是如此,但TimeCurrent 当然就不行了。没有滴答声,但服务器时间仍在那里。

int OnInit()
{
  Print(__FUNCTION__," TimeCurrent     ",TimeCurrent());
  Print(__FUNCTION__," TimeLocal       ",TimeLocal());
  Print(__FUNCTION__," TimeTradeServer ",TimeTradeServer());

    EventSetTimer(3*3600);
 return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTimer()
{
  Print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
  Print(__FUNCTION__," TimeCurrent     ",TimeCurrent());
  Print(__FUNCTION__," TimeLocal       ",TimeLocal());
  Print(__FUNCTION__," TimeTradeServer ",TimeTradeServer());
}
 
Igor Zakharov:

https://www.mql5.com/ru/forum/328008/page2#comment_14166682

一如既往,自行车。

这里的问题是为什么它没有通过。
毕竟,来自参数的变量,有初始值。

void MxResize(int row=1, int col=1)
{
   int A[row][col];    
      
}

而如果你用数字来指定测量的大小

void MxSize(int row=1, int col=1)
{
   int A[1][1];    
      
}

编译器跳过它,有什么诀窍?

开发商会对此发表意见吗?

 
Andrey Khatimlianskii:

为了什么目的?要在周末运行自动优化?那么从OnTick设置一个 距离为几分钟的定时器 就可以了。如果它起作用,那么蜱虫已经停止,你可以进行优化。

如果是出于其他目的,则要制定。

不,不是为了其他目的。

我认为TimeLocal在周末不工作,所以我这样做:我给TimeCurrent增加了几个小时,并检查了一周的日期。如果是星期六,那就开始优化。

当然我不能确定星期六的开始时间,因为市场在星期五或节假日的关闭方式不同。

另外,我还没有在任何地方找到确定市场是否关闭的方法。

 
Petros Shatakhtsyan:

不,不是为了任何其他目的。

我认为TimeLocal在周末不工作,所以我这样做:我给TimeCurrent增加了几个小时,并检查了一周的日期。如果是星期六,那就开始优化。

当然我不能确定星期六的开始时间,因为市场在星期五或节假日的关闭方式不同。

另外,我还没有在任何地方找到确定市场是否关闭的方法。

你试过吗?

符号InfoSessionTrade

SymbolInfoInteger(SYMBOL_TRADE_MODE)

他们中的一些人应该是好的

 
Aleksey Mavrin:

你试过吗?

符号InfoSessionTrade

符号信息eger(SYMBOL_TRADE_MODE)

其中一个应该是好的,我记得。

不,我没有。手册中没有说明如何确定市场是否已经打开。

问题是,当市场在周一 "开盘 "时,例如在一家经纪公司,报价在02:05开始进入,但交易在几分钟内不被接受,并显示 "市场关闭"。

我不知道这是否会有帮助。

符号_开始时间

工具的起始日期(通常用于期货)。

 
Petros Shatakhtsyan:

不,我没有。该指南没有具体说明如何确定市场是否开放。

问题是,当市场在周一 "开盘 "时,例如在一个经纪人那里,报价在02h.05开始进入,但再过几分钟就不接受交易了,它发出 "市场关闭"。

我不知道这是否会有帮助。

符号_开始时间

这是symbol_start_time(通常用于期货)。

SymbolInfoSessionTrade 显示交易何时开始,SymbolInfoSessionQuote 显示报价何时到达。

ap:这应该有帮助。

boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time//time
);

Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
Получение рыночной информации / SymbolInfoSessionQuote - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

一如既往,自行车。

这里的问题是为什么这样的条目不能通过。
在所有来自参数的变量都有初始值之后。

而如果你用数字来指定测量的大小

那么编译器就会跳过它,有什么好处呢?

开发商会对此发表评论吗?

罗曼,这是你第二次上当,因为你根本不愿意阅读文件

只有 整数 可以作为数组的索引。不允许超过四维数组。阵列元素的编号从0开始。一维数组的最后一个元素的编号比数组大小少1,即访问一个50个整数的数组的最后一个元素会看起来像a[49]。多维数组也是如此--一个维度的索引是从0到维度大小-1。例子中二维数组的最后一个元素看起来像m[6][49]。

静态数组不能被表示为时间序列,即ArraySetAsSeries() 函数设置从数组的末端到开始的数组元素的访问,不适用于它们。如果你想提供对数组的访问,比如在时间序列 中,使用一个动态数组对象

如果你在数组之外访问,执行子系统将产生一个关键错误,程序执行将停止。

而在mql4文档中,如果我没记错的话,它明确指出变量不应该被用作数组大小。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов...
 
Roman:

一如既往,自行车。

这里的问题是为什么这样的条目不起作用。
毕竟,来自参数的变量,有初始值。

而如果你用数字来指定测量的大小

然后编译器跳过它,这有什么诀窍?

开发商会对此发表意见吗?

我不是一个开发者,但我要发表意见。

对于静态数组,编译器必须在编译时已经在内存中分配了一定数量的字节。

如果我们在编译时不知道行和列,编译器要分配多少内存?

初始值只在调用时省略参数的情况下使用。实际参数只有在运行时才知道。

所以,不要耍花招,学好语言。

 
Aleksey Mavrin:

不,不是这样的,SymbolInfoSessionTrade 在有交易时显示,SymbolInfoSessionQuote 在有报价时显示

ap:这应该有帮助。

boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time//time
);

我认为这不是正确的。这里有一个特别的话题:https://www.mql5.com/ru/forum/40295

没有完全看完,尤其是它是为MQL4准备的。

我认为如果市场关闭,服务器不应该发送符号报价

我的机器人并没有真正受到影响,因为在市场 "开盘 "后,当刻度线进来时,它分析了趋势,它们的反转,这需要一些时间。在这段时间里,市场开放。

但如果我们想在这段时间内手动执行一些交易,它就会受到阻碍。如果执行是基于市场的,那么该请求在开市前是待定的,自然会以当前价格执行。

接收符号名称并返回真/假(市场开放/关闭)的直接函数显然没有。

Как правильно выяснить, что рынок закрыт? (mql4)
Как правильно выяснить, что рынок закрыт? (mql4)
  • 2015.01.31
  • www.mql5.com
Перевел советника в режим работы OnTimer() теперь когда рынок закрыт он этого не понимает и пытается торговать, в общем обращается к серверу и естественно получает ошибки и забивает логи журнала.