Порядок не должен меняться если он есть, а пока есть основания полагать, что его просто нет
Порядок есть, это же алгоритм.
При старте советник имеет сортировку по тикетам. Во время вызовов только HistorySelect(0, INT_MAX) новые ордера попадают всегда в конец. Потому что этот вызов HistorySelect - это прямой доступ к кешу, который всегда формируется дописыванием. Вызов не от нуля - автоматическая сортировка по тикету. Это весь текущий алгоритм.
Мне нужно было отладить синхронизацию ордеров/позиций/сделок в определенной ситуации. Оказалось, что HistorySelect выдает совсем иные данные после старта советника, чем когда советник работал.
A100:
В документации к использованным в коде функциям не указано, что вообще какой-то строгий порядок должен быть, не написано про упорядоченный список.
Ничего бы не поменялось, если бы написали об этом в документации. Когда говорю о правильно/неправильно, имею в виду не баг, а логику торгового применения и производительность решения.
Не просто так кеш работает именно правильно. Потому что при написании максимально производительного решения было логичным дозаписывать в конец, а не в середину.
Ничего бы не поменялось, если бы написали об этом в документации. Когда говорю о правильно/неправильно, имею в виду не баг, а логику торгового применения и производительность решения.
Не просто так кеш работает именно правильно. Потому что при написании максимально производительного решения было логичным дозаписывать в конец, а не в середину.
Этим и объясняется результат: когда есть кеш, то логично дописать в конец. А когда его нет - то идет построение списка с самого начала. Т.е. в каждом конкретном случае выбирается более производительное решение
Этим и объясняется результат: когда есть кеш, то логично дописать в конец. А когда его нет - то идет построение списка с самого начала. Т.е. в каждом конкретном случае выбирается более производительное решение
Кеш должен быть всегда. Например, все HistorySelect запрашиваются в советнике с постоянной даты.
Старая болезнь - вот просто уже сильно сильно надоела: при визуальном тестировании НЕ ОТОЬБРАЖАЮТСЯ индикаторы, которые используются в советнике. Причем можно раз десять делать запуск тестирования - стоп - и снова запуск чтобы индикаторы появились. Пожалуйста сделайте что-то с этим - я уже не знаю как оправдываться перед людьми.
Vladimir Karputov: Старая болезнь - вот просто уже сильно сильно надоела: при визуальном тестировании НЕ ОТОЬБРАЖАЮТСЯ индикаторы, которые используются в советнике. Причем можно раз десять делать запуск тестирования - стоп - и снова запуск чтобы индикаторы появились. Пожалуйста сделайте что-то с этим - я уже не знаю как оправдываться перед людьми.
Если в Wizard сгенерировать советник, то все индикаторы в визуальном режиме и на выходе отражаются. Наверное у нас недоработка в коде. Нужно бы покопаться и доработать. У меня тоже не показывает.
Порядок не должен меняться если он есть, а пока есть основания полагать, что его просто нет
Порядок есть, это же алгоритм.
При старте советник имеет сортировку по тикетам. Во время вызовов только HistorySelect(0, INT_MAX) новые ордера попадают всегда в конец. Потому что этот вызов HistorySelect - это прямой доступ к кешу, который всегда формируется дописыванием. Вызов не от нуля - автоматическая сортировка по тикету. Это весь текущий алгоритм.
Мне нужно было отладить синхронизацию ордеров/позиций/сделок в определенной ситуации. Оказалось, что HistorySelect выдает совсем иные данные после старта советника, чем когда советник работал.
В документации к использованным в коде функциям не указано, что вообще какой-то строгий порядок должен быть, не написано про упорядоченный список.
Ничего бы не поменялось, если бы написали об этом в документации. Когда говорю о правильно/неправильно, имею в виду не баг, а логику торгового применения и производительность решения.
Не просто так кеш работает именно правильно. Потому что при написании максимально производительного решения было логичным дозаписывать в конец, а не в середину.
Ничего бы не поменялось, если бы написали об этом в документации. Когда говорю о правильно/неправильно, имею в виду не баг, а логику торгового применения и производительность решения.
Не просто так кеш работает именно правильно. Потому что при написании максимально производительного решения было логичным дозаписывать в конец, а не в середину.
Этим и объясняется результат: когда есть кеш, то логично дописать в конец. А когда его нет - то идет построение списка с самого начала. Т.е. в каждом конкретном случае выбирается более производительное решение
Этим и объясняется результат: когда есть кеш, то логично дописать в конец. А когда его нет - то идет построение списка с самого начала. Т.е. в каждом конкретном случае выбирается более производительное решение
Кеш должен быть всегда. Например, все HistorySelect запрашиваются в советнике с постоянной даты.
Торговый класс CPositionInfo.mqh
'POSITION_COMMISSION' я так понимаю выведена из оборота, раз это значение не подсвечивается в редакторе?
Торговый класс CPositionInfo.mqh
'POSITION_COMMISSION' я так понимаю выведена из оборота, раз это значение не подсвечивается в редакторе?
Меня тоже смущает этот момент!
Старая болезнь - вот просто уже сильно сильно надоела: при визуальном тестировании НЕ ОТОЬБРАЖАЮТСЯ индикаторы, которые используются в советнике. Причем можно раз десять делать запуск тестирования - стоп - и снова запуск чтобы индикаторы появились. Пожалуйста сделайте что-то с этим - я уже не знаю как оправдываться перед людьми.
Торговый класс CPositionInfo.mqh
'POSITION_COMMISSION' я так понимаю выведена из оборота, раз это значение не подсвечивается в редакторе?
В стандартной библиотеке стоит, я пользуюсь, фиолетовенькая.
"Получает размер комиссии по позиции."