Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2639

 
Galim_V #:
void DeleteObjects() { long de=0; int size=ArraySize(arrChar),f=0; Print("size = ",size); do { de=arrChar[f]; int objects=ObjectsTotal(de,-1); for(int i=0;objects-1>=i; i++) { string name=ObjectName(i);

В Deinit вызывается DeleteObjects

Вы удаляете с нулевого до ObjectsTotal

А нужно наоборот с ObjectsTotal до 0 


Проще удалить все одной строкой  по префиксу

ObjectsDeleteAll(0, "" 

 
Sergey Likho #:

В Deinit вызывается DeleteObjects

Вы удаляете с нулевого до ObjectsTotal

А нужно наоборот с ObjectsTotal до 0 


Проще удалить все одной строкой  по префиксу

ObjectsDeleteAll(0, "" 

Спасибо, Сергей! Но, к сожалению,- мимо. ) Индикатор находит чарт, видит количество объектов, но не читает имя. При других "обстоятельствах" он их читает и удаляет.

 

У меня шесть графиков. При удалении индикатора с первого графика,- объектов не видит. Ставлю индюк на последний график, находит и удаляет все объекты



0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133959545294021366 i = 0 ChartSymbol()) = GBPCHF Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133963643186921823 i = 1 ChartSymbol()) = EURCHF Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133963643359465978 i = 2 ChartSymbol()) = AUDJPY Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133965495504208859 i = 3 ChartSymbol()) = USDCHF Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133965495612213484 i = 4 ChartSymbol()) = USDJPY Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: currChart = 133965495734282006 i = 5 ChartSymbol()) = AUDUSD Period  = 60 sum = 133959545294021366
0 19:58:55.127 Clean(2) GBPCHF,H1: top = 133959545294021366 sym =  Err = 0
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133959545294021366 str = GBPCHF i = 0
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133963643186921823 str = EURCHF i = 1
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133963643359465978 str = AUDJPY i = 2
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133965495504208859 str = USDCHF i = 3
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133965495612213484 str = USDJPY i = 4
0 19:58:55.127 Clean(2) GBPCHF,H1: chartes = 133965495734282006 str = AUDUSD i = 5
0 19:58:57.658 Clean(2) GBPCHF,H1: uninit reason 1
0 19:58:57.658 Clean(2) GBPCHF,H1: size = 6
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 0 de =  133959545294021366
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 0 de = 133959545294021366
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 3 de =  133963643186921823
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 2 name =  de = 133963643186921823
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 1 name =  de = 133963643186921823
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 0 name =  de = 133963643186921823
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 1 de = 133963643186921823
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 3 de =  133963643359465978
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 2 name =  de = 133963643359465978
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 1 name =  de = 133963643359465978
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 0 name =  de = 133963643359465978
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 2 de = 133963643359465978
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 3 de =  133965495504208859
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 2 name =  de = 133965495504208859
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 1 name =  de = 133965495504208859
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 0 name =  de = 133965495504208859
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 3 de = 133965495504208859
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 3 de =  133965495612213484
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 2 name =  de = 133965495612213484
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 1 name =  de = 133965495612213484
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 0 name =  de = 133965495612213484
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 4 de = 133965495612213484
0 19:58:57.658 Clean(2) GBPCHF,H1: objects = 3 de =  133965495734282006
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 2 name =  de = 133965495734282006
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 1 name =  de = 133965495734282006
0 19:58:57.658 Clean(2) GBPCHF,H1: err = = 4202
0 19:58:57.658 Clean(2) GBPCHF,H1: i = 0 name =  de = 133965495734282006
0 19:58:57.658 Clean(2) GBPCHF,H1:    f = 5 de = 133965495734282006
0 19:58:57.663 Custom indicator Clean(2) GBPCHF,H1: removed
0 19:59:10.617 Custom indicator Clean(2) AUDUSD,H1: loaded successfully
0 19:59:12.642 Clean(2) AUDUSD,H1: initialized
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133959545294021366 i = 0 ChartSymbol()) = GBPCHF Period  = 60 sum = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133963643186921823 i = 1 ChartSymbol()) = EURCHF Period  = 60 sum = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133963643359465978 i = 2 ChartSymbol()) = AUDJPY Period  = 60 sum = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133965495504208859 i = 3 ChartSymbol()) = USDCHF Period  = 60 sum = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133965495612213484 i = 4 ChartSymbol()) = USDJPY Period  = 60 sum = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: currChart = 133965495734282006 i = 5 ChartSymbol()) = AUDUSD Period  = 60 sum = 133965495734282006
0 19:59:16.680 Clean(2) AUDUSD,H1: top = 133965495734282006 sym =  Err = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133959545294021366 str = GBPCHF i = 0
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133963643186921823 str = EURCHF i = 1
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133963643359465978 str = AUDJPY i = 2
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133965495504208859 str = USDCHF i = 3
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133965495612213484 str = USDJPY i = 4
0 19:59:16.680 Clean(2) AUDUSD,H1: chartes = 133965495734282006 str = AUDUSD i = 5
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133959545294021366 i = 0 ChartSymbol()) = GBPCHF Period  = 60 sum = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133963643186921823 i = 1 ChartSymbol()) = EURCHF Period  = 60 sum = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133963643359465978 i = 2 ChartSymbol()) = AUDJPY Period  = 60 sum = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133965495504208859 i = 3 ChartSymbol()) = USDCHF Period  = 60 sum = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133965495612213484 i = 4 ChartSymbol()) = USDJPY Period  = 60 sum = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: currChart = 133965495734282006 i = 5 ChartSymbol()) = AUDUSD Period  = 60 sum = 133965495734282006
0 19:59:20.704 Clean(2) AUDUSD,H1: top = 133965495734282006 sym =  Err = 0
0 19:59:20.704 Clean(2) AUDUSD,H1: chartes = 133959545294021366 str = GBPCHF i = 0
0 19:59:20.705 Clean(2) AUDUSD,H1: chartes = 133963643186921823 str = EURCHF i = 1
0 19:59:20.705 Clean(2) AUDUSD,H1: chartes = 133963643359465978 str = AUDJPY i = 2
0 19:59:20.705 Clean(2) AUDUSD,H1: chartes = 133965495504208859 str = USDCHF i = 3
0 19:59:20.705 Clean(2) AUDUSD,H1: chartes = 133965495612213484 str = USDJPY i = 4
0 19:59:20.705 Clean(2) AUDUSD,H1: chartes = 133965495734282006 str = AUDUSD i = 5
0 19:59:21.777 Clean(2) AUDUSD,H1: uninit reason 1
0 19:59:21.777 Clean(2) AUDUSD,H1: size = 6
0 19:59:21.777 Clean(2) AUDUSD,H1: objects = 0 de =  133959545294021366
0 19:59:21.777 Clean(2) AUDUSD,H1:    f = 0 de = 133959545294021366
0 19:59:21.777 Clean(2) AUDUSD,H1: objects = 3 de =  133963643186921823
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 name = Editiсмотреть de = 133963643186921823
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 Объект с именем Editiсмотреть на ChartSymbol = EURCHF с иден-ром 133963643186921823 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 name = Editiигнорировать de = 133963643186921823
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 Объект с именем Editiигнорировать на ChartSymbol = EURCHF с иден-ром 133963643186921823 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 name = Editi de = 133963643186921823
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 Объект с именем Editi на ChartSymbol = EURCHF с иден-ром 133963643186921823 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1:    f = 1 de = 133963643186921823
0 19:59:21.778 Clean(2) AUDUSD,H1: objects = 3 de =  133963643359465978
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 name = Editiсмотреть de = 133963643359465978
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 Объект с именем Editiсмотреть на ChartSymbol = AUDJPY с иден-ром 133963643359465978 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 name = Editiигнорировать de = 133963643359465978
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 Объект с именем Editiигнорировать на ChartSymbol = AUDJPY с иден-ром 133963643359465978 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 name = Editi de = 133963643359465978
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 Объект с именем Editi на ChartSymbol = AUDJPY с иден-ром 133963643359465978 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1:    f = 2 de = 133963643359465978
0 19:59:21.778 Clean(2) AUDUSD,H1: objects = 3 de =  133965495504208859
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 name = Editiсмотреть de = 133965495504208859
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 Объект с именем Editiсмотреть на ChartSymbol = USDCHF с иден-ром 133965495504208859 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 name = Editiигнорировать de = 133965495504208859
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 Объект с именем Editiигнорировать на ChartSymbol = USDCHF с иден-ром 133965495504208859 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 name = Editi de = 133965495504208859
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 Объект с именем Editi на ChartSymbol = USDCHF с иден-ром 133965495504208859 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1:    f = 3 de = 133965495504208859
0 19:59:21.778 Clean(2) AUDUSD,H1: objects = 3 de =  133965495612213484
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 name = Editiсмотреть de = 133965495612213484
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 Объект с именем Editiсмотреть на ChartSymbol = USDJPY с иден-ром 133965495612213484 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 name = Editiигнорировать de = 133965495612213484
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 Объект с именем Editiигнорировать на ChartSymbol = USDJPY с иден-ром 133965495612213484 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 name = Editi de = 133965495612213484
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 Объект с именем Editi на ChartSymbol = USDJPY с иден-ром 133965495612213484 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1:    f = 4 de = 133965495612213484
0 19:59:21.778 Clean(2) AUDUSD,H1: objects = 3 de =  133965495734282006
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 name = Editiсмотреть de = 133965495734282006
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 2 Объект с именем Editiсмотреть на ChartSymbol = AUDUSD с иден-ром 133965495734282006 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 name = Editiигнорировать de = 133965495734282006
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 1 Объект с именем Editiигнорировать на ChartSymbol = AUDUSD с иден-ром 133965495734282006 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 name = Editi de = 133965495734282006
0 19:59:21.778 Clean(2) AUDUSD,H1: i = 0 Объект с именем Editi на ChartSymbol = AUDUSD с иден-ром 133965495734282006 Удален!
0 19:59:21.778 Clean(2) AUDUSD,H1:    f = 5 de = 133965495734282006
0 19:59:21.783 Custom indicator Clean(2) AUDUSD,H1: removed
 
Подскажите, пожалуйста, как запретить диалоговым панелям автосворачивание? (если область чарта/графика меньше панели, либо когда переключаешься на другой график - панель большого размера сворачивается)


//+------------------------------------------------------------------+
//|                                              LearnCAppDialog.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Controls\Dialog.mqh>

CAppDialog AppWindow;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!AppWindow.Create(0,"AppWindow",0,20,20,360,324))
      return(INIT_FAILED);
//--- run application
   AppWindow.Run();
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy dialog
   AppWindow.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   AppWindow.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
 
Ivan Butko #:
Подскажите, пожалуйста, как запретить диалоговым панелям автосворачивание? (если область чарта/графика меньше панели, либо когда переключаешься на другой график - панель большого размера сворачивается)


// \MQL5\Include\Controls\Dialog.mqh
void CAppDialog::ChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
.....
   if(id==CHARTEVENT_CHART_CHANGE)
     {
.....
      //--- if subwindow height is less that dialog height, minimize application window (always)
      if(m_chart.HeightInPixels(m_subwin)<Height()+CONTROLS_BORDER_WIDTH)
        {
         m_button_minmax.Pressed(true);
         Minimize();
         m_chart.Redraw();
        }
.....
  }
 
trader6_1 #:

Благодарю Вас

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

Нужно паралельно индикатору создать панель на графике, а она создаётся в подвале, причём кнопки этой панели строятся на графике. А они вроде как принадлежат панели, как объект. 

//+------------------------------------------------------------------+
//|                                     AppWindowTwoButtonsClass.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.001"
#property description "Control Panels and Dialogs. Demonstration class CButton"
#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
//--- indents and gaps
#define INDENT_LEFT                         (11)      // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)      // indent from top (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
//--- for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)      // size by Y coordinate
//---
//+------------------------------------------------------------------+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+------------------------------------------------------------------+
class CAppWindowTwoButtons : public CAppDialog
  {
private:
   CButton           m_button1;                       // the button object
   CButton           m_button2;                       // the button object

public:
                     CAppWindowTwoButtons(void);
                    ~CAppWindowTwoButtons(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);

protected:
   //--- create dependent controls
   bool              CreateButton1(void);
   bool              CreateButton2(void);

  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CAppWindowTwoButtons::CAppWindowTwoButtons(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CAppWindowTwoButtons::~CAppWindowTwoButtons(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- create dependent controls
   if(!CreateButton1())
      return(false);
   if(!CreateButton2())
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Global Variable                                                  |
//+------------------------------------------------------------------+
CAppWindowTwoButtons ExtDialog;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"AppWindowClass with Two Buttons",0,40,40,380,344))
      return(INIT_FAILED);
//--- run application
   ExtDialog.Run();
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
//--- destroy dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
//| Create the "Button1" button                                      |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::CreateButton1(void)
  {
//--- coordinates
   int x1=INDENT_LEFT;        // x1            = 11  pixels
   int y1=INDENT_TOP;         // y1            = 11  pixels
   int x2=x1+BUTTON_WIDTH;    // x2 = 11 + 100 = 111 pixels
   int y2=y1+BUTTON_HEIGHT;   // y2 = 11 + 20  = 32  pixels
//--- create
   if(!m_button1.Create(0,"Button1",0,x1,y1,x2,y2))
      return(false);
   if(!m_button1.Text("Button1"))
      return(false);
   if(!Add(m_button1))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Button2"                                             |
//+------------------------------------------------------------------+
bool CAppWindowTwoButtons::CreateButton2(void)
  {
//--- coordinates
   int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);   // x1 = 11  + 2 * (100 + 5) = 221 pixels
   int y1=INDENT_TOP;                                    // y1                       = 11  pixels
   int x2=x1+BUTTON_WIDTH;                               // x2 = 221 + 100           = 321 pixels
   int y2=y1+BUTTON_HEIGHT;                              // y2 = 11  + 20            = 31  pixels
//--- create
   if(!m_button2.Create(0,"Button2",0,x1,y1,x2,y2))
      return(false);
   if(!m_button2.Text("Button2"))
      return(false);
   if(!Add(m_button2))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+



#property indicator_separate_window

void OnTimer() {Main();}
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {Main(); return rates_total;}

void Main()
  {

  }

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

Нужно паралельно индикатору создать панель на графике, а она создаётся в подвале, причём кнопки этой панели строятся на графике. А они вроде как принадлежат панели, как объект. 

 Для начал а, не стоит игнорировать предупреждение о том, что не задана индикация. В пятерке не работаю, поэтому ...

 
Galim_V #:

 Для начала, не стоит игнорировать предупреждение о том, что не задана индикация. В пятерке не работаю, поэтому ...

Как у Вас это получилось?!

 
Ivan Butko #:

Как у Вас это получилось?!

#property indicator_chart_window