Ошибки, баги, вопросы - страница 1783

 
A100:
Прикрепил к последнему сообщению с тем же именем. Фактически статический вызов заменен на динамический, а результат - принципиально другой
Спасибо, будем разбираться.

Похоже, что в первом случае злую шутку оптимизации сыграло отсутствие OnDeinit и статическая переменная, у который в результате забыли деструктор вызвать.
 
Alexey Kozitsyn:
Можете пояснить, про какие потоки идет речь? Разве все индикаторы одного символа не работают в одном потоке?
Да. Разные потоки будут если графику сменить символ, а не период.

Если сменить только таймфрейм, то новая копия индикатора будет рассчитываться в том же потоке, что и старая.

Но и тут нельзя закладываться на то, что команда Deinit на M5 будет обработана раньше, чем команда Init на M15
 
Slawa:
Если сменить только таймфрейм, то новая копия индикатора будет рассчитываться в том же потоке, что и старая.

Но и тут нельзя закладываться на то, что команда Deinit на M5 будет обработана раньше, чем команда Init на M15
Внесите в Справку, пожалуйста.
 
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) что она значит? и почему...
 

Ошибка при выполнении

Access violation at 0x030A00AD read to 0x00000005 in 'Test_s.ex5'

//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'11111111111111111111111111111111'

Увы, не ведом мне этот формат.

Эксперимент показал, что число в графическом буфере представлено по тем же правилом что и double - т.е. передать такое длинное число через графический буфер не представляется возможным - огорчило.

 
Rashid Umarov:
Посмотрите здесь - Выполнение программ

раткая сводка по программам на MQL5 приведена в таблице:

Программа

Выполнение

Примечание

Скрипт

В собственном потоке, сколько скриптов - столько потоков выполнения для них

Зацикленный скрипт не может нарушить работу других программ

Эксперт

В собственном потоке, сколько экспертов - столько потоков выполнения для них

Зацикленный эксперт не может нарушить работу других программ

Индикатор

Один поток выполнения для всех индикаторов на одном символе. Сколько символов с индикаторами - столько потоков выполнения для них

Бесконечный цикл в одном индикаторе остановит работу всех остальных индикаторов на этом символе

Спасибо, имелось в виду это

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Slawa, 2017.02.06 07:22

Но и тут нельзя закладываться на то, что команда Deinit на M5 будет обработана раньше, чем команда Init на M15

 
-Aleks-:

Увы, не ведом мне этот формат.

Эксперимент показал, что число в графическом буфере представлено по тем же правилом что и double - т.е. передать такое длинное число через графический буфер не представляется возможным - огорчило.

 Увы, в графическом буфере умещается только число из 10 знаков.

Кстати, почему там ограничение в 4 знака после запятой? 

 

Ошибка при компиляции (точнее отсутствие сообщения об ошибке)

class A {
public:
        int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
        C c;
        Print( c.i ); //Error: 'i' - protected member access error
        D d;
        Print( d.i ); //нормально???
}