Как получить список всех экспертов, которые работают в терминале на текущий момент? - страница 3

 
fxsaber #:

Исходник такого скрипта.


Если коротко:

Я правильно понял, что выгрузка избранного эксперта в вашем коде также происходит с помощью закрытия графика, только перед этим сохраняется шаблон графика в отдельный файл, а затем график сразу пересоздается по этому шаблону, но уже, понятно, без эксперта? 

 
leon_17 #:

Я правильно понял, что выгрузка избранного эксперта в вашем коде также происходит с помощью закрытия графика, только перед этим сохраняется шаблон графика в отдельный файл, а затем график сразу пересоздается по этому шаблону, но уже, понятно, без эксперта? 

График не закрывается и не пересоздается. Делается это.

 
leon_17 #:

Идея с закрытием графика с экспертом кажется замечательной! Сам бы не додумался, большое всем спасибо! 

p.s. интересно будет потестить и то действительно ли выгрузит эксперт редактирование шаблона графика...

Выгрузит без проблем

string  tplName;
long chartID;
/*******************Expert initialization function*******************/
int OnInit()
 {
  chartID = ChartID();
//---
  tplName = "Game_100.tpl";
  ushort Bytes[];
  string chName;
  if(ChartSaveTemplate(chartID, "\\Files\\"+tplName) && FileLoad(tplName, Bytes)) // Это подсказка от fxsaber
   {
    chName = ShortArrayToString(Bytes);                       // получим строку из массива
    int pozNumb = StringFind(chName, "<expert>");             // найдём тег начала описания эксперта
    int pozEnd = StringFind(chName, "</expert>", pozNumb+8);  // найдём тег завершения описания эксперта
    ArrayRemove(Bytes, pozNumb, pozEnd-pozNumb+9);            // удалим из массива всё описание эксперта
    FileSave(tplName, Bytes);                                 // сохраняем шаблон без эксперта
    ChartApplyTemplate(chartID, "\\Files\\"+tplName);
//---
   } 
}

И затем ничто не мешает удалить шаблон, если он потом не будет нужен.

 
Alexey Viktorov #:

Выгрузит без проблем

И затем ничто не мешает удалить шаблон, если он потом не будет нужен.

Спасибо за пример! Да, мудрёный способ, я думал достаточно будет просто сохранить и загрузить заново шаблон избранного графика, а там оказывается с шаблона еще и эксперта вырезать нужно. При этом... проверил сейчас ваш код, на графике остаются некоторые графические объекты эксперта (Label)... и глобальные терминальные переменные... 


fxsaber #:

График не закрывается и не пересоздается. Делается это.

Спасибо за библиотеку! Надо будет поразбираться...

 
leon_17 #:

Спасибо за пример! Да, мудрёный способ, я думал достаточно будет просто сохранить и загрузить заново шаблон избранного графика, а там оказывается с шаблона еще и эксперта вырезать нужно. При этом... проверил сейчас ваш код, на графике остаются некоторые графические объекты эксперта (Label)... и глобальные терминальные переменные... 

Изначально вопрос был исключительно об удалении советника с графика. Чтобы удалить графику и GV нужно дописать эти действия.

 
Alexey Viktorov #:

Изначально вопрос был исключительно об удалении советника с графика. Чтобы удалить графику и GV нужно дописать эти действия.

Согласен, дописать удаление графики проблем нет, правда терминальные переменные похоже для каждого отдельного эксперта (чужого) выделить невозможно.

p.s. Еще раз отдельное спасибо за пример кода! Поэкспериментировал с ним. Кратко, понятно и не только про выгрузку эксперта...