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

 
Artyom Trishkin:

Просто добавляйте в массив CArrayObj другой массив CArrayObj: Add()

Не получается так. parameter conversion not allowed

Кстати, если это имеет значение. Мой добавляемый в массив объект - это класс, наследуемый от CArrayObj.

class CCustomClass : public CArrayObj
{
}




CCustomClass obj1;
CCustomClass obj2;
...

CArrayObj objects_array;
objects_array.Add(obj1); 
Ну вот, ругается на последнюю строку - parameter conversion not allowed.
 
objects_array.Add(GetPointer(obj1)); 
Заработало, не углядел, что у меня не указатель.
 
TaywinLannister:

Форумчане уважаемые помогите позязя!!!

хочу присвоить переменной шаг цены:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

вылетает ошибка: 'SymbolInfoInteger' - no one of the overloads can be applied to the function call

в чём опять моя ошибка?


int V=(int)SymbolInfoInteger(Symb,SYMBOL_POINT);

так попробуйте

 
foreXteller:

Уважаемые Форумчане!

Подскажите, пожалуйста!!!

В окне MetaTrader 5 выводятся значения Bid & Ask, по которым  (насколько я понимаю) определяется выигрыш/проигрыш.

Однако, когда я пытаюсь использовать минутные котировки истории, для тестирования своей стратегии, эти котировки не содержат значений Bid  и Ask, а дают значения  «OPEN», «HIGH» «LOW», «CLOSE», «TICKVOL», «VOL», «SPREAD». При этом совершенно не понятно как из этих значений получить Bid  и Ask, а также как из этих значений высчитывается спред.

Абсолютно всё доступно. Опишите более подробно, что именно подразумевается под "когда я пытаюсь использовать минутные котировки истории"? Что именно Вы делаете или хотите сделать?

 
TaywinLannister:

Форумчане уважаемые помогите позязя!!!

хочу присвоить переменной шаг цены:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

вылетает ошибка: 'SymbolInfoInteger' - no one of the overloads can be applied to the function call

в чём опять моя ошибка?


Справка SymbolInfoInteger:

1. Непосредственно возвращает значение свойства.

long  SymbolInfoInteger( 
   string                    name,      // символ 
   ENUM_SYMBOL_INFO_INTEGER  prop_id    // идентификатор свойства 
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  SymbolInfoInteger( 
   string                    name,      // символ 
   ENUM_SYMBOL_INFO_INTEGER  prop_id,   // идентификатор свойства 
   long&                     long_var   // сюда примем значение свойства 
   );


То есть ИЛИ long ИЛИ bool.

 
TaywinLannister:

Форумчане уважаемые помогите позязя!!!

хочу присвоить переменной шаг цены:

int V=SymbolInfoInteger(Symb,SYMBOL_POINT);

вылетает ошибка: 'SymbolInfoInteger' - no one of the overloads can be applied to the function call

в чём опять моя ошибка?


double V=SymbolInfoDouble(Symb,SYMBOL_POINT);

Point - значение типа double. При получении его в виде int будет иметь нулевое значение.

 
Vladimir Karputov:

Справка SymbolInfoInteger:

1. Непосредственно возвращает значение свойства.

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.


То есть ИЛИ long ИЛИ bool.

понял спасибо)

 
#property copyright "Copyright 2018, Sergey S Morozov"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//#property indicator_separate_window    // Индик. рисуется в новом окне
#property indicator_chart_window    // Индик. рисуется в основном окне

#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Red     // Цвет первой линии

extern int History  =50;            // Колич.баров в расчётной истории
extern int Aver_Bars=5;             // Количество баров для расчёта

double ArrayBuff[];

//----------------------------------------------------------------------------------------------------

int OnInit()
{
   SetIndexBuffer(0,ArrayBuff);
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1);
   return(INIT_SUCCEEDED);
}

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[])

  {

      int i,                           // Индекс бара
      n,                               // Формальный параметр
      Counted_bars;                    // Количество просчитанных баров 
      double
      Sum_H,                           // Сумма значений High за переиод
      Sum_L;                           // Сумма значений Low  за переиод
   //--------------------------------------------------------------------
      Counted_bars=IndicatorCounted(); // Количество просчитанных баров
      i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
      if (i>History-1)                 // Если много баров то ..
         i=History-1;                  // ..рассчитывать заданное колич.
      while(i>=0)                      // Цикл по непосчитанным барам
        {
         Sum_H=0;                      // Обнуление в начале цикла
         Sum_L=0;                      // Обнуление в начале цикла
         for(n=i;n<=i+Aver_Bars-1;n++) // Цикл суммирования значений
           {
            Sum_H=Sum_H + High[n];     // Накопление суммы макс.значений
            Sum_L=Sum_L + Low[n];      // Накопление суммы мин. значений
           }
         ArrayBuff[i]=(Sum_H-Sum_L)/Aver_Bars;  // Знач. 0 буфера на i-ом баре
         i--;                                   // Расчёт индекса следующего бара
        }

   return(rates_total);

  }
//+------------------------------------------------------------------+

Начала только, вообще еще не умею на этом языке писать. Но проблема в следующем - если в новом окне, то график появляется. А вот отобразить его у текущем я никак не могу... В чем моя ошибка? Учитывая, что сам я не смог написать и составил из примеров найти тут не могу. Тем более, что все это явно не через функцию в духе SetChartData(point1,point2); а как то само происходит...

Ну и переменная вроде стоит (indicator_chart_window), но все равно не срабатывает....

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как прописать расписание торговли робота? Здравствуйте...
 
Vladimir Karputov:

Абсолютно всё доступно. Опишите более подробно, что именно подразумевается под "когда я пытаюсь использовать минутные котировки истории"? Что именно Вы делаете или хотите сделать?

Для того чтобы скачать котировки истории загружаем MetaTrader 5, кликаем иконку c символом доллара: «Отображение списка символов» (или можно нажать Ctrl U). Появится окно «Символы». Во вкладке «СПЕЦИФИКАЦИЯ» находим нужную пару валют, например GBPCHF.  Во вкладке «БАРЫ» задаём минутные котировки (М1) и даты начала и конца необходимого периода. После нажатия на кнопку «ЗАПРОС» будет загружен файл в формате csv, который можно использовать для тестирования стратегий с помощью метатрейдера или  своими программами.

С помощью EXCEL можно посмотреть содержание этого файла, в котором первая строчка раскрывает содержание информации в файле, т.е. «дата, время», и, затем,  «OPEN», «HIGH» «LOW», «CLOSE», «TICKVOL», «VOL»,  «SPREAD»

Я прекрасно понимаю что значат эти данные, но как из них сделать BIT и ASK, которые использует MetaTrader 5?

 
Модераторы многоуважаемые не подскажите где в mt5 можно посмотреть информацию о символе? Помню в mt 4 можно было проверить в тестере стратегий, а в mt5 тестере я эту функцию не обнаружил.
Причина обращения: