Прошу помощи, у самого ступор. Для объяснения написал такой скрипт
struct STRUCT
{
int a;
};
class CLASS
{
public:
int a;
};
STRUCT f1()
{
staticint i = 0;
STRUCT Res;
Res.a = i++;
return(Res);
}
CLASS* f2()
{
staticint i = 0;
CLASS* Res = new CLASS;
Res.a = i++;
return(Res);
}
voidOnStart()
{
int i1 = f1().a + f1().a;
int i2 = f2().a + f2().a;
}
Есть структура и есть аналогичный класс. Мне нужно, чтобы после расчета i2 соответствующие объекты класса удалялись самопроизвольно, как это происходит с объектами структуры, когда идет аналогичный расчет i1. Как такое провернуть?
Комбинатор: Завернуть в умный указатель, не уверен что это можно сделать средствами mql
Сама проблема возникла из-за невозможности возврата сложной структуры. Например, если в коде выше вместо int a; сделать string a;, то f1() будет обламываться на return. Поэтому взгляд упал на классы, но там ожидала описанная засада.
genetic pass (0, 3) tested with error "critical runtime error 512 in OnTimer function (sleep function reaches end of test)" in 0:37:20.429 + history synchronization 0:00:43.395
genetic pass (0, 3) tested with error "critical runtime error 512 in OnTimer function (sleep function reaches end of test)" in 0:37:20.429 + history synchronization 0:00:43.395
Выкинуть из советника максимум, чтобы ошибка воспроизводилась. И опубликовать оставшийся код.
Подобный код работает и в МТ5 в реале и в тестере без проблем и повторяет его точь в точь (кроме OrderSend естественно и ArrayMaximum), проблемы возникли при переводе на МТ4, но опять же, не могу понять как это возможно ведь в терминале на графике все ОК.
Прошу помощи, у самого ступор. Для объяснения написал такой скрипт
Есть структура и есть аналогичный класс. Мне нужно, чтобы после расчета i2 соответствующие объекты класса удалялись самопроизвольно, как это происходит с объектами структуры, когда идет аналогичный расчет i1. Как такое провернуть?
fxsaber:
Как такое провернуть?
Завернуть в умный указатель, не уверен что это можно сделать средствами mql
Вообще можно переопределить копи конструктор и оператор=
Для классов такое не прокатит, их вроде как обязательно возвращать только указателем, структуры можно по значению.
Вообще можно переопределить копи конструктор и оператор=
Для классов такое не прокатит, их вроде как обязательно возвращать только указателем, структуры можно по значению.
При оптимизации советника появляется вот такая ошибка
genetic pass (0, 3) tested with error "critical runtime error 512 in OnTimer function (sleep function reaches end of test)" in 0:37:20.429 + history synchronization 0:00:43.395
Одиночное тестирование проходит без ошибок.
Версия у MT5 и MetaEditor 1571.
При оптимизации советника появляется вот такая ошибка
genetic pass (0, 3) tested with error "critical runtime error 512 in OnTimer function (sleep function reaches end of test)" in 0:37:20.429 + history synchronization 0:00:43.395
Выкинуть из советника максимум, чтобы ошибка воспроизводилась. И опубликовать оставшийся код.
Здравствуйте. Не могу понять в чем проблема. Робот сделки в терминале МТ4 открывает и работает как надо, а в тестере не хочет.
Вот участок кода, ответственный за открытие сделки:
Подобный код работает и в МТ5 в реале и в тестере без проблем и повторяет его точь в точь (кроме OrderSend естественно и ArrayMaximum), проблемы возникли при переводе на МТ4, но опять же, не могу понять как это возможно ведь в терминале на графике все ОК.
Возможно ли со стороны разработчиков добавить оператор = для массивов?
Поскольку указателей нет, то подобный оператор сделал бы язык более гибким - нашлись ситуации, когда это было бы ОЧЕНЬ удобно.