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

 
Alexey Kozitsyn:

Ошибка возврата не актуальных данных функцией SymbolInfoTick() - перескок тиков. Билд 1525 х64. Тест из индикатора, на советнике не проверял:


Уважаемые разработчики, давайте править тики! Код предоставлен, вот она - проблема, ничего искать не нужно, только отреагируйте и исправьте!

Пожалуйста, оформите ваше сообщение заявкой в сервисдеск.
[Удален]  
Alexey Da:
Пожалуйста, оформите ваше сообщение заявкой в сервисдеск.
#1664077
 

Ошибка при компиляции

static string text1 =
                      "ABC"
                      "DEF"; //нормально
static string text2 =
#ifndef MACRO
                      "ABC"
#endif
                      
"DEF"; //Error: 'DEF' - some operator expected
 

Неверный порядок вызова функций при смене периода графика

  • Путь расположения Индикатора:   \Indicators\Test_i.ex5
  • Путь расположения Эксперта:      \Experts\Test.ex5

Последовательность действий:

  1. Присоединить Эксперт 'Test.ex5' к графику M5 (символ GBPUSD)
  2. Сменить период графика на M15
  3. Сменить период графика на M30
  4. Удалить Эксперт с графика 

Результат:

                   #шаг 1: присоединение
I::I->M5
OnInit->M5
                   #шаг 2: смена периода M5 ->M15
I::I->M15
OnInit->M15
                   #шаг 3: смена периода M15->M30
I::I->M30
OnInit->M30
OnDeinit->M15:3
I::~I->M15
                    #шаг 4: удаление
OnDeinit->M5:1                            ##эта строка ожидалась на шаге #2 в таком виде: OnDeinit->M5:3
I::~I->M5                                 ##эта строка ожидалась на шаге #2
OnDeinit->M30:1
I::~I->M30

Ожидалось, что строки помеченные ## будут выведены на шаге #2 и кроме того ожидалась деинициализия по причине смены периода (REASON_CHARTCHANGE:3), а не удаления с графика (REASON_REMOVE:1). Другими словами шаг #2 ожидался схожим с шагом #3

//Test_i.mq5 //Индикатор
void Prn( string f, int i = -1 ) { Print( f, "->", StringSubstr( EnumToString( Period()), 7 ), (i == -1 ? "" : ":" + i )); }
struct I {
         I() { Prn( __FUNCTION__ ); }
        ~I() { Prn( __FUNCTION__ ); }
};
static const I i;
void OnInit()                     { Prn( __FUNCTION__ ); }
void OnDeinit( const int reason ) { Prn( __FUNCTION__, reason ); }
int OnCalculate( const int, const int, const int, const double& [] ) { return 0; }
//Test.mq5 //Эксперт
struct B {
         B();
        ~B();
        const int h;
        static const string name;
};
const string B::name = "Test_i";
B::B() : h( iCustom( NULL, 0, name ))
{
        if ( !ChartIndicatorAdd(    0, 0, h )    ) Print( "-1:", GetLastError());
}
B::~B()
{
        if ( !ChartIndicatorDelete( 0, 0, name ) ) Print( "-2:", GetLastError());
        if ( !IndicatorRelease( h )              ) Print( "-3:", GetLastError());
}
static const B b;
void OnInit() export {}
 

Глюки при установке индикаторов Билла Вильямса

ставлю фракталы - ставится

 

ставлю  АО - ставится ADX

 

билд 1031 

 
Vladimir Gribachev:

Глюки при установке индикаторов Билла Вильямса

ставлю фракталы - ставится

 

ставлю  АО - ставится ADX

 

билд 1031 

не только при установке этого индикатора, но время от времени и других.

перезагрузка терминала устраняет проблему.

заметил что начинается после тестирования.

 

Периодически мерцает (без перерисовки) поставочный индикатор ZigZag в MT5 bild 1525

 

Нестабильное выполнение

  • Путь расположения Индикатора: \Indicators\Test_i.ex5
  • Путь расположения Эксперта:    \Experts\Test.ex5
  • Путь расположения Скрипта:     \Scripts\Test_s.ex5

Последовательность действий: Несколько раз присоединить Скрипт 'Test_s.ex5' к графику M15 (символ EURUSD)

Результат:

2017.02.05 15:17:59.076 OnStart                  1-ый раз присоединили
2017.02.05 15:18:03.293 OnStart                  2-ой раз присоединили 
2017.02.05 15:18:07.760 OnStart                  3-ий раз присоединили  
2017.02.05 15:18:07.778 OnInit
2017.02.05 15:18:07.781 OnDeinit:1
2017.02.05 15:18:16.891 OnStart                  4-ый раз присоединили

Результаты присоединений отличаются. Ожидалось что не будут отличаться, кроме результат носит случайный характер: строка с OnInit\OnDeinit может появиться с 1-го раза, а может и с 10-го

//Test_i.mq5 //Индикатор
void OnInit()                    { Print( __FUNCTION__ ); }
void OnDeinit( const int reason ) { Print( __FUNCTION__, ":", reason ); }
int OnCalculate( const int, const int, const int, const double& [] ) { return 0; }
//Test_s.mq5 //Скрипт
#import "..\\Experts\\Test.ex5"
        void OnInit();
#import
void OnStart()
{
        Print( __FUNCTION__ );
        OnInit();
}

файл эксперта прикреплен (фактически используется как библиотека), код здесь https://www.mql5.com/ru/forum/1111/page1801#comment_4059227

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
Файлы:
Test.mq5  1 kb
 

Не понимаю, ошибка моя или терминала

На 5 знаке
void OnStart()
  {

double A=1.11111;
double B=1.11111;
double C=1.11111;

long CalcX=
NormalizeDouble(A,Digits)*MathPow(10,(Digits+1)*3-1)+
NormalizeDouble(B,Digits)*MathPow(10,(Digits+1)*2-1)+
NormalizeDouble(C,Digits)*MathPow(10,(Digits+1)*1-1);

Print ("CalcX=",CalcX);  
  }

 Принтует CalcX=111111111111111104 ожидаемое значение CalcX=111111111111111111

 
A100:

Неверный порядок вызова функций при смене периода графика

  • Путь расположения Индикатора:   \Indicators\Test_i.ex5
  • Путь расположения Эксперта:      \Experts\Test.ex5

Последовательность действий:

  1. Присоединить Эксперт 'Test.ex5' к графику M5 (символ GBPUSD)
  2. Сменить период графика на M15
  3. Сменить период графика на M30
  4. Удалить Эксперт с графика 

Покажите логи. Чтобы было видно время.

Тут остаётся добавить, что добавление индикатора на график и удаление индикатора с графика это - несинхронные операции.

Кроме того, при смене таймфрейма, индикатор не сразу выгружается с этого таймфрейма. При том что создаётся новая копия индикатора на новом таймфрейме. Я вижу у Вас принты в конструкторе-деструкторе, Вы предполагаете, что деструктор вызывается сразу? Нет, Вы ошибаетесь. Деструктор вызывается при выгрузке индикатора, а выгрузка индикатора производится только через несколько секунд после удаления индикатора