Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Теперь скажите, - я выполнил задачу?
Да не с той стороны вы (все и Петер, и оппоненты) заходите ! Задачу можно выполнить и так, и так !
Сейчас придет ассемблерщик, и скажет, что он все может сделать еще более эффективно, и с еще меньшим потреблением ресурсов компьютера !
Только какой в этом смысл ?
На мой взгляд, об эффективности надо думать только тогда, когда не хватает скорости или памяти компьютера. Когда же их хватает - то гораздо важнее, чтобы было легко поддерживать и модифицировать систему. Пусть даже в некоторый ущерб скорости работы программы и используемой памяти.
Русские названия - меня ничуть не смущают, единственное, что напрягает - я привык к преффиксам, чтобы по виду переменной сразу можно было понять ее тип. А русский или английский идентификатор - разница невелика (1С - там много русского).
Но больше всего, меня, конечно, удивляет добровольный отказ от отладчика. Просто мазохизм какой-то... Я могу понять, когда отладчика просто нет (одно время не было отладки на исторических данных) - приходится изворачиваться, выдавать отладочные сообщения, логи... Но если есть отладчик - с ним же работать наголову и удобнее, и эффективнее !
Да не с той стороны вы (все и Петер, и оппоненты) заходите ! Задачу можно выполнить и так, и так !
Сейчас придет ассемблерщик, и скажет, что он все может сделать еще более эффективно, и с еще меньшим потреблением ресурсов компьютера !
Только какой в этом смысл ?
На мой взгляд, об эффективности надо думать только тогда, когда не хватает скорости или памяти компьютера. Когда же их хватает - то гораздо важнее, чтобы было легко поддерживать и модифицировать систему. Пусть даже в некоторый ущерб скорости работы программы и используемой памяти.
Русские названия - меня ничуть не смущают, единственное, что напрягает - я привык к преффиксам, чтобы по виду переменной сразу можно было понять ее тип. А русский или английский идентификатор - разница невелика (1С - там много русского).
Но больше всего, меня, конечно, удивляет добровольный отказ от отладчика. Просто мазохизм какой-то... Я могу понять, когда отладчика просто нет (одно время не было отладки на исторических данных) - приходится изворачиваться, выдавать отладочные сообщения, логи... Но если есть отладчик - с ним же работать наголову и удобнее, и эффективнее !
Петр, вы подменили задачу. Ваше решение иногда нужно, но очень редко, притом не чисто в таком виде, но похожем.
Чаще другая задача - появление новых баров надо отслеживать в разных местах программы. Поэтому, передавать в функции символ и таймфрем и искать их в массивах - решение вообще не подходящее. Поскольку функция isNewBar имеет статическую переменную, для каждого символа-таймфрема нужно делать копию функции. Можно передавать в функцию по ссылке переменную для последнего времени.
Но есть идеальный вариант с ООП - создается свой объект для каждого символа - таймфрейма.
Это если не считать, что функция isNewBar вообще не нужна, чисто потереотезировать, от нечего делать.
Петр, вы подменили задачу. Ваше решение иногда нужно, но очень редко, притом не чисто в таком виде, но похожем.
Чаще другая задача - появление новых баров надо отслеживать в разных местах программы. Поэтому, передавать в функции символ и таймфрем и искать их в массивах - решение вообще не подходящее. Поскольку функция isNewBar имеет статическую переменную, для каждого символа-таймфрема нужно делать копию функции. Можно передавать в функцию по ссылке переменную для последнего времени.
Но есть идеальный вариант с ООП - создается свой объект для каждого символа - таймфрейма.
Это если не считать, что функция isNewBar вообще не нужна, чисто потереотезировать, от нечего делать.
Я ничего не подменял. Просто эту задачу решил иначе. Следуя Вашей логике, я неизбежно должен был придти к необходимости ООП. Однако, как ни крути, можно спокойно использовать мое решение. Любая функция, в любой момент времени и из любого места программы обращается к глобальному массиву за событием нового бара по любому символу и любому таймфрейму.
Не важно сколько символов и сколько таймфреймов, - в моем решении их количество не увеличивает нагрузку на систему. Просто смотрите в массив - есть или нет события нового бара.
Можно сократить список символов, если не брать их из обзора рынка, а вписать в массив Symbols[] вручную. Пожалуйста.
Добавлено:
Кстати, обратите внимание, - функции Новый_бар() уже нет. Она действительно оказалась ненужна. Вы были правы.
Мне была поставлена задача: сделать так, чтобы получать события нового бара множества символов, на множестве таймфреймов, без ООП, и чтобы это был короткий и эффективный код.
Теперь скажите, - я выполнил задачу?
Безусловно ДА. Но!!! Так случилось, моё предложение чуток переиначили и в результате вы поняли так как поняли. На форексе интересуют данные исключительно те которые нужны здесь и сейчас. Нужна информация по одному инструменту и текущему периоду, всё - другая не интересует. Нужна информация по другому символу и определённому периоду, значит тем-же кодом её надо получить. И нет никакой необходимости нагружать систему получением информации которая сейчас совсем не нужна.
Это не ваша вина, так получилось. Я пытался вас остановить, но не смог.
Петр, вы подменили задачу.
Не он подменил. Так было предложение перефразировано, что он его понял именно так.
Безусловно ДА. Но!!! Так случилось, моё предложение чуток переиначили и в результате вы поняли так как поняли. На форексе интересуют данные исключительно те которые нужны здесь и сейчас. Нужна информация по одному инструменту и текущему периоду, всё - другая не интересует. Нужна информация по другому символу и определённому периоду, значит тем-же кодом её надо получить. И нет никакой необходимости нагружать систему получением информации которая сейчас совсем не нужна.
Это не ваша вина, так получилось. Я пытался вас остановить, но не смог.
Никаких проблем, - впишите в массив Symbols[] наименования нужных Вам символов и все.
Уберите запись из OnInit():
И инициализируйте массив в глобальной области:
И уберите лишние таймфреймы из массива Timeframes[];
Измените переменную
И измените переменную All_Symbols:
int All_symbols = 3;
Так будете получать события только по нужным символам и нужным таймфреймам.
Добавлено:
Уберите также из OnInit() установку размеров массивов, так как количество символов вам известно:
Я ничего не подменял. Просто эту задачу решил иначе. Следуя Вашей логике, я неизбежно должен был придти к необходимости ООП. Однако, как ни крути, можно спокойно использовать мое решение. Любая функция, в любой момент времени и из любого места программы обращается к глобальному массиву за событием нового бара по любому символу и любому таймфрейму.
Не важно сколько символов и сколько таймфреймов, - в моем решении их количество не увеличивает нагрузку на систему. Просто смотрите в массив - есть или нет события нового бара.
Можно сократить список символов, если не брать их из обзора рынка, а вписать в массив Symbols[] вручную. Пожалуйста.
Добавлено:
Кстати, обратите внимание, - функции Новый_бар() уже нет. Она действительно оказалась ненужна. Вы были правы.
Если так, как выделено жирным - то в корзину.
Если так, как выделено жирным - то в корзину.
Никаких проблем, - впишите в массив Symbols[] наименования нужных Вам символов и все.
Уберите запись из OnInit():
И инициализируйте массив в глобальной области:
И уберите лишние таймфреймы из массива Timeframes[];
Измените переменную
И измените переменную All_Symbols:
Так будете получать события только по нужным символам и нужным таймфреймам.
Петр, остановитесь. Мне не нужна никакая другая функция определения нового бара кроме своей. Ну так случилось, что все ваши труды стали не нужными, извините.