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

 
Stanislav Olhovsky:

У меня есть сигнал, на мониторинге 100 процентов слив, на счете все нормально, третий день стучусь и в сервисдеск и сотрудникам компании. Ответа нет...

Как дальше решать вопрос....? 

Снимать нужно не более заработанного, тогда и кривая баланса не будет идти в ноль.
 

Писал в "Новшества в избранном" - там тишина. Напишу сюда:

Windows 10 x64, Mozilla Firefox 39.0. Не отправляются в личке прикреплённые изображения, файлы...

[Удален]  
Karputov Vladimir:
Снимать нужно не более заработанного, тогда и кривая баланса не будет идти в ноль.

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

 

Скрин с майбука прилагаю, там все нормально.

 

Ответ брокера, история хранится 1 месяц, но тогда уже два три месяца назад на сигналах было бы тоже самое... 

Файлы:
Error.png  36 kb
 
И снова о "Личке". Косяки продолжаются...
[Удален]  

Уважаемые разработчики!

Разные показания индикатора Bands и iBands. В индикаторе Bands рассчет стандартного отклонения производится в функции StdDev_Func, а в iBands в методе GetData. При сравнении отрисовки на чарте, видна большая разница в состоянии буфферов отвечающих за уровни отклонения. Столкнулся с этим в MQL4, возможно в MQL5 то же самое.

 

Как-то раньше не заострял внимание, но сейчас при работе с большими массивами объектов классов обратил внимание на черезчур большой расход памяти.  Проверил по sizeof() - абсолютно пустой класс занимает 16 байт.  А учитывая, что классы тут управляемые, то добавляем ещё 8 байт на указатель.  Итого 24 байт.  Как-то черезчур накладно.

Залез в документацию и вот что там обнаружил:

объекты классов всегда имеют таблицу виртуальных функций, даже если в классе не объявлено ни одной виртуальной функции.

Спрашивается:  зачем в простых классах (не участвующих в наследовании) нужна таблица виртуальных функций?  Ведь об этих классах всё известно на этапе компиляции.

Выходит, что методы в них вызываются точно так же, как и виртуальные методы, т.е. идёт дополнительное перенаправление доступа по таблице.   И где же хвалёная оптимизация компилятора?  Как можно после этого заявлять о каком-то сравнении производительности с С++?

 

Вы неправы.

Если метод не описан виртуальным, то он вызывается напрямую. Кроме того, есть оптимизации по снятию виртуальности. Деструктор у нас всегда виртуален, что и приводит к наличию виртуальной таблицы.

Про 24 байта странное утверждение - ссылка на объект к размеру не относится.

Классы в управляемых/безопасных языках всегда содержат метаинформацию, так что тут все обосновано. Если хотите чистый размер, используйте структуры.

 
Renat Fatkhullin:
 

Деструктор у нас всегда виртуален, что и приводит к наличию виртуальной таблицы.

Так а почему же деструктор то не оптимизировать? Лишние 8 байт хранить только из-за него...

Про 24 байта странное утверждение - ссылка на объект к размеру не относится.

Ну я просто не в курсе, как у вас там всё реализовано. Вот допустим если имеется массив объектов:

CObj array[];

Хранятся ли в системе ссылки (указатели) для каждого элемента?

Если хотите чистый размер, используйте структуры.

Это то понятно, но на структуру у вас нельзя брать указатель, и это снижает удобство пользования ею.  Поэтому тут порой приходится делать мучительный выбор...   Вот если бы размер класса удалось уменьшить, то было бы замечательно.  А если ещё и указатель на структуру появится, то вообще красота )
[Удален]  

Это вся проблема из-за 24 байтов что ли? извиняюсь, вы на калькуляторе что ли пытаетесь писать ПО для МТ :) ?

Извиняюсь конечно, но высасыванием проблемы из пальца, вы затираете чужие вопросы, которых и так то стали редко замечать представители разработчиков.

 
Alexey Navoykov:

Так а почему же деструктор то не оптимизировать? Лишние 8 байт хранить только из-за него...

Ну я просто не в курсе, как у вас там всё реализовано. Вот допустим если имеется массив объектов:

Хранятся ли в системе ссылки (указатели) для каждого элемента?

Это то понятно, но на структуру у вас нельзя брать указатель, и это снижает удобство пользования ею.  Поэтому тут порой приходится делать мучительный выбор...   Вот если бы размер класса удалось уменьшить, то было бы замечательно.  А если ещё и указатель на структуру появится, то вообще красота )

Создавайте объекты динамически, оператором new, и не придется создавать пустые объекты вообще.

На структуру не может ссылаться указатель, но структура может быть передана по ссылке, например: OrderSend(MqlTradeRequest& request, MqlTradeResult& result) - в подавляющем большинстве случаев этого достаточно.