#property script_show_inputs// m[a].Column[b]inputint A=11;
inputint B=3;
#define a A//#define b B // тут раскоментировать#define b 3// тут закоментировать// размер одного элемента 4 байтаstruct ArrWe
{
float Column [b];
};
voidOnStart()
{
ArrWe m[11]; // тут вместо "11" хочу использовать "a"Print("Размер структуры ArrWe ",sizeof(ArrWe));
Print("Количество элементов 1-го измерения ",sizeof(m)/sizeof(ArrWe));
Print("Количество элементов 2-го измерения ",sizeof(ArrWe)/4);
Print("Размер массива из 11 ArrWe ",sizeof(m));
}
也许,我们需要PositionTotal()?
而如果我问OrdersTotal() 目前有多少个订单,这与位置有什么关系?
而我在OnTrade()中要求提供这些信息,不能错过订单存在的时刻。
但事实上,事实证明,无论如何都会错过这个时机,请求要么在订单尚未出现时,要么在订单已经出现时被处理。
但在OnTrade()中没有检测到它存在的时刻,否则,OrdersTotal()就会说谎。
为了避免抱怨代码的不完善,这里是MetaQuotes的代码和我对专家顾问中的脚本的改进。
增加了OnTrade()函数,并将脚本代码放到OnInit()中。
没有一个印刷品显示有一个订单的信息。
我只能用一篇文章来回答这个问题MetaTrader 5中的贸易事件。
Заключение
MetaTrader 5交易和分析平台中的所有操作都是异步的,交易账户中的所有变化都是独立报告的。 因此,你不应该试图按照 "一个请求-一个交易事件 "的规则来跟踪一个事件。如果我们想确定交易事件发生后到底发生了什么变化,我们需要分析每次调用处理程序OnTrade时的所有交易、头寸和订单,并将它们与事件出现前的状态进行比较。我只能用MetaTrader 5中的交易事件 这篇文章来回答这个问题。
这意味着你要抓的订单可能已经被用HistoryOrdersTotal 搜索到了。我以这篇文章为指导。我想找出问题的答案:交易事件怎么可能错过下单但尚未执行的时刻?
交易事件在以下情况下由服务器产生
我怀疑OrderTotal()失败了。但我无法用这个功能来证明。
虽然作为一种选择,我不拒绝OrderTotal()所取的数据不在我认为的地方(即不在服务器上)。
我正在关注这篇文章。我想找出问题的答案:交易事件怎么会错过订单已经下达但尚未执行的时刻?
当贸易事件到达时,订单已经被下达和执行。因此,它不在活跃的订单中,并且已经被添加到历史中。
是的,是的,我的想法在这个答案上浮动。
我会这样回答,在下单的时候,服务器会产生一个 "交易 "事件,并将其发送到终端,当终端收到后,代码会对订单的数量 提出请求,但当这个请求传到服务器时,服务器已经执行了这个订单。
我没有任何其他解释。
交易事件在以下情况下由服务器产生。
我怀疑 OrderTotal()失败了。但我无法用这个功能来证明。
我是否正确地理解了活跃订单列表包括活跃挂单 和开仓订单?
这意味着什么呢?
...在 "专家 "选项卡中,出现了这个信息。这不是一个错误,是一个警告。关于什么的警告?
好吧,我没有说 "错误"。让它成为一个 "警告"。我已经用一个例子说了我的版本。再看一下这里的讨论(关于线路泄漏--读到最后):https://www.mql5.com/ru/forum/1111/page345#comment_54616
你可能要去找BOD,并说明你的情况细节。
发现了一个 "困惑"。
为什么编译器不喜欢第二个b 变量的定义?
而一般来说,我应该如何处理这种情况?