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

 
fxsaber:

На этом идее и получился неудаляемый индикатор.

Это про организацию ссылки на "самого себя"? Так это не "получился", а вы сами так экзотично индикатор написали.

Если вас смущает такое поведение индикатора, то просто не делайте так.

А куда его добавлять и как это хотя бы теоретически может помочь. Это баг терминала. Причем серьезный баг. Потому как мне повезло - я вижу в логе, что индикатор работает. А сколько вот таких индикаторов без выводов в логи пашут в терминале, а Вы о них ничего совсем не знаете. Вот только темы поднимаются, а почему у меня CPU так грузится на пустом терминале?

Есть довольно много способов "выстрелить себе в ногу". Индикатор можно банально зациклить. И сделать это случайно гораздо проще, чем случайно написать вашу конструкцию. Это тоже "баг терминала"?

 
Anton:

Это про организацию ссылки на "самого себя"? Так это не "получился", а вы сами так экзотично индикатор написали.

Если вас смущает такое поведение индикатора, то просто не делайте так.

Есть довольно много способов "выстрелить себе в ногу". Индикатор можно банально зациклить. И сделать это случайно гораздо проще, чем случайно написать вашу конструкцию. Это тоже "баг терминала"?

Баг терминала, это когда возможно неснимаемое выполнение тяжелого индикатора без ведома пользователя на полностью пустом (без открытых чартов) терминале. И потом вопросы, почему Ваш терминал грузит CPU на ровном месте? Это баг! Внутреннего диспетчера задач нет, контроля никакого.
 
Anton:

Это про организацию ссылки на "самого себя"? Так это не "получился", а вы сами так экзотично индикатор написали.

Это не экзотика, а попытка самоидентифицироваться в индикаторе. Попытался более цивилизованно это сделать вылилась в облом
#property indicator_separate_window
#property indicator_buffers 0
#property indicator_plots   0

bool WhereIAm( long &Chart_ID, int &Sub_Window )
{
  const string PrevShortName = MQLInfoString(MQL_PROGRAM_NAME);  
  
  MathSrand((int)TimeCurrent());
  const string ShortName = (string)MathRand();
    
  IndicatorSetString(INDICATOR_SHORTNAME, ShortName);    
  
  Chart_ID = ChartFirst();

  Print(Chart_ID);
  
  while (Chart_ID > 0)
  {
    const int Total = (int)ChartGetInteger(Chart_ID, CHART_WINDOWS_TOTAL);
    
    for (Sub_Window = 0; Sub_Window < Total; Sub_Window++)
    {
      const int TotalIndicators = ChartIndicatorsTotal(Chart_ID, Sub_Window);
      
      for (int i = 0; i < TotalIndicators; i++)
        if (ShortName == ChartIndicatorName(Chart_ID, Sub_Window, i))
        {
          IndicatorSetString(INDICATOR_SHORTNAME, PrevShortName);
          
          return(true);
        }
    }
    
    Chart_ID = ChartNext(Chart_ID);
  }

  IndicatorSetString(INDICATOR_SHORTNAME, PrevShortName);
  
  return(false);
}


#define TOSTRING(A) #A + " = " + (string)A + " "

void OnInit( void )
{
  long Chart_ID;
  int Sub_Window;
  
  if (WhereIAm(Chart_ID, Sub_Window))
    Print(TOSTRING(Chart_ID) + TOSTRING(Sub_Window));
    
  return;
}
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[] )
{
  return(rates_total);
}
Так вот фигушки, потому что в Сервисдеске, мягко говоря, ввели в заблуждение.
 
fxsaber:
На MQL5 пишу не долго, ни разу не программист. Знал MQL4, теперь немного знаю MQL5. По какой причине почти каждый день сталкиваюсь с багами в MT5? Фактически, человек с улицы почти каждый день совершенно случайно находит баги! Это что за дела, почему так сыро? Тестеров нет совсем? Не совру сказав, что MT начинает раздражать. А еще больше раздражает осознание, что ни на чем другом я программировать и не умею.

в самом деле? С трудом верится :)

Попробуйте 

 
pako:

в самом деле? С трудом верится :)

Попробуйте 

Мне для трейдинга нужно only. Не получу никакого кайфа, если буду создавать терминал, тестер и прочее. У меня жизнь не измеряется сотнями лет.
 
fxsaber:
Это не экзотика, а попытка самоидентифицироваться в индикаторе. Попытался более цивилизованно это сделать вылилась в обломТак вот фигушки, потому что в Сервисдеске, мягко говоря, ввели в заблуждение.

Обратите внимание на пункт 2:

https://www.mql5.com/ru/docs/chart_operations/chartwindowfind

На счет ответа в сервисдеске - все люди иногда ошибаются.

Документация по MQL5: Операции с графиками / ChartWindowFind
Документация по MQL5: Операции с графиками / ChartWindowFind
  • www.mql5.com
Операции с графиками / ChartWindowFind - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
Мне для трейдинга нужно only. Не получу никакого кайфа, если буду создавать терминал, тестер и прочее. У меня жизнь не измеряется сотнями лет.
Взяли даты из мт , обработали в dll
 
pako:
Взяли даты из мт , обработали в dll
С языком нет проблем, проблемы с визуализацией (индикаторы) и датой (copyticks). На DLL это писать - удавиться.
 
Anton:

Обратите внимание на пункт 2:

https://www.mql5.com/ru/docs/chart_operations/chartwindowfind

На счет ответа в сервисдеске - все люди иногда ошибаются.

Спасибо, осталось разрешить вопрос с неоднозначностью ShortName.
 
fxsaber:
С языком нет проблем, проблемы с визуализацией (индикаторы) и датой (copyticks). На DLL это писать - удавиться.
В тиках есть рыба?
Причина обращения: