Alexey Viktorov: С этого лучше не начинать. Именно это и отпугивает. Даже я, сторонник ООП плохо его знающий от этого текста встал в ступор... ничего не понял. Поэтому стараюсь объяснить разницу на самом низком уровне.
Можно и проще.
ООП - позволяет определить единый интерфейс. После чего - все платформоспецифические вещи "прячутся", и не мешают при работе.
Это можно, конечно, сделать и в чисто процедурном подходе. Но, поддержка процедурного варианта будет сложнее, за счет того, что в каждой функции придется иметь дело со всеми платформами сразу.
Как только пользователь вызывает функцию Новый_бар(), то он получает от нее ответ о событии нового бара на запрашиваемом таймфрейме. При этом, после вызова функции, если событие нового бара произошло, - флаг события снимается. То есть, получить уведомление о новом баре нужного таймфрейма можно только один раз за каждый бар. Ведь после получения уведомления о новом баре, этот бар уже новым не является.
Вот первый вариант функции. Можно дорабатывать и развивать дальше. Если кто заметит ошибку, пожалуйста комментируйте.
Навскидку - вроде все нормально. Глубоко не копал.
Лично я, наверно, просто делил бы предыдущее и текущее время на продолжительность бара, если значение изменилось - то пришел новый бар. Но, можно и так.
Что касается стиля - лично меня несколько напрягает, что по виду переменных нельзя определить, какого она типа (я привык к "венгерской нотации, когда префиксом любой переменной является сокращенное наименование ее типа), но, возможно, это излишне.
Andrey Kisselyov: @Реter Konow даже без ООП можно сделать проще, подумайте и попробуйте.
с уважением.
Насколько я правильно понимаю. Цель - сделать так чтоб работало. Выложи бы он защищенный файл с этой функцией - в жизни бы не догадались что написана именно так.
Навскидку - вроде все нормально. Глубоко не копал.
Лично я, наверно, просто делил бы предыдущее и текущее время на продолжительность бара, если значение изменилось - то пришел новый бар. Но, можно и так.
Что касается стиля - лично меня несколько напрягает, что по виду переменных нельзя определить, какого она типа (я привык к "венгерской нотации, когда префиксом любой переменной является сокращенное наименование ее типа), но, возможно, это излишне.
Ну, восприятие стиля это дело привычки. Мне вот тоже тяжело читать коды приводимые на ветках. Просто бесит иногда.))
ООП - позволяет определить единый интерфейс. После чего - все платформоспецифические вещи "прячутся", и не мешают при работе.
Это можно, конечно, сделать и в чисто процедурном подходе. Но, поддержка процедурного варианта будет сложнее, за счет того, что в каждой функции придется иметь дело со всеми платформами сразу.
Вроде ведь уже обсуждали, что единый интерфейс совершенно не применим для программирования любых вычислительных задач... Наведение красивостей в виде интерфейсов - это чисто косметическая процедура, которая применима только к уже готовому коду и которая к тому же мешает далее поддержке и доработке кода...
Насколько я правильно понимаю. Цель - сделать так чтоб работало. Выложи бы он защищенный файл с этой функцией - в жизни бы не догадались что написана именно так.
желательно чтоб оно не просто работало, а работало быстро, точно, без ошибок, имело структурированный вид в исходнике и понятное написание.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
С этого лучше не начинать. Именно это и отпугивает. Даже я, сторонник ООП плохо его знающий от этого текста встал в ступор... ничего не понял. Поэтому стараюсь объяснить разницу на самом низком уровне.
Можно и проще.
ООП - позволяет определить единый интерфейс. После чего - все платформоспецифические вещи "прячутся", и не мешают при работе.
Это можно, конечно, сделать и в чисто процедурном подходе. Но, поддержка процедурного варианта будет сложнее, за счет того, что в каждой функции придется иметь дело со всеми платформами сразу.
Прошу прощения за небольшую задержку.
Вот первый вариант функции. Можно дорабатывать и развивать дальше. Если кто заметит ошибку, пожалуйста комментируйте.
с уважением.
Вот первый вариант функции. Можно дорабатывать и развивать дальше. Если кто заметит ошибку, пожалуйста комментируйте.
Навскидку - вроде все нормально. Глубоко не копал.
Лично я, наверно, просто делил бы предыдущее и текущее время на продолжительность бара, если значение изменилось - то пришел новый бар. Но, можно и так.
Что касается стиля - лично меня несколько напрягает, что по виду переменных нельзя определить, какого она типа (я привык к "венгерской нотации, когда префиксом любой переменной является сокращенное наименование ее типа), но, возможно, это излишне.
@Реter Konow даже без ООП можно сделать проще, подумайте и попробуйте.
с уважением.
@Реter Konow даже без ООП можно сделать проще, подумайте и попробуйте.
с уважением.
Насколько я правильно понимаю. Цель - сделать так чтоб работало. Выложи бы он защищенный файл с этой функцией - в жизни бы не догадались что написана именно так.
Навскидку - вроде все нормально. Глубоко не копал.
Лично я, наверно, просто делил бы предыдущее и текущее время на продолжительность бара, если значение изменилось - то пришел новый бар. Но, можно и так.
Что касается стиля - лично меня несколько напрягает, что по виду переменных нельзя определить, какого она типа (я привык к "венгерской нотации, когда префиксом любой переменной является сокращенное наименование ее типа), но, возможно, это излишне.
Ну, восприятие стиля это дело привычки. Мне вот тоже тяжело читать коды приводимые на ветках. Просто бесит иногда.))
Можно и проще.
ООП - позволяет определить единый интерфейс. После чего - все платформоспецифические вещи "прячутся", и не мешают при работе.
Это можно, конечно, сделать и в чисто процедурном подходе. Но, поддержка процедурного варианта будет сложнее, за счет того, что в каждой функции придется иметь дело со всеми платформами сразу.
Вроде ведь уже обсуждали, что единый интерфейс совершенно не применим для программирования любых вычислительных задач... Наведение красивостей в виде интерфейсов - это чисто косметическая процедура, которая применима только к уже готовому коду и которая к тому же мешает далее поддержке и доработке кода...
Насколько я правильно понимаю. Цель - сделать так чтоб работало. Выложи бы он защищенный файл с этой функцией - в жизни бы не догадались что написана именно так.
с уважением.