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

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

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

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(). Если посредством этой...
Murat Ishakov
6905
Renat Akhtyamov:

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

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

или

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

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

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

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

Yevgen Drumachyk
223

Всем привет!


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


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


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


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


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

Renat Akhtyamov
20248
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;
   }