Новый клиентский терминал MetaTrader 4 build 204 - страница 7

 

Интересно, чем вызвано желание загнать все параметры ордера в один массив?

Стандартизацией, чтобы при дальнейшей работе обращаться к данным масива, а не вызывать функции ордеров.
 
Если советник рассчитан на работу с одним ордером то обращение, например, к переменной stoploss не выглядит менее универсальным чем обращение к переменной OrdParam[16], но не требует преобразований. Если же речь идёт о работе с несколькими ордерами, мне кажется предпочтительнее обращение к элементу массива stoploss[Индекс ордера]. Такого типа схему для сопровождения ордеров я применял, она в общих чертах описана в "Пользовательские свойства ордера"
 
Если же речь идёт о работе с несколькими ордерами, мне кажется предпочтительнее обращение к элементу массива stoploss[Индекс ордера].


А если этот массив нужно не только прочесть, но и изменить в другом присоединяемом файле ?
Сколько тогда параметров нужно будет передавать в вызов такой процедуры ?

У меня позиция - вся информация хранится в самих ордерах. Часть из них может закрыться автоматом, часть по условиям. Поэтому каждый тик - это "чистый лист" - тик - и нужно выбрать ордера данного советника, прочесть их параметры, проверить условия ... и оставить в покое, если ничего не требуется.
Количество тиков для тестирования я согласен регулировать вариантом тестирования ("только по сформировавшимся барам", к примеру).
На данном этапе я в тупике - полная оптимизация показывает мне, что нужно подождать всего 63 года и все будет ОК :)
Где тормозит - не могу определить. Кто виноват - тоже :)
 
После предоставленного кода неудивительно, что эксперт долго работает.

Есть понятие "оптимизация кода", а тут налицо "антиоптимизация" :)))
 
После предоставленного кода неудивительно, что эксперт долго работает.

Есть понятие "оптимизация кода", а тут налицо "антиоптимизация" :)))


А поконкретней можна ? А то обругали - а ничего конкретного не сказали.
Оптимизация не должна быть в ущерб структуризации.
Я выслал Славе исходник советника.
Что именно написано неправильно - что тормозит ?
Платформе тяжело делать преобразования ? Передавать ссылку на массив ?

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

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


"Так писать нельзя" - очень аргументированный довод.
Я с таким же успехом могу сказать (что кстати на многих форумах и говорят) - что надо взять Метатрейдер и выкинуть. А вместо него взять для тестирования Омегу :)

Избыточность - это еще не потеря скорости.
Для того, чтобы сказать, что это неправильно мало сказать "так писать нельзя".

Может тормоза из-за того, что я использую для параметров ордера массив строк ?
Но я могу заменить его на массив другого типа.
Был бы тип "Структура" - я б ее использовал.

Да - и последнее. Я помощи не прошу.
Если разбираемся - то я готов содействовать в нахождении ошибок, если нет - я жду этого ответа и спокойно определяюсь с продуктом, где я смогу реализовать то, что хочу, протестить, отладить и т.д.

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

Кстати, можно обойтись и без структуры. Вместо строкового массива из 25 элементов использовать 25 переменных, каждая из которых будет сразу нужного типа. Если хотите структуризации, то используйте в именах этих переменных общий префикс.
 
Извините, но конкретно можно сказать одно - все надо выкинуть и написать заново. Так писать нельзя.
Причем Вы даже не понимаете в чем проблема. Помочь не смогу, ибо тут ситуация с кодом абсолютно безнадежная.


"Так писать нельзя" - очень аргументированный довод.
Я с таким же успехом могу сказать (что кстати на многих форумах и говорят) - что надо взять Метатрейдер и выкинуть. А вместо него взять для тестирования Омегу :)

Вероятно, Вы не принимаете во внимание то условие, что я не прошу у Вас помощи. Поэтому Вы не можете мне что-либо "сказать".

Но Вы просите помощи, показывая совершенно плохой код и не понимая его проблем. На что я ответил совершенно точно - "так писать нельзя - код нужно выбросить". Вы не можете требовать от меня чего-то дополнительно. Тем более - требовать публичного обучения в форуме.
 
А если этот массив нужно не только прочесть, но и изменить в другом присоединяемом файле ?
Сколько тогда параметров нужно будет передавать в вызов такой процедуры ?

По идее 2 параметра: адрес массива и индекс элемента. Впрочем, повторюсь, задачу я представляю по-прежнему довольно смутно, соответственно уверенности что говорю по делу нет.
У меня позиция - вся информация хранится в самих ордерах. Часть из них может закрыться автоматом, часть по условиям.

Там по ссылке есть и пример контроля автоматического закрытия ордеров. Для тестера он вполне годится, для реала можно перестраховаться и продублировать проверкой ещё и списка открытых ордеров.
Причина обращения: