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

 
Nikolai Semko #:
Спасибо Артем!
А если не известен размер массива?
В моем случае ( ресурсная переменная из файла png) именно так

Через дефайн размер массива подставляется, но вот расчетный размер стат. массива не смог.
 
Nikolai Semko #:
Спасибо Артем!
А если не известен размер массива?
В моем случае ( ресурсная переменная из файла png) именно так

Хм... А как ты хочешь указать компилятору выделить заранее неизвестный объём памяти под массив?

Почему не использовать динамический? Отпали бы вот такие головоломки.

 
Здравствуйте! Арендую сервер на MQL, терминал MT4. Cоветник почему постоянно пропадает с графика, при этом выполняется DeInit, ни ошибок ни багов. Советник просто открывает - закрывает сделки. Управляет всем индикатор, общаются меж собой через глобалки. При этом на половине графиков может быть всё норм, на другой половине вылетает. Может вылететь на одном из всех. Может пару дней проработать и всё норм, бывает по два раза в день. Открыто около 10 графиков. Советники меж собой ни как пересечься не могут, в имени глобалки и ChartID и инструмент. Думал сделать защиту через загрузку шаблона, но при программной загрузке шаблона выставляется запрет на торговлю. При этом аналогичный советник  дома с ноута работал без каких либо проблем около месяца. Может кто сталкивался, подскажите что делать?
 
Artyom Trishkin #:

Хм... А как ты хочешь указать компилятору выделить заранее неизвестный объём памяти под массив?

Почему не использовать динамический? Отпали бы вот такие головоломки.

Но ведь компилятор знает размер массива ресурсной переменной, так как она формируется на этапе компиляции. Странно, что MQ назвали ресурсную переменную переменной, когда она const.  :))
Не ясно зачем MQ сделали ресурсную переменную const! :(( Если бы она была обычным статическим массивом, то проблем бы не было. 
А так выходит, что мы получаем ресурс в константный статический массив и не можем его никуда передать, а только лишь создавать его динамическую копию, причем неудобство заключается в том, что эту копию придется делать в теле программы, а не в шапке в момент объвления экземпляра класса.
Мега неудобно.
Ничего пока лучше не придумал, чем через создание динамической копии.
Жалко, ведь я это делаю для КБ, чтобы людям было удобно и просто пользоваться подключением в ресурс программы png файлов.
А теперь нужно объяснять эти бубны с перерасходом памяти:

  1. объявляем ресурсную переменную
  2. создаем пустой экземпляр класса
  3. в теле программы (например в OnInit) создаем динамический дубликат ресурсной переменной
  4. загружаем этот массив в открытую ранее пустой экземпляр класса через определенный метод класса.
#resource "//Images//PNG.png" as uchar png_data[]

uchar png[];
CPng ppp();

int OnInit() {
   ArrayCopy(png,png_data);
   ppp.getPNG(png);

...


вместо того, чтобы обойтись только первыми двумя пунктами, когда массив передается через конструктор при создании экземпляра класса. Всего в две строчки кода в заголовке программы.

#resource "//Images//PNG.png" as uchar png_data[]

CPng ppp(png_data);




 
Nikolai Semko #:

вместо того

Внимательно посмотрите это.
 
fxsaber #:
Внимательно посмотрите это.

Ах, спасибо дорогой мой супермегаfxsaber 

туплю нереально. Ведь думал об этом, но забыл попробовать.

 

Всем привет. Столкнулся с тем, что при тестировании на истории при событии TRADE_ACTION_DEAL оказывается с  request.order = 0. А на реальном графике туда идет тикет реально открытого только что ордера, т.н. Позиции.
И получается, что с графиком реальным работает советник, а с тестером не может, т.к. там тикеты нулевые при открытии позиций.

Вопрос: как с этим совладать? Или как сделать специальный режим "только для советника"? Чтобы там можно было гонять по истории

 

в какой папке должен находиться купленный продукт типа библиотека, в папке MQL5\Libraries\Market\?

пользователь не может найти библиотеку, а я не знаю как проверить и как ему помочь.

 

Вопрос :

а КАК делают МУЛЬТИЯЗЫЧНЫЕ Советники / Индикаторы ?? чтобы все кнопки, параметры == писались на ВЫБРАННОМ языке ?!