Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Одного достаточно.
Дополнительно проверяю на "". Сам же всегда при вызове методов для текущего символа использую NULL.
Ваш код не даст ускорение.
Мне сложно объяснять очевидные вещи. В этом коде возможно ускорить GetMarketWatchTick.
Вы считаете, что если даже параметром Symbol передать _Symbol, то в функцию SymbolInfoTick() будет передана строка?
Не думаю, что нет проверок внутри стандартных функций на равенство строки текущему символу, и при таких явных параметрах начинаются проверки "по полной программе" при наличии под рукой кэша для текущего символа.
Ускорение происходит на этапе компиляции, а не во время выполнения.
Компилятор делает такую замену:
Во всех остальных случаях замена не делается.
Ускорение происходит на этапе компиляции, а не во время выполнения.
Компилятор делает такую замену:
Во всех остальных случаях замена не делается.
Ну. О чём я и говорил - ваш код НЕ ускорит штатную функцию для НЕ текущего символа. Равно, как и НЕ ускорит для текущего.
И мой не ускорит. И не ускорял никогда. Я и не питал иллюзий на этот счёт. Но всегда подставляю Symbol() или NULL при обращении к штатным функциям, если в мою функцию передан NULL или "". Это вызывает быстрый код штатной функции - где берутся данные из кэша для текущего символа.
Если при вызове моей функции используется Symbol() или _Symbol - разве НЕ проверяется внутри штатной функции его совпадение с текущим символом? Неужели будет исполняться код с проверками текущего символа по полной программе? Вот не верится как-то...
Ну. О чём я и говорил - ваш код НЕ ускорит штатную функцию для НЕ текущего символа. Равно, как и НЕ ускорит для текущего.
Возможно, Вам кто-то более доходчиво объяснит. У меня не получилось.
Возможно, Вам кто-то более доходчиво объяснит. У меня не получилось.
Что вы колдовством ускоряете штатные функции?
Вы используете подстановку значения текущего символа при передаче его в штатную функцию для того, чтобы она использовала данные для текущего символа из кэша. Это НЕ ускоряет штатную функцию, а использует её скорость для текущего символа.
Вы НЕ можете ускорить то, к исходнику чего вы не имеете доступа. Вы используете стандартный приём для правильного вызова функции. Но я не уверен, что если Symbol будет указан строкой как "EURUSD" при работе на EURUSD, т.е., это использование текущего символа, то штатная функция не проверит равенство строки "EURUSD" значению Symbol() и не будет использовать данные из кэша, а начнёт проверять символ по полной программе.
Так всё-таки, где ускорение штатной функции? Если оно есть, то это более чем интересно и полезно.
В MT4 аналогично? И в MT5-Тестере как с этим?
С CopyTicks аналогично?
Возможно, Вам кто-то более доходчиво объяснит. У меня не получилось.
Скорее всего, у вас не получилось понять мой вопрос. Я его повторял несколько раз (и этот вопрос был НЕ про "ускорение штатной функции").
если указан обычный строковый параметр вместо Symbol(), _Symbol или NULL, то производятся проверки по полной программе и ещё запрос свойств
В этом объяснении по какой-то причине не написано, что если строковый параметр равен текущему символу, то проверки по полной не делаются.