Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1172

 
Vitaly Muzichenko:

Подскажите по созданию хендлов

Есть вот такая штука

Вопрос: От каких параметров назначается номер(цифры) хендла?
             Может ли он после перезагрузки терминала быть другим?
             Может ли он после переинициализации графика быть другим?
             В каких случаях он может изменится?

Нашёл ответы

Сравниваем скорость самокэширующихся индикаторов
Сравниваем скорость самокэширующихся индикаторов
  • www.mql5.com
Предположим, что нам вдруг наскучил классический MQL5-доступ к индикаторам и захотелось сравнить скорость доступа в сравнении с альтернативными вариантами. Например, сравним его с доступом к индикаторам в стиле MQL4 без кэширования и с кэшированием. Идеи с доступом в MQL4-стиле были взяты из статьи LifeHack для трейдера: готовим фастфуд из...
 
Куда возможно вставить файл, чтобы он был виден, через наследование, всем файлам в стандартной библиотеке?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 

Подскажите, пожалуйста, как правильно передать в функцию многомерный массив.

Если просто указать в заголовке MyFun( &Mas[][] ), то на обращение к элементу массива Mas[j][k] в теле функции компилятор выдаёт ошибку.. А как?

С одномерными вроде бы проблем нет.

 
User_mt5:

Подскажите, пожалуйста, как правильно передать в функцию многомерный массив.

Если просто указать в заголовке MyFun( &Mas[][] ), то на обращение к элементу массива Mas[j][k] в теле функции компилятор выдаёт ошибку.. А как?

С одномерными вроде бы проблем нет.

Второе и следующие измерения массива не могут быть динамическими. Следовательно как объявлен массив, к примеру int Mas[][7]; так и принимать его надо MyFun(int &Mas[][7])

 
Alexey Viktorov:

Второе и следующие измерения массива не могут быть динамическими. Следовательно как объявлен массив, к примеру int Mas[][7]; так и принимать его надо MyFun(int &Mas[][7])

Ага..
Спасибо. Моих мозгов не хватило.
 

Здравствуйте программисты. В очередной раз обращаюсь за Вашей помощью. Есть стандартный индикатор из которго нужно получить единственное значение. Индикатор вроде подключил и скопировал массив его значений в буфер double buf_atr[] Распечатка в журнал ArrayPrint(buf_atr) показывает такие значения:

0.00032 0.00037 0.00039 0.00039 0.00041 0.00039 0.00037 0.00036 0.00034 0.00035 0.00035 0.00035 0.00034 0.00030

КАК МНЕ ОБРАТИТЬСЯ К ЯЧЕЙКЕ МАССИВА В КОТОРОЙ ЗНАЧЕНИЕ 0.00030 ??Получается это значение не на текущей свече 0 а на предыдущей уже сформированной 1

Вроде все работает но как обратиться к ячейке массива для дальнейше работы с ней я не знаю;( 

input int InpPeriod=14;  // period
int handleIndicator; //указатель на индикатор


int OnInit()
{  
  
handleIndicator = iCustom(NULL,0,"Examples\\INDICATOR",InpPeriod);

   return(INIT_SUCCEEDED);
}



void OnTick()

{

int buf_size = 14;
double buf_atr[];

CopyBuffer(handleIndicator,0,0,buf_size,buf_atr);

ArrayPrint(buf_atr);

}
 
Kolya32:

Здравствуйте программисты. В очередной раз обращаюсь за Вашей помощью. Есть стандартный индикатор из которго нужно получить единственное значение. Индикатор вроде подключил и скопировал массив его значений в буфер double buf_atr[] Распечатка в журнал ArrayPrint(buf_atr) показывает такие значения:

0.00032 0.00037 0.00039 0.00039 0.00041 0.00039 0.00037 0.00036 0.00034 0.00035 0.00035 0.00035 0.00034 0.00030

КАК МНЕ ОБРАТИТЬСЯ К ЯЧЕЙКЕ МАССИВА В КОТОРОЙ ЗНАЧЕНИЕ 0.00030 ??Получается это значение не на текущей свече 0 а на предыдущей уже сформированной 1

Вроде все работает но как обратиться к ячейке массива для дальнейше работы с ней я не знаю;( 

void OnTick()

{

int buf_size = 14;
double buf_atr[];

CopyBuffer(handleIndicator,0,0,buf_size,buf_atr);
Print( buf_atr[buf_size-1] ); // Массив начинается с нуля
ArrayPrint(buf_atr);

}
 
Vitaly Muzichenko:
void OnTick()

{

int buf_size = 14;
double buf_atr[];

CopyBuffer(handleIndicator,0,0,buf_size,buf_atr);
Print( buf_atr[buf_size-1] ); // Массив начинается с нуля
ArrayPrint(buf_atr);

}


РАБОТАЕТ УРА!!! НУЖНО ОБРАЩАТЬСЯ К buf_atr[buf_size-1] ЧЕГО Я ТОЛЬКО НЕ ПЕРЕПРОБОВАЛ. БОЛЬШОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО   Vitaly Muzichenko

 

Обязателен ли mql стиль, array reference ?

(
                                     double &value[],// Buffer of values
                                     double& clr[],                                 // Color buffer
                                     const bool asSeries,                           // Numbering flag as in time series
                                     const string label,                           // Series name
                                     const color& colors[],                        // Line colors )
 
Создал свой класс CAppDialogPTR - наследник от CAppDialog -  подскажите как правильно переопределить объекты m_background, m_caption ... из класса  CDialog для доступа к ним из своего класса?
#property strict
#include <Controls\Dialog.mqh>

class CAppDialogPTR : public CAppDialog
{
private:
   int               m_deinit_reason;
public:
   CAppDialogPTR(void){};
   ~CAppDialogPTR(void){};
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
};

bool CAppDialogPTR::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
{
   m_deinit_reason=WRONG_VALUE;
   bool res = CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2);
   return(res);
}

Dialog.mqh

***
class CDialog : public CWndContainer
  {
private:
   //--- dependent controls
   CPanel            m_white_border;        // the "white border" object
   CPanel            m_background;          // the background object
   CEdit             m_caption;             // the window title object
   CBmpButton        m_button_close;        // the "Close" button object
   CWndClient        m_client_area;         // the client area object
***