堡垒。执法问题 - 页 9

 
Renat:
这是1060号终端,服务器仍然是1035号。
明白了))。
 

下午好,Renat!

在设计一个 "紧急 "订单跟踪模式时(以防OnTradeTransaction事件没有到来)。

我检测到一个MARKET订单在历史上出现的时间超过了3秒。

CN      0       07:10:26.424    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:26
CE      0       07:10:26.424    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
CG      0       07:10:27.554    History_bug (Eu-3.15,H1)        Время ожидания составило = 1138 мсек
NN      0       07:10:27.554    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
JD      0       07:10:29.328    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:29
DK      0       07:10:29.328    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
EP      0       07:10:30.596    History_bug (Eu-3.15,H1)        Время ожидания составило = 1279 мсек
RE      0       07:10:30.596    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
KJ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:41
LQ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
GJ      0       07:10:43.123    History_bug (Eu-3.15,H1)        Время ожидания составило = 2012 мсек
HK      0       07:10:43.123    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
IQ      0       07:10:46.176    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:46
LG      0       07:10:46.176    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
DD      0       07:10:48.193    History_bug (Eu-3.15,H1)        Время ожидания составило = 2028 мсек
LQ      0       07:10:48.193    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
EG      0       07:10:58.440    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:58
NL      0       07:10:58.440    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
NN      0       07:11:01.531    History_bug (Eu-3.15,H1)        Время ожидания составило = 3104 мсек
PG      0       07:11:01.531    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
DM      0       07:11:06.359    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:06
NR      0       07:11:06.359    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
RG      0       07:11:09.649    History_bug (Eu-3.15,H1)        Время ожидания составило = 3292 мсек
HN      0       07:11:09.649    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
LS      0       07:11:19.636    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:19
GH      0       07:11:19.636    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
RQ      0       07:11:23.808    History_bug (Eu-3.15,H1)        Время ожидания составило = 4180 мсек
PF      0       07:11:23.808    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833674
QE      0       07:11:27.865    History_bug (Eu-3.15,H1)        Время ожидания составило = 4056 мсек
HN      0       07:11:27.865    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833674
HD      0       07:11:30.832    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:30
IK      0       07:11:30.832    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
LP      0       07:11:34.962    History_bug (Eu-3.15,H1)        Время ожидания составило = 4134 мсек
DG      0       07:11:34.962    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833675
CD      0       07:11:39.018    History_bug (Eu-3.15,H1)        Время ожидания составило = 4057 мсек
JN      0       07:11:39.018    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833675

产生该日志的EA代码见附件。

首先,等待时间是1000毫秒,然后是2000、3000,最后是4000毫秒。

每期发送2条指令(开仓-平仓)。

对于一个MARKET订单来说,这不是太长了吗?

P/S演示开放(终端构建1060)。

附加的文件:
History_bug.mq5  10 kb
 

我还没有运行这段代码,但是源码看到了HistorySelect 中结束日期不正确的经典错误。

每一个第一次编程的人都用错误的日期调用这个函数,不断地咬着历史的尾巴,发现 "历史上有一个很长的交易"。

 

这可能是功能,因为 "每个第一 "都会犯一个 "典型错误"。

在该文件中,有一个试图读取从某个日期到当前时刻的历史。你能告诉我怎么做才正确,不至于 "在故事的结尾吃零食"?

 

错误在于,人们没有考虑到当前的时间是什么,而把错误的日期从错误的来源放了进去。

指定一个已知的遥远的日期作为结束日期,而不是过时的serverTime就足够了。

 
Renat:

错误在于,人们没有考虑到当前的时间是什么,而把错误的日期从错误的来源放了进去。

把已知的远期日期作为结束日期,而不是过时的serverTime就足够了。

也许帮助,其中的例子,也可以在那时得到纠正?

https://www.mql5.com/ru/docs/trading/historyselect

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

Renat,你用OnTradeTransaction()操作了吗?

不,不幸的是,非常忙。

请在我们的MetaQuotes-Demo服务器上自己试试。

 

来自雷纳特的短语

指定一个已知的远期日期作为结束日期,而不是过时的serverTime就足够了。

我的理解是,你应该指定明天的日期(或更遥远的日期)作为结束日期,你就会很高兴。

 
Renat:

错误在于,人们没有考虑到当前的时间是什么,而把错误的日期从错误的来源放了进去。

指定一个已知的遥远的日期作为结束日期,而不是过时的serverTime就足够了。

而 "过时的 "TimeTradeServer() 作为起始日期可以吗?
 
Mikalas:
而作为一个起始日期,"过时的 "TimeTradeServer() 也适合吗?

开始和结束日期的设定都必须意识到错误,并留有强制性的余地。这至少是负N秒和正N秒。

TimeTradeServer()不是一个精确的时间,而是完全由进入市场概览的价格刻度来更新。


如果你在历史样本中突然没有数据,那么99%的错误是在查询边界。