Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запустили испанскую и португальскую версии сайта. Оцени сам!
yuri_zavyalov
106
yuri_zavyalov 2015.02.13 09:40 

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

Недавно потребовалось запустить свой давно отлаженный скрипт, который создает чарт и загружает на него шаблон с советником, на 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, попробуйте пожалуйста, повторить то, что я описал. 

Vladislav Andruschenko
91953
Vladislav Andruschenko 2015.02.27 12:25  

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

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

A100
3939
A100 2015.02.27 21:04  
Vladon:

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

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

Скорее всего предыдущую ошибку или 0, если ChartApplyTemplate вернула true
Yurij Izyumov
16784
Yurij Izyumov 2016.03.02 19:47  

искал искал так и не нашел как решить проблему , тоже не применяется шаблон 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 не найдена в мануале 

o_o
Модератор
23694
o_o 2016.03.02 19:49  
Juriy Iziymov:

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

справку читать пробовали?
Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
Операции с графиками / ChartApplyTemplate - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Yurij Izyumov
16784
Yurij Izyumov 2016.03.02 21:04  
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 и в экспертах ни от куда не берется

Vladimir Karputov
Модератор
46052
Vladimir Karputov 2016.03.02 21:24  

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

//+------------------------------------------------------------------+
//|                                                         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();
     }
  }
//+------------------------------------------------------------------+
o_o
Модератор
23694
o_o 2016.03.02 21:34  
Juriy Iziymov:

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

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

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

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

Yurij Izyumov
16784
Yurij Izyumov 2016.03.02 21:45  

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

int chartid = ChartOpen(find,60);

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

long chartid = ChartOpen(find,60);

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

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

Vladimir Karputov
Модератор
46052
Vladimir Karputov 2016.03.02 21:47  
Juriy Iziymov:

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

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

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

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

:)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий