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

 
Да как же с этим работать-то? Уже второй день сижу впустую. Какое еще решение тут может быть?
 
Вопрос пжлст. в обработчике OnCalculate(...)  константы буферов open, high,low,close  переполняются для всей истории по символу, как быть? Например, я сам хочу высчитать значение массива mas[i]= open[i] /close[i] для всей истории одной пары и усреднять это значение с другим символом.   Перелопатил кучу тем, похожего мало. Подскажите где смотреть.
 
Juer:
Да как же с этим работать-то? Уже второй день сижу впустую. Какое еще решение тут может быть?

А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?

 
Artyom Trishkin:

А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?

Хорошо, а как правильно сделать это не через массив структур, а через класс CArrayObj, где объектом будет объект типа структуры? Не очень я пойму, как объявлять и как добавлять и возможно ли так вообще?

 
Juer:

Хорошо, а как правильно сделать это не через массив структур, а через класс CArrayObj, где объектом будет объект типа структуры? Не очень я пойму, как объявлять и как добавлять и возможно ли так вообще?

Попробуйте описать задачу в общем, а не в частностях - что хотите в итоге получить имея те, или иные данные.

 
mwwm:
Вопрос пжлст. в обработчике OnCalculate(...)  константы буферов open, high,low,close  переполняются для всей истории по символу, как быть? Например, я сам хочу высчитать значение массива mas[i]= open[i] /close[i] для всей истории одной пары и усреднять это значение с другим символом.   Перелопатил кучу тем, похожего мало. Подскажите где смотреть.
что значит переполняются?
 
Дед пенсионер:
что значит переполняются?

 XAUUSD,Daily: array out of range in '!2019.mq4' (243,6) выдает при расчетах через константы в OnCalculate, и CopyOpen' - no one of the overloads can be applied to the function call когда пытаюсь сделать вот так  int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open); Очень запутывает организация доступа к данным через структуры, в какой момент котировки OHLC брать все, а потом только новые, застрял на iOpen(,,,)


 
Juer:

Так ошибка invalid array access.

В структуре нет массивов и строк. Только bool, integer, double и enums.

Прошу прощения. Тупанул малехо. Тут, конечно же, чуть сложнее нужно будет делать:

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

Ведь это не вектор, как в С++. Поэтому требуется поэлементное копирование. Также приходится самостоятельно заботиться о соответствии размеров исходного массива и массива назначения. Поэтому функция получается не в одну строку. Да и не всегда будет успешно выполнена. Вот и выходит, что требуется вернуть подтверждение об успешности ее выполнения.

 
mwwm:

 XAUUSD,Daily: array out of range in '!2019.mq4' (243,6) выдает при расчетах через константы в OnCalculate, и CopyOpen' - no one of the overloads can be applied to the function call когда пытаюсь сделать вот так  int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open); Очень запутывает организация доступа к данным через структуры, в какой момент котировки OHLC брать все, а потом только новые, застрял на iOpen(,,,)


Не перепоняется, а вы обращаетесь по несуществующему индексу.
 
Artyom Trishkin:
Не перепоняется, а вы обращаетесь по несуществующему индексу.

а как правильно это выполнять?

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