Вопросы от "чайника" - страница 67

 
sergeev:

число элементов задается константой

если число 'элементов заранее не известно, то пользуйтесь ArrayResize.

Это азы c++

const int elements=4;
 Если так, то не помогло.
 
x100intraday:
 Если так, то не помогло.

#define elements 4
 
sergeev:

 Благодарю.
 

Здравствуйте.

Подскажите, пожалуйста, как настроить выделенную область в MetaTrader 5, чтобы можно было отслеживать текущие ордера? 

См. прикрепленный скрин.

Заранее спасибо.

Файлы:
uf2mcfxvni.JPG  285 kb
 
Dimm-ua:

Здравствуйте.

Подскажите, пожалуйста, как настроить выделенную область в MetaTrader 5, чтобы можно было отслеживать текущие ордера? 

См. прикрепленный скрин.

Заранее спасибо.


Окно "Инструменты".Вкладка "Торговля".
 
Karlson:
Окно "Инструменты".Вкладка "Торговля".
Наверное, я полный чайник, но такого нет
 
 
Karlson:

Ок, спасибо большое - разобрался
 

Вопрос к разработчикам - переворот позиции изменяет время открытия позиции? Если нет, то как получить время переворота позиции?

Получается что переворачиваться можно только в два запроса - закрыть действующую позицию и открыть новую в противоположном направлении, тогда время открытия позиции будет равно времени переворота. А если переворачиваться одним запросом, то получить время переворота с помощью ф-ции PositionGetInteger не получится?...

 

 Взял простейший пример штатного индикатора - Fractals: https://www.mql5.com/ru/code/viewcode/30/5540/fractals.mq5. Там есть такие стоки кода:

ExtUpperBuffer[i]=High[i];
ExtLowerBuffer[i]=Low[i];

 Эти буфера динамические типа double.

 Далее появилась необходимость хранить не только ценовые данные - High и Low, - но и уточнённые HighTime и LowTime экстремумных баров (как известно, все ТФ, кроме M1, имеют приблизительные значения времени, поэтому пришлось для себя вычислять точное время, чтобы потом складывать в буферы времени и пользоваться в дальнейшем). Капитан Очевидность подсказывает, что необходимо объявить соответствующие массивы типа datetime, затем заполнить аналогично:

ExtUpperTimeBuffer[i]=exactTime[0]; // правая часть - элемент массива, вычисленный заранее
ExtLowerTimeBuffer[i]=exactTime[0]; // правая часть - элемент массива, вычисленный заранее

и в else:

ExtUpperTimeBuffer[i]=EMPTY_VALUE;
ExtLowerTimeBuffer[i]=EMPTY_VALUE;

но перед этим отправляемся в справку по datetime и обнаруживаем:

"Константы даты и времени..." и "...могут быть представлены в виде литеральной строки". К тому же увязать массивы данного типа с индикаторными буферами возможности не имеем (да и не нужно?), SetIndexBuffer к массивам этого типа данных применять по известным причинам не можем. И не увязываем. Долго рефлексируем, делаем вывод, что ничего вроде бы страшного. Компилируем получившийся код. Получаем предупреждение: "truncation of constant value" в отношении строк в else с =EMPTY_VALUE (печально удивляемся) и ошибку в Эксперт-отчёте терминала: "Array out of range" в отношении тех же строк (в конец огорчаемся). По-видимому, в тип datetime EMPTY_VALUE помещаться не хочет, размер такого массива остаётся нулевым. Меняем EMPTY_VALUE на 0, ошибка исчезает, однако размер массива по-прежнему остаётся нулевым. Странно ещё и другое: размер буферов ExtUpperBuffer и ExtLowerBuffer ненулевой, значит, они всё-таки заполняются, но фракталы не появляются. С чего это вдруг?

 Основное, что меня интересует: возможно ли напрямую заполнять временнЫе буферы аналогично ценовым (не прибегая к CopyTime и прочим штатным функциям копирования в массив) и как, а если нет, то почему? Неужели для этой цели придётся заводить другую пару буферов под хранение секунд с начала 1970 года, но с типом не datetime, а каким-нибудь double или long, например, а в необходимые моменты конвертировать через TimeToString в формат времени как литеральной строки?

 P.S.: кому лень воспроизводить у себя дополненный код Fractals.mq5, просто подскажите, как вы храните рассчитанные специфические временнЫе данные (без вызова хэндлов встроенных индикаторов и работы с ними)?

 Спасибо.