程序库: MT4Orders - 页 22

 
fxsaber:

它不应该影响实时性。

不幸的是,对我来说确实如此。

有一个按钮可以显示/隐藏历史交易。当然,显示所有的交易是没有意义的,但您往往需要从成千上万的交易中,按符号、魔术师或评论 选择几十个 "您自己的 "交易。这时就需要刹车了。我们的想法是缓存 "自己的 "列表,只在有新的历史交易时才更新。

我还见过一个有故障的经纪人,他重新套用市场订单,而一个正常工作的智能交易系统可以在一小时内生成十万个重新套用的历史订单。然后,终端本身被挂....

 
fxsaber:

我需要一个 TS 的例子,在这个例子中,交易历史(而不是价格历史)会对回测时间产生重大影响。

幻想一下:根据历史交易建立平衡曲线,并根据曲线的斜率计算新交易的手数。

如果不保留缓存,每次交易前都要完全梳理历史记录。当然,在数组中收集余额值更简单,不需要存储所有交易。

 
Andrey Khatimlianskii:

不幸的是,我正在产生影响。

有一个按钮,按下它可以显示/隐藏历史交易。当然,显示所有的交易是没有意义的,但您往往需要从几千个交易中按符号、魔术师或评论 选择几十个 "您自己的 "交易。这时就需要刹车了。我们的想法是缓存 "我们的 "列表,只在有新的历史交易时才更新。

我理解这个问题。是的,早就应该在圣经系统中内置全面的缓存功能了。我得想想如何实现它。

我还见过一个出现故障的经纪商重新劫持市场订单,而一个正常运行的智能交易系统可以在一小时内生成十万个历史重新劫持订单。然后,终端本身被挂....

我想看看这个出色的经纪商。

 
Andrey Khatimlianskii:

幻想:通过历史交易构建平衡曲线,并根据曲线的斜率计算新交易的批量。

如果没有自己的缓存,每次交易前都要对历史记录进行全面梳理。当然,在这里将余额值收集到一个数组中会更简单,不需要存储所有的交易。

我也想过这样做,但这正是余额 VR 立即被提出来的原因。自相矛盾的是,似乎只有在战斗中才需要缓存交易历史(测试器不需要)。

 
fxsaber:

我理解这个问题。是的,仍然有必要在 biblah 中内置完整的缓存功能。我们必须考虑如何实现它。

理想情况下,为每笔交易存储一个DEAL_ENTRY_IN 票就足够了,因为 99% 的时间都在执行 GetPositionDealIn(以及其中的 HistorySelectByPosition)。


fxsaber:

希望看到这个伟大的经纪商。

PrimeXM-LiveUK.

这是一座通往盛宝银行的拐杖桥。

 
Andrey Khatimlianskii:

理想情况下,为每笔交易存储DEAL_ENTRY_IN 票就足够了,因为 99% 的时间都在执行 GetPositionDealIn(以及其中的 HistorySelectByPosition)。

与交易历史的哈希值比较在很久以前就已经完成了。因此,最好还是从通用方面入手。

作为学习这种方法的动力 - 它可以!夏天的某个时候,在一个安静的环境中....

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.08
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
 

来自 fxsaber 的更新:

// 30.05.2018
// 添加:利用交易历史加速工作,在绩效和
// 内存消耗--对 VPS 很重要。使用标准通用库。
// 如果不想使用 Generic 库,也可以使用旧的历史工作模式。
// 要做到这一点,您需要在 MT4Orders-library 之前写入以下行文
//
// #define MT4ORDERS_FASTHISTORY_OFF // 关闭快速交易历史记录功能 - 不使用通用库。

现在使用长历史记录时会自动运行!

版主,如果有机会,请将代码上传到数据库。

附加的文件:
MT4orders.mqh  77 kb
 
Andrey Khatimlianskii:

来自 fxsaber 的更新:

使用长历史记录时,现在只需飞行即可!

版主,如果可以,请将代码上传到数据库。

谢谢,以所有语言更新

 

我在 MT4 专家顾问中使用了这个库。


我发现了一个奇怪的现象:

如果在 Metaquotes 服务器(演示版)上进行测试,库可以正常工作。(例如,打开订单时)

如果在经纪商 fhtm demo- 上进行测试,函数 OrderSend 会打开一笔交易,但会返回错误。

      int ticket=OrderSend(_Symbol,type,lot,price,0,0,0,comment_,magic,0,clrDarkSlateBlue);

调试后,ticket =-1;

日志文本如下:

同时,日志还显示一切正常。

为什么会出现这样的问题?

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::AccountInfoString(ACCOUNT_SERVER) = ForexTimeFXTM-Demo01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_PING_LAST) = 55335

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.8875739644970414

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_BUILD) = 1835

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_X64) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Res = false

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS::OrderSendBug = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.action =TRADE_ACTION_DEAL(1)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.magic = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.order = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.symbol = EURUSD

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.price = 1.17681

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.stoplimit = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.sl = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.tp = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.deviation = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type = ORDER_TYPE_BUY (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_filling = ORDER_FILLING_FOK (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_time = ORDER_TIME_GTC (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.expiration = 1970.01.01 00:00:00

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.comment =

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position = 2210821620

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position_by = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode = 10009

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.deal = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.order = 2210821775

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.price = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.bid = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.ask = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.comment = Request executed 190.826 + 1000.396 ms

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.request_id = 154

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode_external = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS: not Sync with History! Please send logs to fxsaber!

2018.06.08 22:55:47.197 EA MT5 (EURUSD,M1) OrderSend 错误 4754



[删除]  
Rashid Umarov:

谢谢,已更新为所有语言

如果fxsaber 也能回来 就更好了。