文章 "在 MetaTrader 5 中创建和测试自定义交易品种" - 页 5

 
fxsaber:

从名称上看,有一个不同的函数。用 Replace 函数代替它并不真正理解 TicksAdd 的作用:抛出相应的 Tick 事件。


我没有看到 TicksAdd,我认为它最初是 TicksAdd,但在与 RatesUpdate(既添加数据又删除数据)类比后更名为 TicksAdd,这样就不会有差异,而且他们也做对了。

,我用 Replace 代替它是因为 Update 函数不起作用(如果执行脚本,会看到同样的情况,Common/Files 中的文件会在)。

附加的文件:
 
AndreyKrivcov:

我的 intellescence 无法看到 TicksAdd

更新至 1700 版。

 
AndreyKrivcov:

但我肯定错了一件事--该函数可能可以工作,但无法记录我要求的所有刻度(我试图记录的刻度太多了)。

它不是用来记录的。

关于交易、自动交易系统和测试交易策略的论坛。

Beta 版 MetaTrader 5 第 1700 版:MetaEditor 和合成工具中的项目

MetaQuotes Software Corp., 2017.12.05 14:22

  1. 终端:添加了为自定义工具抛出实时报价的功能。现在,您可以在 MQL5 中编写一个 Expert Advisor,该 Expert Advisor 将抛出给定自定义工具的任何报价。新的CustomTicksAdd 函数用于此目的。
    int  CustomTicksAdd(
       const string           symbol,       // 字符名
       const MqlTick&         ticks[]       // 包含要应用于用户仪器的刻度线数据的数组
       );
    CustomTicksAdd 函数允许您翻译来自经纪商服务器的刻度线。数据不会直接记录到 ticks 数据库中,而是发送到 "Market Watch(市场观察)"窗口。在该窗口中,终端会将点数保存到数据库中。如果一次调用传输的数据量很大,功能会改变其行为以节省资源。如果传输的刻度超过 256 个,数据将被分成两部分。第一部分(较大的部分)直接写入刻度线数据库(如 CustomTicksReplace 所做的)。第二部分包括最后 128 个刻度点,传输到 "市场观察 "窗口,然后由终端保存到数据库中。
 
fxsaber:

它不是用来记录的。


可能是因为版本的原因,我现在用的是旧版本,对吧。但对我来说,我并不需要实时抛出刻度线,我只需要在测试器中使用它们,仅此而已。

 
AndreyKrivcov:

可能是因为版本的原因吧,我现在用的是旧版本。但对我来说,我不需要实时抛出刻度线,我只需要在测试器中使用它们,仅此而已。

这就是 Replace 的作用。

 
导出刻度线历史记录时,CSV 文件的容量会大幅增加,其格式包含精确到毫秒的每个刻度线信息。根据这些数据,终端将生成分钟历史记录,并用于构建所有其他时间框架。

同志们,我应该按什么键才能使终端从tick 历史记录 生成分钟历史记录

 

日安

我请求您的帮助:

我每天都会将自定义字符写入 CSV("前天",持续时间为 24 小时)。

然后,我通过 CustomRatesDelete 删除历史记录中相应的部分(删除持续时间为 24 小时的 "前天")。

然后通过 ChartRedraw重新绘制图表

结果,我期望看到的历史记录文件 ***.hcc 比删除部分历史记录之前的文件要小。

然而,它却一直在增长。

重新加载终端也没有任何效果。

如何才能节省历史数据的空间,并使其与图表中的数据相匹配?

 
vestrub:

因此,我希望看到的 ***.hcc 历史文件小于删除历史部分之前的文件。

不过,它仍在继续增长。

*.tkc 和 *hcc 的增长是一个长期存在的问题。也许他们会在新版中解决这个问题。

 
fxsaber:

*.tkc 和 *hcc 的增长是一个长期存在的问题。也许他们会在新版中修复这个问题。

我的理解是否正确,节省磁盘空间的唯一选择将是

1. 将所有历史记录保存到 SCV。

2. 然后删除 *hcc,重启终端从头开始编写历史记录。

?

 
vestrub:

我的理解是否正确?

1. 将所有历史记录保存到 SCV。

2. 然后删除 *hcc,重启终端从头开始编写历史记录。

?

这不是保存。CSV 一天占用的空间比 hcc 一周占用的空间还大。