错误、漏洞、问题 - 页 77

 
Interesting:

我没有理解错,ACCOUNT_TRADE_ALLOWED 返回的值是在服务器端生成的吗?

我的意思是交易员方面的任何行动(在终端)都不能改变这个值...

PS

但是,ACCOUNT_TRADE_EXPERT 不愿意改变,真的很奇怪......

那么终端菜单中的 "自动交易 "按钮和 "允许自动交易 "复选框有什么作用?

PPS

在旧版本中,所有的东西似乎都是正确的,一切都在工作,但在299中我不明白发生了什么......


谁在ACCOUNT_TRADE_ALLOWED和 ACCOUNT_TRADE_EXPERT中挖掘,为什么?


致开发者--要么是我疯了,要么是终端机里有"drubashka"...:)

而不是在最新的版本中,但至少在294年(谁让他们在那里?):(


一个小实验

让我们拿着终端发布的294号文件,在图表上放置一个专家顾问,控制AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)的返回值。

同时,在专家顾问参数和终端(自动交易按钮)中,自动交易被禁用。

因此,专家顾问的日志包含以下内容

在这里,我们可以看到专家顾问执行的行动日志(在初始化期间)和检查定时器中的ACCOUNT_TRADE_ALLOWED值。

我们对所有用颜色突出的符号感兴趣(在这之前,符号列表被加载到一个专门的类中)。

1.定时器返回的第一个结果是蓝色的(预计是假的)。

2.红色突出了下一个结果,这是计时器返回的结果,它突然变成了真的(我对BARABACA允许交易的内容非常感兴趣)。

3.我的类(事件OnEventTimer)对变化的反应是绿色的。

在这里,该班级 "理解 "自动交易是被允许的,并愉快地通报了这一情况(我不同意其乐观态度)。

此外,该信息显示了两次(虽然之前没有看到过)。该信息不能出现两次,因为OnEventTimer 事件包含一个检查,排除了这种可能性。

//Reading information on current parameters of the trade account
RealTradeAllowed = TradeAllowed(); //TradeAllowed
RealTradeExpert  = TradeExpert();  //TradeExpert
//Checking the status change of the use possibility automatic trade
  if(varTradeAllowed!=RealTradeAllowed)
  //Processing the event TradeAllowed
  {
  OnTradeAllowed(RealTradeAllowed);
  //We write current status of the RealTradeAllowed in variable
  varTradeAllowed = RealTradeAllowed;
  }

4. 然后计时器不断返回真,无论终端发生什么。

PS

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)的情况就更令人困惑了。无论终端和专家顾问设置如何,定时器都会返回状态。

我们需要它吗?

 
AM2:

我也对一个类似的问题感兴趣。如果我的账户中没有足够的资金来开仓,我应该怎么办?

1.停止专家顾问的交易。

2.禁止开仓。

3.从图表中删除专家顾问。

第3点可以用ExpertRemove来解决。我是这样解决第二项问题的。

1.我理解,禁止交易不是通过程序设置的,而是通过使用 "自动交易 "按钮和 "允许自动交易 "复选框,然后勾选ACCOUNT_TRADE_ALLOWED和ACCOUNT_TRADE_EXPERT。

你也可以通过向你的专家顾问添加必要的参数,然后控制这个参数来禁止交易(例如,禁止在真实账户上交易)。

初步控制是在专家顾问的初始化过程中进行的,而在工作模式下,它在OnTimer()或OnTick()中处理。

2.对开仓(平仓)可能性的控制必须考虑到当前的状态:连接、自动交易的可能性以及其他条件(例如,控制对该符号执行某种操作的可能性)。

对于控制所有的条件,最好是创建一个具有类似于bool结果的函数。

例如,像这样的人。

//Function IsTradePermit
bool IsTradePermit(bool TardeAllowed,bool Connect,double FreeMargin)
{
//----------------------------------------------------------------------------//
//Work variables
bool Result;
//----------------------------------------------------------------------------//

//Тут мы проверяем разрешена или нет торговля

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

3.只有在极端情况下(当它的工作无法完成或不再需要时)才应从图表中删除专家顾问。

这种情况是非常极端和罕见的。例如,如果没有找到专家顾问所需的一些文件,或者出现专家顾问无法解决的错误,就应该使用它。

PS

如果几个EA在不同的货币对上交易,但它们由一个EA管理(他决定在哪个货币对上放置EA和删除哪个),那么删除和放置EA也很有用...

 
Interesting:

谁挖掘了ACCOUNT_TRADE_ALLOWED和 ACCOUNT_TRADE_EXPERT,最重要的是,为什么?


开发人员--要么是我已经疯了,要么是终端"drubashki " 出现了......:)

而不是在最新的版本中,但至少在294年(谁让他们在那里?):(


一个小实验

让我们拿着终端发布的294号文件,在图表上放置一个专家顾问,控制AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)的返回值。

同时,在专家顾问参数和终端("自动交易 "按钮)中,自动交易被禁用。

因此,专家顾问的日志包含以下内容

在这里,我们可以看到专家顾问执行的行动日志(在初始化期间)和检查定时器中的ACCOUNT_TRADE_ALLOWED值。

我们对所有用颜色突出的符号感兴趣(在这之前,符号列表被加载到一个专门的类中)。

1.定时器返回的第一个结果是蓝色的(预计是假的)。

2.红色突出了下一个结果,这是由定时器返回的,它突然变成了真的(我对BARABACA允许交易的东西非常感兴趣)。

3.我的类(事件OnEventTimer)对这些变化的反应是绿色的。

在这里,该班级 "理解 "自动交易是被允许的,并愉快地通报了这一情况(我不同意其乐观态度)。

此外,该信息显示了两次(尽管之前没有看到过)。该信息不能出现两次,因为OnEventTimer 事件包含一个检查,排除了这种可能性。

4. 然后,无论终端发生什么情况,定时器都会不断返回真。

PS

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)的情况就更令人困惑了。无论终端和专家顾问设置如何,定时器都会返回状态。

我们需要它吗?

这里发生了一些奇怪的事情,ACCOUNT_TRADE_ALLOWED和ACCOUNT_TRADE_EXPERT是在经纪公司交易的权限。

按钮 "自动交易"。- TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)。

有MQL5InfoInteger(MQL5_TRADE_ALLOWED) - 允许/禁止专家/脚本的交易。

 
Swan:

奇怪的事情发生了,ACCOUNT_TRADE_ALLOWED和ACCOUNT_TRADE_EXPERT被允许在DC交易。

按钮 "自动交易"。- TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)。

还有MQL5InfoInteger(MQL5_TRADE_ALLOWED) - 允许/禁止专家/脚本进行交易。

我知道MQL5InfoInteger(MQL5_TRADE_ALLOWED),它运行良好,通常在专家顾问中被监控;MQL5_DLLS_ALLOWED 也被正常处理。

因此,按照我的理解。

TERMINAL_DLLS_ALLOWED 和 TERMINAL_TRADE_ALLOWED 是终端级别的权限。

MQL5_DLLS_ALLOWED和MQL5_TRADE_ALLOWED - 专家级别的权限。

ACCOUNT_TRADE_ALLOWED和ACCOUNT_TRADE_EXPERT - 服务器级别的权限。

然后我们将假设服务器将false改为true(尽管不清楚为什么这个消息会显示两次)。

 
斯旺,谢谢你的提示。都修好了。一切似乎都在正常工作...
 

下午好,我遇到了这个问题,我开始滚动小时图,到了某个日期就转到了日图,还有15分钟就转到了小时图或4小时图,根据文件规定删除了 存储历史的文件,但没有任何变化。

Документация по MQL5: Файловые операции / FileDelete
Документация по MQL5: Файловые операции / FileDelete
  • www.mql5.com
Файловые операции / FileDelete - Документация по MQL5
 
RomanIgorevi4:

下午好,我遇到了这个问题,我开始滚动小时图,到了某个日期就转到了日图,还有15分钟就转到了小时图或4小时图,根据文件规定删除了 存储历史的文件,但没有任何变化。

在这个日期之前,服务器上只有每日历史(没有分钟历史),所以所有时间段都显示为每日。
 

我发现,在使用测试器的优化算法时,HistoryDealsTotal() 有一个问题。

在正常的回测中,一切都很好,但在优化环节,在EA的初始化阶段,HistoryDealsTotal() 返回EA上一次运行的交易数量。后来,在交易阶段,HistoryDealsTotal() 又开始为0。

我通过以下代码片段遇到了这个问题。

    // constructor
    void MyClass() {
        _dealCnt = HistoryDealsTotal();  // this is causing trouble!
        _orderCnt = OrdersTotal();
        _positionCnt = PositionsTotal();
        _historyOrderCnt = HistoryOrdersTotal();
        ...
    }

绕过这个问题的方法是用0来代替初始化,但我还是希望能得到关于这个问题的官方答复,因为在我看来,一些内部变量被重置得太晚了。

提前感谢!

Documentation on MQL5: Trade Functions / HistoryDealsTotal
Documentation on MQL5: Trade Functions / HistoryDealsTotal
  • www.mql5.com
Trade Functions / HistoryDealsTotal - Documentation on MQL5
 

你好,请回答我的问题。

为什么我不能下载mt5,我下载了安装文件,启动到一半就停止了,跳转到另一个接入点,等等。

-阅读失败 [12002]

这就是故事,无论我重新安装多少次终端或Windows,但现在是第三天,它失败了。

 

请告诉我为什么这个结构总是返回0

MqlDateTime dt; Print(dt.min);

我怎么知道现在是多少分钟了?

MqlDateTime dt; if(dt.min)>33 ...