Работа с профилями

 
Всем привет. А возможно в mql4 программно сохранять или открывать конкретный профиль? Через WinApi?
 

используйте шаблоны

https://docs.mql4.com/ru/chart_operations/chartapplytemplate

или

https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples

ChartApplyTemplate - Операции с графиками - Справочник MQL4
ChartApplyTemplate - Операции с графиками - Справочник MQL4
  • docs.mql4.com
Применяет к графику указанный шаблон. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Если посредством этой...
 
Renat Akhtyamov:

используйте шаблоны

https://docs.mql4.com/ru/chart_operations/chartapplytemplate

или

https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples

Значит никак... жаль... Ну с шаблонами я знаю

Спасибо за ответ
 
Профиль - это набор chr-файлов. Читайте их и делайте, что хотите.
 
Я когда то писал скрипт, но он просто получал имя текущего профиля.
Файлы:
 
Murat Ishakov:
Всем привет. А возможно в mql4 программно сохранять или открывать конкретный профиль? Через WinApi?

насколько я понял при смене профиля убьётся советник потому что график к которому он прикреплён закрывается

 

Всем привет!


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


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


Сохранять шаблон не достаточно. Представьте, потом открыть 35 графиков и загрузить в каждый ранее сохранённый шаблон. Не практично! 


Есть ли всё же идеи как программно сохранять весь текущий профиль?


Заранее спасибо!

 
Johhny D:

Всем привет!


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


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


Сохранять шаблон не достаточно. Представьте, потом открыть 35 графиков и загрузить в каждый ранее сохранённый шаблон. Не практично! 


Есть ли всё же идеи как программно сохранять весь текущий профиль?


Заранее спасибо!

счас все настраивается программно

у меня примерно так в онинит:

PERIOD=Period();
SCALE=2;//масштаб графика от 0 до 7
string SYM[3]={"EURUSD","EURCHF","USDCHF"};
   handle=ChartID();
   ChartGetInteger(handle,CHART_COLOR_FOREGROUND,0,result);
   clrTXT=(color)result;
   prevChart=ChartFirst();   
   for(i=0; i<100; i++)
   {
      for(smb=0; smb<Symbols; smb++)
      {
         if(ChartSymbol(currChart)==SYM[smb])
         {
            WIN[smb]=currChart;
            //ChartSetDouble(currChart,CHART_SHIFT_SIZE,0);
            ChartSetSymbolPeriod(currChart,SYM[smb],PERIOD);
            ChartSetInteger(currChart,CHART_MODE,CHART_BARS);
            ChartSetInteger(currChart,CHART_SCALE,0,SCALE);
            ChartSetInteger(currChart,CHART_COLOR_BACKGROUND,clrBlack);
            ChartSetInteger(currChart,CHART_COLOR_FOREGROUND,clrGray);
            ChartSetInteger(currChart,CHART_COLOR_GRID,clrDarkSlateGray);
            ChartSetInteger(currChart,CHART_COLOR_VOLUME,clrNONE);
            ChartSetInteger(currChart,CHART_COLOR_CHART_UP,clrDarkSlateGray);
            ChartSetInteger(currChart,CHART_COLOR_CHART_DOWN,clrDarkSlateGray);
            ChartSetInteger(currChart,CHART_COLOR_CHART_LINE,clrNONE);
            ChartSetInteger(currChart,CHART_COLOR_CANDLE_BULL,clrDarkSlateGray);
            ChartSetInteger(currChart,CHART_COLOR_CANDLE_BEAR,clrDarkSlateGray);
            ChartSetInteger(currChart,CHART_COLOR_BID,clrNONE);
            ChartSetInteger(currChart,CHART_COLOR_ASK,clrNONE);
            ChartSetInteger(currChart,CHART_COLOR_LAST,clrNONE);
            ChartSetInteger(currChart,CHART_COLOR_STOP_LEVEL,clrNONE);
            ChartSetInteger(currChart,CHART_SHOW_TRADE_LEVELS,0,false);
            ChartSetInteger(currChart,CHART_DRAG_TRADE_LEVELS,0,false);
            ChartSetInteger(currChart,CHART_SHOW_ONE_CLICK,0,false);
            ChartSetInteger(currChart,CHART_SHOW_OBJECT_DESCR,0,false);
            ChartSetInteger(currChart,CHART_SHOW_OHLC,0,false);
            ChartSetInteger(currChart,CHART_SHOW_PRICE_SCALE,0,false);
            ChartSetInteger(currChart,CHART_SHOW_BID_LINE,0,false);
            ChartSetInteger(currChart,CHART_SHOW_GRID,0,false);
            ChartSetInteger(currChart,CHART_SHOW_DATE_SCALE,0,false);
            ChartSetInteger(currChart,CHART_AUTOSCROLL,true);
            ChartSetInteger(currChart,CHART_SHIFT,true);
            ChartSetInteger(currChart,CHART_MOUSE_SCROLL,false);
            ChartRedraw();
         }
      }
      prevChart=currChart;
      currChart=ChartNext(prevChart);
      if(currChart<0) break;
   }
Причина обращения: