模仿EA/指示器的刻度线 - 页 2

 
Meat:

你的代码,首先,不只是模拟一个tick,而是强制图形在每个tick上更新相应的历史记录。 你有时会看一下日志文件吗? 在你有空的时候,看一下,看看那里发生了什么事。并估计一天左右后会有什么。更不用说对你的系统和互联网通道的负荷了。

如果我们不在你的代码中更新图表,而是模拟tick,就会导致循环(即指标会不停地启动),相应地,终端会挂起。

为什么我需要在不加载历史记录的情况下进行更新?图表的强制刷新是对tick的模仿。

下面是2500次后的日志。

00:51:32 Check_UpdateChart EURUSD,M1:加载成功
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: 删除

没有什么是悬而未决的。仿真是为了让指标循环。换句话说,它自己触发了。
 
Zhunko:

为什么不加载历史记录就需要更新?强制更新图形是勾选仿真。

下面是2500次后的日志。

00:51:32 Check_UpdateChart EURUSD,M1:加载成功
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: 删除

没有什么是悬而未决的。仿真是为了让指标循环。就是说,它自己开始。


我以为我写得很清楚:"log 日志"。那么你为什么给我看专家的日志呢? 显然,我是对的,你从来不看那里。 如果你有一半的硬盘被这些日志填满,我也不会感到惊讶 :)

历史更新和tick模拟是不同的事情。 从服务器传入的tick不会更新历史(即以前的条形图)。 如果是这样的话,终端将浪费大量的流量和资源。

因此,不清楚为什么你需要在每个tick 上更新它,这将把IndicatorCounted()重置为零,因此需要在每个tick上检查整个历史。这是在浪费大量的资源。

 
Meat:

从服务器传来的刻度线并不更新历史记录(即以前的条形图)。 如果它们这样做,终端将占用大量的流量和资源。

例如,如果1bar=2ticks ))))),该怎么做?在我的情况下,滴答更新历史?
 
IgorM:

后放置在

我在日志中得到了它。

23:39:01 test EURUSD,H1: loaded successfully
23:39:01 test EURUSD,H1: PostMsgAddr =1977398342
23:39:01 test EURUSD,H1: initialized
23:39:01 test EURUSD,H1: cycle completed....

是的,不清楚发生了什么事......那就试试这个。在导入 部分#import"user32.dll" 添加一个函数。

CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);

并在SetMyTimer函数的末尾添加一行:CallWindowProcA(code,0,0,0,0)。

并用一些平行运行的指标检查此刻是否产生了一个刻度。

 
solar:
例如,如果我有1个柱子=2个刻度,怎么办?)))))在我的情况下,滴答更新历史?
当然,目前的酒吧总是在更新,但我们谈论的是一般的历史。
 
Meat:


我写得很清楚:"日志"。那么你为什么给我看专家顾问的日志呢? 显然我是对的,你从来不看那里--如果你一半的硬盘已经塞满了这些日志,我一点也不奇怪 :)

不要混淆这两个概念。历史更新和滴答模拟是不同的事情。从服务器传来的刻度线并不更新历史记录(即以前的条形图)。 如果它们这样做,终端将消耗大量的流量和资源。

因此,不清楚为什么你需要在每个tick上更新它,这将把IndicatorCounted()重置为零,因此需要在每个tick上检查整个历史。这是在浪费大量的资源。

日志也是空的,但有一些其他原因。我在调换历史记录后使用控制台清洁剂。我有自己的日志。

MT4的日志对我来说一点都不麻烦。Metacquotes多次表示,伐木是最后要做的事。这不是一个优先事项。它不消耗任何资源。它只是需要及时清理,仅此而已。

至于IndicatorCounted()...我不使用它。我的指标是空框,用于从专家顾问中提取信息。我认为在MT4中使用指标是有害的。接口线程很慢,它们的工作速度比专家顾问系统慢3倍。

突出的当然是正确的,但值得如此费力地进行分离吗?

这里是415的更新日志。

03:00:44自定义指标 Check_UpdateChart EURUSD,M1:加载成功
03:00:46 历史中心:同步'EURUSD1
03:00:46 历史中心:在'EURUSD1'中导入了2个柱子
03:00:47 历史中心:同步 "EURUSD1"。
03:00:47 历史中心:在'EURUSD1'中导入了2个柱子
03:00:47 历史中心:同步 "EURUSD1"。
03:00:47 历史中心:在'EURUSD1'中导入了2个柱子
03:00:48 历史中心:同步 "EURUSD1"。
03:00:48 历史中心:在'EURUSD1'中导入了2个柱子
03:00:48 历史中心:同步 "EURUSD1"。
03:00:49 历史中心:在'EURUSD1'中导入了2个柱子
03:00:49 历史中心:同步 "EURUSD1"。
03:00:49 历史中心:在'EURUSD1'中导入了2个柱子
03:00:50 历史中心:同步 "EURUSD1"。
03:00:50 历史中心:在'EURUSD1'中导入了2个柱子
03:00:51 历史中心:同步 "EURUSD1"。
03:00:51 历史中心:在'EURUSD1'中导入了2个柱子
03:00:51 历史中心:同步 "EURUSD1"。
03:00:52 历史中心:在'EURUSD1'中导入了2个柱子
03:00:52 历史中心:同步 "EURUSD1"。
03:00:55 历史中心:在'EURUSD1'中导入了2个柱子
03:00:55 历史中心:同步 "EURUSD1"。
03:00:55 历史中心:在'EURUSD1'中导入了2个柱子
03:00:55 历史中心:同步 "EURUSD1"。
03:00:55 历史中心:在'EURUSD1'中导入了2个柱子
03:00:55 历史中心:同步 "EURUSD1"。
03:00:56 历史中心:在'EURUSD1'中导入了2个柱子
03:00:56 历史中心:同步 "EURUSD1"。
03:00:57 自定义指标Check_UpdateChart EURUSD,M1:移除
03:00:59 历史中心:在'EURUSD1'中导入了2个柱子
03:01:01 MetaTrader build 438停止了

对我来说,在周末测试指标的性能似乎并不重要。工作结束后可以手动清理日志。

但在start() 的末尾插入一行代码比插入你的代码更容易。将其复杂化是没有意义的。

 

我的操作系统是XP - 似乎可以工作 - 然后它使终端崩溃 ....

无论是在指标代码中,还是在EA代码中,或者本身,结果都是一样的,终端在大约15-50秒后崩溃......

因此,你有一些问题...

但这并不是一个坏主意...

 

有没有办法让它类似于一个指标?

仅仅通过将光标指向我想看到指标读数的时间点(在该点)?

 

Zhunko,好吧,如果所有的东西都是非标准的(你自己的日志,你自己的指标实现等),那么你为什么要开始这整个谈话? 我们实际上是在讨论专门与MT4的工作,而不是与我们自己的发展。

在我的第一篇文章中,我特别指出,如果任务是在没有外部链接的 情况下进行,即实现一个只使用系统库的自给自足的专家顾问/指标,那么我的代码将是有用的。 而如果你使用自己的开发,那么它对你就不适用。

总的来说,我不明白为什么我必须 "在工作后手动清理日志",如果不把它弄得乱七八糟会更容易。毕竟,据我所知,你在DLL中实现了你的发展。那么是什么阻止了你在那里设置同样的定时器,正如我在这里建议的那样。但由于某些原因,你更喜欢用手鼓跳各种舞蹈和清理日志。 我的代码困扰着你,而你却懒得每天清理日志 :)

 
elmucon:

我的操作系统是XP - 似乎可以工作 - 然后它使终端崩溃 ....

无论是在指标代码中,还是在EA代码中,或者本身,结果都是一样的,终端在大约15-50秒后崩溃......

因此,你有一些问题...

但这并不是一个坏主意...


是的,也许这有点牵强。 我不是什么汇编专家,所以不要太苛责我 :) 我会试着找出问题所在的。