错误、漏洞、问题 - 页 1783

 
A100:

问题:OnDeinit->M5何时被调用?

我的答案是:永远不可能

您的上述答案:异步且有延迟

30多分钟过去了,OnDeinit->M5仍未被调用。

现在让我们改变专家顾问的代码(稍微改变一下顺序)...

结果。

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5:1 立即调用,没有延迟!
2017.02.06 01:31:48.409 OnInit->M15

附加的文件:
Test.mq5  2 kb
 
A100:

30多分钟过去了,仍然没有OnDeinit->M5的调用。

现在让我们改变专家代码(稍微改变一下顺序)......

请附上代码。
 
Renat Fatkhullin:
请附上代码。
附在上一个同名的帖子后面。实际上,静态调用已经被动态调用所取代,结果是根本不同的
 
A100:
附在上一个同名的帖子后面。实际上,一个静态调用被一个动态调用所取代,结果是根本性的不同
谢谢你,让我们研究一下。

似乎在第一种情况下,没有OnDeinit和静态变量,我们忘记了在结果中调用析构器,对优化起了坏作用。
 
Alexey Kozitsyn:
你能澄清我们在谈论的是哪条线吗?同一符号的所有指标不是都在同一个线程中起作用吗?
是的,不同的线程将是如果图表改变符号,而不是时间框架。

如果我们只改变时间框架,那么指标的新副本将与旧副本在同一线程中计算。

但我们也不能依赖M5上的Deinit命令会比M15上的Init命令更早被处理的事实。
 
Slawa:
如果我们只改变时间框架,那么指标的新副本将与旧副本在同一线程中计算。

但这里我们不能依赖M5的Deinit命令会比M15的Init命令更早被处理。
请把它添加到帮助中,谢谢。
 
Slawa:

你好。

请密切关注信息https://www.mql5.com/ru/forum/166358/page4#comment_4064293

这一点非常重要。

有一个新的错误1158,是不是在帮助中没有?

cannot set millisecond timer (500)
cannot set millisecond timer (500)
  • www.mql5.com
Здравствуйте, клиент прислал лог файл, в котором я увидел такую запись cannot set millisecond timer (500) что она значит? и почему...
 

执行错误

在'Test_s.ex5'中,在0x030A00AD处读到0x00000005的访问违反。

//Test_s.mq5 //Скрипт
class A {};
#import "TestA.ex5"
        A *error();
#import
class B { protected:
    B( const string& name ) : name( name ) {}
    virtual int g( const MqlParam& param[] ) const { return ::IndicatorCreate( NULL, PERIOD_CURRENT, IND_CUSTOM, ::ArraySize( param ), param ); }
        const string name;
bool f( int h ) const
{
        if ( ::ChartIndicatorAdd( 0, 0, h ) )
                return true;
        error();
        return false;
}
};
class C : protected B { protected:
    C( int h, string name ) : B( name ), h( h ) { f( this.h ); }
        const int h;
};
class D : C { public:
    D( string path ) : C( g( path ), path ) {}
int g( const string& path )
{
        MqlParam param[ 1 ];
        param[ 0 ].type         = TYPE_STRING;
        param[ 0 ].string_value = path;
        return g( param );
}
};
void OnStart() { D d( "Test_i" ); }
//TestA.mq5
#property library
class A {};
A * error() export { return NULL; }

所有文件(除了指标)都位于MQL5文件夹/Scripts/。

指标本身不是必需的,但它可以下载,例如从https://www.mql5.com/ru/forum/1111/page1803#comment_4063671

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber:
请把它放在帮助中。
看这里 -运行中的程序

关于MQL5中的方案摘要,见下表。

节目

执行

注意事项

脚本

在它自己的线程中,有多少个脚本就有多少个执行线程

循环的脚本不能打断其他程序的工作

专家

在它自己的线程中,有多少专家--就有多少执行线程给他们。

循环的专家不能扰乱其他程序的工作

指标

一个符号上的所有指标有一个执行线程。有 多少个指标符号 - 就有多少个执行线程

一个指标中的无尽循环将停止该符号上的所有其他指标

 
A100:

它们被写成B'111111111111111111111111'的形式。

唉,我对这种格式不熟悉。

实验表明,图形缓冲器中的数字与双倍数的表示规则相同--即不可能通过图形缓冲器传递这么长的数字--令人沮丧。

原因: