错误、漏洞、问题 - 页 541

 
220Volt:

为了不至于毫无根据,我模拟了我上面提到的情况(我不能引用,因为我无法脱离引用:) )。

我在M15上运行了以下代码。

当脚本运行时,我连接和断开了互联网。图片显示了 结果。

我明白了。我们将纠正它。
 

这是在servicedesk还是代码中的一个错误?

该指标应从收盘价往下建立5个点的红色水平。

但只显示了两个缓冲区(尽管它计算了所有的缓冲区),而且不是红色,而是绿色(在编译黑色之后)。

请检查是否只是我一个人的问题,或者是否只是我一般的问题......?


#define  N      5
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   5
#property indicator_color1 clrRed
#property indicator_color2 clrRed
#property indicator_color3 clrRed
#property indicator_color4 clrRed
#property indicator_color5 clrRed

#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3

#property indicator_type1 DRAW_COLOR_ARROW
#property indicator_type2 DRAW_COLOR_ARROW
#property indicator_type3 DRAW_COLOR_ARROW
#property indicator_type4 DRAW_COLOR_ARROW
#property indicator_type5 DRAW_COLOR_ARROW

//------------------------------------------------------------------    class CClrHist
class CClrHist
{
public:
        double buf[];
        CClrHist() { };
};

CClrHist bufs[N]; // массив буферов

//------------------------------------------------------------------    OnInit
int OnInit()
{
        for (int i=0; i<N; i++) SetIndexBuffer(i, bufs[i].buf, INDICATOR_DATA);
        return(0);
}
//------------------------------------------------------------------    OnCalculate
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
        for (int i=0; i<N; i++) for (int j=rates_total-1; j>=0; j--)
        {
                bufs[i].buf[j]=close[j];
                bufs[i].buf[j]-=i*100*Point();
        }
        return(rates_total);
}
 
sergeev:

这是在servicedesk还是代码中的一个错误?

该指标应从收盘价往下建立5个点的红色水平。

但只显示了两个缓冲区(尽管它计算了所有的缓冲区),而且不是红色,而是绿色(在编译黑色之后)。

请检查是否只是我一个人的问题,或者是否只是我一般的问题......?

#property indicator_type1 DRAW_ARROW
#property indicator_type2 DRAW_ARROW
#property indicator_type3 DRAW_ARROW
#property indicator_type4 DRAW_ARROW
#property indicator_type5 DRAW_ARROW
 
masharov:

......我认为标准库是 理想的代码,应该作为其他人的榜样。

我只能说,最好能尽快摆脱这种想法。

我并不反对标准库,但在没有验证的情况下就相信别人的代码 "使编写程序更容易"?- 除了在初步起草专家顾问的阶段。可以说是为了加快常规进程。

 

我在日志中经常收到这样的信息:异常终止。有没有人注意到什么时候可能出现这样的冲突?

我还找不到原因。我唯一能说的是,如果我让终端闲置一段时间,或者当时只是使用另一个程序(如Excel),我正在测试的专家顾问在我回到终端后开始不正确地工作。也就是说,交易操作 的进行没有任何问题。唯一的问题是在与交易和信息面板的互动方面。似乎OnChartEvent()出现了故障。在面板之间的切换开始变得很慢,好像这个过程非常忙于其他事情。我不使用永恒的循环。另外,此刻的CPU负载并不表明有东西被积极使用。重新编译专家顾问有助于。在重新编译的时候,在EA被反初始化之前,日志中出现异常终止 信息。然后,程序被成功初始化,一切都像时钟一样开始工作。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
tol64:

我在日志中经常收到这样的信息:异常终止。有没有人注意到什么时候可能出现这样的冲突?

我还找不到原因。我唯一能说的是,如果我让终端闲置一段时间,或者当时只是使用另一个程序(如Excel),我正在测试的专家顾问在我回到终端后开始不正确地工作。也就是说,交易操作 的进行没有任何问题。唯一的问题是在与交易和信息面板的互动方面。似乎OnChartEvent()出现了故障。在面板之间的切换开始变得很慢,好像这个过程非常忙于其他事情。我不使用永恒的循环。另外,此刻的CPU负载并不表明有东西被积极使用。重新编译专家顾问有助于。在重新编译的时候,在EA被反初始化之前,日志中出现异常终止 信息。然后,程序被成功初始化,一切都像时钟一样开始工作。

我们是否在循环中使用IsStopped()?

你可以在这里这里这里 读到此类问题。你还应该考虑代码中哪里存在 "瓶颈"...

据我所知,这个错误发生在"早期 "程序终止 的情况下(当图表/终端被关闭或EA被重新编译时),在这个过程中,一些工作由EA完成。

 
Interesting:

我们是否在循环中使用IsStopped()?

在这里这里这里 阅读类似的问题。还要考虑到代码中的瓶颈问题...

据我所知,这个错误发生在程序 "提前 "终止 的情况下(当图表/终端关闭或专家顾问重新编译时),而专家顾问执行了一些工作。

谢谢你。这些链接显示了同样的情况。 我在循环中从不使用 IsStopped(),只使用breakcontinuereturn

到目前为止,我还没有看到IsStopped()和程序变慢之间的任何联系。毕竟,如果程序会冻结,就不会进行其他操作。还是我搞错了?

还有一件事。IsStopped()在你需要强行停止程序的执行时非常有用,例如,关闭终端或从图表中删除专家顾问。而我需要继续使用专家顾问。

 
tol64:

谢谢你。这些链接显示了同样的情况。 我在循环的任何地方都没有使用 IsStopped(),只有breakcontinuereturn

到目前为止,我还没有看到IsStopped()和程序变慢之间的任何联系。如果程序会冻结,就不会进行其他操作。还是我搞错了?

还有一件事。IsStopped()在你需要强行停止程序的执行 时非常有用,例如,关闭终端或从图表中删除专家顾问。而我需要继续使用专家顾问。

IsStopped(),它是关于错误的。为什么终端/专家会变慢,甚至没有人猜测(不知道运行时间条件,也不知道专家顾问的情况)。
 
tol64:

我在日志中经常收到这样的信息:异常终止。有没有人注意到什么时候可能出现这样的冲突?

我还找不到原因。我唯一能说的是,如果我让终端闲置一段时间,或者当时只是使用另一个程序(如Excel),我正在测试的专家顾问在我回到终端后开始不正确地工作。也就是说,交易操作 的进行没有任何问题。唯一的问题是在与交易和信息面板的互动方面。似乎OnChartEvent()出现了故障。在面板之间的切换开始变得很慢,好像这个过程非常忙于其他事情。我不使用永恒的循环。另外,此刻的CPU负载并不表明有东西被积极使用。重新编译专家顾问有助于。在重新编译的时候,在EA被反初始化之前,日志中出现异常终止 信息。然后,程序被成功初始化,一切都像时钟一样开始工作。

异常终止 意味着你对程序进行了非自然的干扰,即在运行时重新编译,这导致了程序的中断和重新初始化。

如果你在运行时遇到除以0或中断程序,也会发生同样的情况,但如果程序被重新调整,你就不会得到这样的条目。这就是为什么建议你检查IsStopped ,以便程序可以在自己返回时退出,而不是被迫退出。

 

是否有计划增加以下项目。

双击图表上的一个头寸 ,调出头寸管理菜单。

突出显示一次关闭的多个仓位

????

谢谢你。