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

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

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

Rashid Umarov
Админ
16853
Rashid Umarov  
Никак.
Mykola Bilak
585
Mykola Bilak  

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

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

mihim
14
mihim  
nickbilak:

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

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


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

Mike
281
Mike  

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

eevviill7
19966
eevviill7  

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

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

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

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


//+------------------------------------------------------------------+
//|                                         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
Mislaid
662
Mislaid  
mihim:

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

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

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