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

 

Здравствуйте,

Недавно потребовалось запустить свой давно отлаженный скрипт, который создает чарт и загружает на него шаблон с советником, на Windows 10.

Вот простой код:

  p_chart_id = ChartOpen(in_chart_fin, PERIOD_M1);
  if (p_chart_id == 0)
  {
    Print("Chart opening is failed: ", GetLastError());
    return (false);
  }
  
  if (!ChartApplyTemplate(p_chart_id, "its_coverage_chart.tpl"))
  {
    Print("Chart applying template is failed: ", GetLastError());
    return (false);
  }

Все отлично функционировало на предыдущих версиях Windows, но здесь какое-то странное поведение:

1) Функция ChartApplyTemplate возвращает true, значит файл с шаблоном видит (пробовал изменить имя файла на другое - пошла ругань)

2) Загрузка шаблона напрямую из терминала прямо на график выполняется отлично

3) Даже если убираю из шаблона советник, оставляю только внешние изменения, то все равно шаблон визуально не загружается из скрипта, ничего не происходит

В чем может быть проблема?

Заранее благодарен за любые комментарии.

p.s. Может быть у кого-то установлена Windows 10, попробуйте пожалуйста, повторить то, что я описал. 

 

а что возвращает в принт в журнал? Вы же не просто так в скрипте сделали строчку 

 Print("Chart applying template is failed: ", GetLastError()); 

 
Vladon:

а что возвращает в принт в журнал? Вы же не просто так в скрипте сделали строчку 

 Print("Chart applying template is failed: ", GetLastError()); 

Скорее всего предыдущую ошибку или 0, если ChartApplyTemplate вернула true
 

искал искал так и не нашел как решить проблему , тоже не применяется шаблон ChartApplyTemplate , куда его только не клал, чарт открывается а шаблон не прилепливается

0	21:45:49.881	NeiroBulls_TrendMonitor.1.1 USDJPY,M1: не грузим шаблон
0	21:45:49.881	NeiroBulls_TrendMonitor.1.1 USDJPY,M1: Chart applying template is failed: 4051
0	21:45:49.881	NeiroBulls_TrendMonitor.1.1 USDJPY,M1: Файл 'neirotrend.tpl' не найден в папке  C:\Users\tor\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E

код 

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam )  // параметр события типа string
{
       if(id==CHARTEVENT_OBJECT_CLICK && (StringSubstr(sparam,0,7)=="NB_gr1_" || StringSubstr(sparam,0,7)=="NB_gr2_")){
         string find = StringSubstr(sparam,7,6);
         int chartid = ChartOpen(find,60);
         //Print(id," | ",lparam," | ",dparam," | ",sparam," || ",find,"  chartid=",chartid);
         if(chartid!=0){
            ResetLastError();
            if(!ChartApplyTemplate(chartid,"neirotrend.tpl")){ Print("не грузим шаблон"); }else{ Print("Шаблон загружен"); }
            Print("Chart applying template is failed: ", GetLastError()); 
            if(!FileIsExist("\\templates\neirotrend.tpl")){ Print("Файл 'neirotrend.tpl' не найден в папке  "+TerminalInfoString(TERMINAL_DATA_PATH)); }
            ChartRedraw(); 
         }
    }
 return;
}

 куда кидать шаблон то или как понять что его не может найти 

ошибка 4051 не найдена в мануале 

 
Juriy Iziymov:

искал искал так и не нашел как решить проблему , тоже не применяется шаблон ChartApplyTemplate , куда его только не клал

справку читать пробовали?
Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
Операции с графиками / ChartApplyTemplate - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
o_O:
справку читать пробовали?

читал, видимо чего то не допонимаю

0       23:01:41.345    NeiroBulls_TrendMonitor.1.1 USDJPY,M1: не грузим шаблон
0       23:01:41.345    NeiroBulls_TrendMonitor.1.1 USDJPY,M1: Chart applying template is failed: 4051

 что б к имени не придираться переписал так , но не пашет 

0       23:05:03.364    NeiroBulls_TrendMonitor.1.1 USDJPY,M1: не грузим шаблон
0       23:05:03.364    NeiroBulls_TrendMonitor.1.1 USDJPY,M1: Chart applying template is failed: 5020
0       23:05:03.364    NeiroBulls_TrendMonitor.1.1 USDJPY,M1: Файл 'neirotrend.tpl' не найден в папке  C:\Users\tor\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E

 

int chartid = ChartOpen(find,60);
         //Print(id," | ",lparam," | ",dparam," | ",sparam," || ",find,"  chartid=",chartid);
         string file = "templates\\neirotrend.tpl";
         ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
         if(chartid!=0){
            ResetLastError();
            if(!ChartApplyTemplate(chartid,file)){ Print("не грузим шаблон"); }else{ Print("Шаблон загружен"); }
            Print("Chart applying template is failed: ", GetLastError()); 
            if(!FileIsExist(file)){ Print("Файл 'neirotrend.tpl' не найден в папке  "+TerminalInfoString(TERMINAL_DATA_PATH)); }
            ChartRedraw(); 
         }

что не так, по всякому вроде писал уже и и в темплайтес файл лежит и в files и в экспертах ни от куда не берется

 

Упростил до безобразия. Всё работает:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.01"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   long chartid=ChartOpen("EURUSD",PERIOD_H1);
   if(chartid!=0)
     {
      ResetLastError();
      if(!ChartApplyTemplate(chartid,"neirotrend.tpl"))
        {
         Print("не грузим шаблон");
         Print("Chart applying template is failed: ",GetLastError());
        }
      else
        {
         Print("Шаблон загружен");
        }
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 
Juriy Iziymov:

что не так, по всякому вроде писал уже и и в темплайтес файл лежит и в files и в экспертах ни от куда не берется

вы пытаетесь обмануть документацию или себя?

в примерах все работает.

читайте справку внимательно.

 

Домовёнок благодарю, вся ошибка в том что  не 

int chartid = ChartOpen(find,60);

а всего то навсего 

long chartid = ChartOpen(find,60);

на вашем примере понял 

Благодарю всех! заработало

 
Juriy Iziymov:

Домовёнок благодарю, вся ошибка в том что  не 

а всего то навсего 

на вашем примере понял 

Благодарю всех! заработало

:)
Причина обращения: