[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 405
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1. С чего бы то вдруг? Тут просто нужно через else, добавить, что функция возвращало ещё какое-то значение, что будет значить, что мол " Нет цены ". По ходу логично. Когда накидал функцию, думал больше о предыдущей логике, потом не обратил внимания на конец её. А почему функция 0 вернёт сама по себе что-то я не понял...
2. А зачем тогда Ask вообще (если уж говорить о цене покупки канкретно), если можно всегда использовать MarketInfo(fs_symbol, MODE_ASK) ? Ведь если так посмотреть, обращаясь к Ask нельзя быть уверенным что он точный в данный момент времени?
1. Просто так. Функция объявлена как double, значит при вызове вернет double независимо от того, вызывался ли в ней return. Если добавить else... но пока этого else нет.
2. Если без разницы, нажать ли 3 клавиши или 30, то и не нужны эти Bid и Ask. Если эксперт не делает длительных вычислений, то все нормально, удобно пользоваться Bid и Ask. А если делает длительные вычисления, то можно использовать RefreshRates(). Все можно делать несколькими способами.
По ходу практически нам нужно другое, на сколько я понимаю. А нужно нам последние Ask и Bid серверные, а не локальные терминальные. Ведь так?
Вот потому тут я развёл дискуссию, чтоб раз и на всегда понять, как логичнее и правильнее это организовывать. Ибо теоритически то верно, а практически...
Сервер где-то там, а нам дан терминал для контакта с сервером. Если связь есть, значит последняя цена в терминале будет соответствовать последней цене на сервере. Если же связи нет, то и без разницы какие там вообще цены.
1. Просто так. Функция объявлена как double, значит при вызове вернет double независимо от того, вызывался ли в ней return. Если добавить else... но пока этого else нет.
2. Если без разницы, нажать ли 3 клавиши или 30, то и не нужны эти Bid и Ask. Если эксперт не делает длительных вычислений, то все нормально, удобно пользоваться Bid и Ask. А если делает длительные вычисления, то можно использовать RefreshRates(). Все можно делать несколькими способами.
1. Да, я просто переутомился видать, вот и написал глупость..
2. Длительные это понятие относительное. Вы предлагаете замерять скорость вычислений среднюю?
Сервер где-то там, а нам дан терминал для контакта с сервером. Если связь есть, значит последняя цена в терминале будет соответствовать последней цене на сервере. Если же связи нет, то и без разницы какие там вообще цены.
Если предположить, как Вы написали, что у терминала последнее значение переменной рыночных данных, в нашем случае цены, соответствует последнему значению сервера, то получается терминал сам обновляет переменные рыночного окружения при наличии связи с сервером, а из этого следует, что функция RefreshRates() не нужна. Но это не так, потому что функция то есть, а значит, не всегда видать цены обновлены будут ,верно?
Я не спорю, а спрашиваю, аргументируя свою точку зрения.. Прошу это заметить!
Если предположить, как Вы написали, что у терминала последнее значение переменной рыночных данных, в нашем случае цены, соответствует последнему значению сервера, то получается терминал сам обновляет переменные рыночного окружения при наличии связи с сервером, а из этого следует, что функция RefreshRates() не нужна. Но это не так, потому что функция то есть, а значит, не всегда видать цены обновлены будут ,верно?
Я не спорю, а спрашиваю, аргументируя свою точку зрения.. Прошу это заметить!
Если во время расчетов в советнике пришли новые тики (при работе функции start()), советник о них (тиках) не узнает. RefreshRates() позволяет использовать последние, обновленные цены, но эта функция не обращается к серверу. Обновляется рыночное окружение известное терминалу. Ни одна функция, кроме торговых, не обращается к серверу
Если во время расчетов в советнике пришли новые тики (при работе функции start()), советник о них (тиках) не узнает. RefreshRates() позволяет использовать последние, обновленные цены, но эта функция не обращается к серверу. Обновляется рыночное окружение известное терминалу. Ни одна функция, кроме торговых, не обращается к серверу
Так если запрос локальный, а не к серверу, значит эта функция должно отрабатывать мгновенно! А выше было сказано, что функция RefreshRates() может не успеть обновить данные рыночного окружения...
Так если запрос локальный, а не к серверу, значит эта функция должно отрабатывать мгновенно! А выше было сказано, что функция RefreshRates() может не успеть обновить данные рыночного окружения...
Она и отрабатывает. И обновляет, если есть что обновить. Но если нового тика не было, обновлять нечего
Она и отрабатывает. И обновляет, если есть что обновить. Но если нового тика не было, обновлять нечего
Так если нового тика не было, цена не изменится.. и есс-но прежние цены будут актуальны. Значит не нужно нечего усложнять!
А Вадим сверху писал, что типа нужно проверять этот момент. Но логики в его словах я не нашёл, и аргументации тоже. Странно... Получается где угодно я вставляю RefreshRates(), в тот же миг последние известные данные с терминала становяться используемыми вместо предыдущих, и всё идёт как нужно. При условии, что RefreshRates() вернула ТРУ. А если False значит, данные не изменились, и работает с предыдущими ценами... Я верно рассуждаю?
Выходит, что не нужно заморачиваться. вызвал RefreshRates() и всё отработается с актуальными данными..