Как программно из скрипта на график добавить индикатор?

 

Подскажите, пожалуйста, как программно из скрипта на график добавить индикатор?

 
Никак.
 

есть один способ, правда я его не пробовал на практике :)

назначаете хот-кей на индикатор а в скрипте эмулируете нажатие соответствующих клавиш через DLL

 
nickbilak:

есть один способ, правда я его не пробовал на практике :)

назначаете хот-кей на индикатор а в скрипте эмулируете нажатие соответствующих клавиш через DLL


Интересный вариант, правда несколько неудобный :) Но все равно спасибо, если уж совсем некуда будет деваться - попробую.

 

Средствами MQL эту задачу решить нельзя. Но вам дело сказали, какие тут неудобства. Только не совсем понятно зачем это вам надо.

 

Теперь как то можно?

Ато удалить и посчитать можно, а добавить нельзя. 

 
Можно программно применить шаблон в котором имеется нужный индикатор.
 

у меня вроде, получилось !!!


//+------------------------------------------------------------------+
//|                                         AddChartIndicatorAdd.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//---
input string   Inpshort_name = "Obj LeM Brain";   // INDICATOR_SHORTNAME
//---
int indicator_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   AddIndicator();
  }
//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
bool AddIndicator()
  {
//--- выводимое сообщение
   string message;
//--- проверим на совпадение символ индикатора и символ графика
   if(_Symbol!=_Symbol)
     {
      message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
      message=message+"\r\n";
      message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(_Period!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   if(indicator_handle==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  Создаем индикатор MACD");
      indicator_handle=iCustom(_Symbol,_Period,Inpshort_name);
      if(indicator_handle==INVALID_HANDLE)
        {
         Print("Не удалось создать индикатор MACD. Код ошибки ",GetLastError());
        }
     }
//--- сбросим код ошибки
   ResetLastError();
//--- накладываем индикатор на график
   Print(__FUNCTION__,"  Добавляем индикатор MACD на график");
   Print("MACD построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор MACD
   int subwindow=(int)ChartGetInteger(0,0);
   PrintFormat("Добавляем индикатор MACD на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
     {
      PrintFormat("Не удалось добавить индикатор MACD на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
//--- добавление индикатора на график прошло успешно
   return(true);
  }
//+------------------------------------------------------------------+
Снимок3
Файлы:
 
mihim:

Подскажите, пожалуйста, как программно из скрипта на график добавить индикатор?

ChartApplyTemplate() может помочь

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