Вопрос пжлст. в обработчике OnCalculate(...) константы буферов open, high,low,close переполняются для всей истории по символу, как быть? Например, я сам хочу высчитать значение массива mas[i]= open[i] /close[i] для всей истории одной пары и усреднять это значение с другим символом. Перелопатил кучу тем, похожего мало. Подскажите где смотреть.
Juer: Да как же с этим работать-то? Уже второй день сижу впустую. Какое еще решение тут может быть?
А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?
А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?
Хорошо, а как правильно сделать это не через массив структур, а через класс CArrayObj, где объектом будет объект типа структуры? Не очень я пойму, как объявлять и как добавлять и возможно ли так вообще?
Хорошо, а как правильно сделать это не через массив структур, а через класс 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(,,,)
В структуре нет массивов и строк. Только 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)
returnfalse;
for (int i = 0; i < nArraySize; ++i)
rules_array[i] = rules[i];
returntrue;
}
Ведь это не вектор, как в С++. Поэтому требуется поэлементное копирование. Также приходится самостоятельно заботиться о соответствии размеров исходного массива и массива назначения. Поэтому функция получается не в одну строку. Да и не всегда будет успешно выполнена. Вот и выходит, что требуется вернуть подтверждение об успешности ее выполнения.
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(,,,)
Не перепоняется, а вы обращаетесь по несуществующему индексу.
Да как же с этим работать-то? Уже второй день сижу впустую. Какое еще решение тут может быть?
А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?
А где вы показали воспроизводимый пример? Вы даёте лишь обрывки кода. Нам их нужно на своё усмотрение компоновать в рабочий код? А если не угадаем, и вам не то нужно будет?
Хорошо, а как правильно сделать это не через массив структур, а через класс CArrayObj, где объектом будет объект типа структуры? Не очень я пойму, как объявлять и как добавлять и возможно ли так вообще?
Хорошо, а как правильно сделать это не через массив структур, а через класс CArrayObj, где объектом будет объект типа структуры? Не очень я пойму, как объявлять и как добавлять и возможно ли так вообще?
Попробуйте описать задачу в общем, а не в частностях - что хотите в итоге получить имея те, или иные данные.
Вопрос пжлст. в обработчике 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(,,,)
Так ошибка invalid array access.
В структуре нет массивов и строк. Только bool, integer, double и enums.
Прошу прощения. Тупанул малехо. Тут, конечно же, чуть сложнее нужно будет делать:
Ведь это не вектор, как в С++. Поэтому требуется поэлементное копирование. Также приходится самостоятельно заботиться о соответствии размеров исходного массива и массива назначения. Поэтому функция получается не в одну строку. Да и не всегда будет успешно выполнена. Вот и выходит, что требуется вернуть подтверждение об успешности ее выполнения.
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(,,,)
Не перепоняется, а вы обращаетесь по несуществующему индексу.
а как правильно это выполнять?