Ошибки, баги, вопросы - страница 1853

 
Комбинатор:

Что нельзя? Вот так записать?

Struct[(int)0]

Да, так записать нельзя. А тем более - Struct[(MqlTick)0]


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1570: Улучшение витрины Маркета и расширение шаблонных функций в MQL5

MetaQuotes Software Corp., 2017.03.22 16:31

  1. MQL5: Добавлена возможность явной специализации шаблонных функций. Для этого перед списком параметров вызова необходимо указать параметры типизации:
    template<typename T>
    T Func() { return (T)0; }
      
      
    void OnInit()
      {
       Func<double>();   // явная специализация шаблонной функции
      }
    Таким образом, специализация происходит не через параметры вызова, а прямым указанием типов.
 
С - классный язык программирования. Но, многие программируют, зажмурившись(:
 

Таким образом, специализация происходит не через параметры вызова, а прямым указанием типов.

Типов чего, сударь? Какой тип у структуры, которую Вы насилуете? 

 
Алексей Тарабанов:

Какой тип у структуры, которую Вы насилуете? 

struct STRUCT
{
  template <typename T>
  void operator []( int )
  {
    Print(__FUNCSIG__);
  }
};

void OnStart()
{
  STRUCT Struct;
  
  Struct.operator[]<int>(0);
  Struct.operator[]<MqlTick>(0);
}

Результат
void STRUCT::operator[]<int>(int)
void STRUCT::operator[]<MqlTick>(int)
 
fxsaber:

Результат

Просто изучите типы данных
 
Алексей Тарабанов:
Просто изучите типы данных
Наличие чувства юмора - поставил галочку.
 
fxsaber:
Наличие чувства юмора - поставил галочку.

Спасибо
 
Renat Fatkhullin:

Уже поставлена задача изменить эту стратегию и поднимать данные, не глубже 500 баров от самой далекой даты запроса. Это позволит безболезненно писать скринеры рынка.

1. возможность изменения этой глубины будет?

2. где в МТ5 регулируются лимиты загружаемой истории?

 
Господа.Я в программировании совсем новичок.Почитал уроки для чайников.Есть алгоритм,но не могу правильно прописать.Помогите пожалуйста!
Вообщем мысль такая,что я обращаюсь к массиву данных последних 86 свечек,кроме 0.и каждая белая свечка это 1,каждая черная свечка это 0.если цена закрытия 1 свечки ровна цене открытия 1 свечки,тогда  смотрим на цену закрытия 2 свечки и если она выше цены открытия 1 свечки ,то ставим 0.если цена закрытия 2 свечки ровна цене открытия 1 свечки,тогда по этому же принципу сравнивается цена открытия 2 свечи с ценой закрытия 2 свечи.
Цикл проходит каждые 15 мин или 60
 
Это баг языка или его недокументированная возможность?
struct STRUCT
{
  void operator =( STRUCT& ) { Print(__FUNCSIG__); }
};

void OnStart()
{
  STRUCT Struct = {0};
  
  Struct = (STRUCT)Struct; // Пусто
  Struct = Struct;         // void STRUCT::operator=(STRUCT&)
}

Не вызывается оператор, даже если его сделать шаблонным!

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