[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 406

 
В Bid и Ask находятся значения на момент запуска функции Star(). Функция MarketInfo() дает актуальные (самые свежие значения). Функция RefreshRates() обновлеяет переменные Bid и Ask.
hoz:

1. Да, я просто переутомился видать, вот и написал глупость..

2. Длительные это понятие относительное. Вы предлагаете замерять скорость вычислений среднюю?

 

3. Если предположить, как Вы написали, что у терминала последнее значение переменной рыночных данных, в нашем случае цены, соответствует последнему значению сервера, то получается терминал сам обновляет переменные рыночного окружения при наличии связи с сервером,

4. а из этого следует, что функция RefreshRates() не нужна. Но это не так, потому что функция то есть, а значит, не всегда видать цены обновлены будут ,верно?

 Я не спорю, а спрашиваю, аргументируя свою точку зрения.. Прошу это заметить!


2. Где вы это увидели и как пришли к такому удивительному выводу?

3. Да. Представляете, только взгляните в окно обзора рынка, как там безостановочно цифры скачут.

4. Переменным Bid и Ask присваиваются (терминалом) значения которые имелись на момент запуска функции Start, как бы долго функция не выполнялась, значения в Bid и Ask будут теже. Поэтому нужна RefreshRates() или следует пользоваться MarketInfo()

 
hoz:

Так если запрос локальный, а не к серверу, значит эта функция должно отрабатывать мгновенно! А выше было сказано, что функция RefreshRates() может не успеть обновить данные рыночного окружения...

Где когда и кем это было сказано? Нет никаких проблем.
 
hoz:


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

А Вадим сверху писал, что типа нужно проверять этот момент. Но логики в его словах я не нашёл, и аргументации тоже. Странно... Получается где угодно я вставляю RefreshRates(), в тот же миг последние известные данные с терминала становяться используемыми вместо предыдущих, и всё идёт как нужно. При условии, что RefreshRates() вернула ТРУ. А если False значит, данные не изменились, и работает с предыдущими ценами... Я верно рассуждаю?

 Выходит, что не нужно заморачиваться. вызвал RefreshRates() и всё отработается с актуальными данными..


Все верно
 
Roger:
break; пробовали?
В учебнике сообщается, что оператор 
break; 

прерывает  составные операторы while, for или switch. В моем случае данных операторов нет. Есть серия операторов if, действие, которых нужно прервать на определенном участке.

В любом случае пробую так:

if (условие)
        {                                          
        Opn_B=true;
        Cls_S=true;   
        break;                    
        } 
 Сообщается об ошибке: 'break' - 'break' or 'continue' used within some cycle only. 
 
Integer:
В Bid и Ask находятся значения на момент запуска функции Star(). Функция MarketInfo() дает актуальные (самые свежие значения). Функция RefreshRates() обновлеяет переменные Bid и Ask.


2. Где вы это увидели и как пришли к такому удивительному выводу?

3. Да. Представляете, только взгляните в окно обзора рынка, как там безостановочно цифры скачут.

4. Переменным Bid и Ask присваиваются (терминалом) значения которые имелись на момент запуска функции Start, как бы долго функция не выполнялась, значения в Bid и Ask будут теже. Поэтому нужна RefreshRates() или следует пользоваться MarketInfo()


1. Да, т.е. после запуска start() у нас есть 1 тик, что успеть всё рассчитать, иначе, если не успеваем, нужно обновлять.. Логично.

2. Ну Вы ж писали дословно:

Integer:

А если делает длительные вычисления, то можно использовать RefreshRates()

 3. Ну я это и имел ввиду. 

 
Integer:

Где когда и кем это было сказано? Нет никаких проблем.


Вот на странице:

https://www.mql5.com/ru/forum/142582/page404 это написал Вадим,

 

Zhunko

 RefreshRates(); // Зачем этот тормоз без обработки возвращаемого значения?

 Вот это меня и смутило, честно говоря... 

 
hoz:


Вот на странице:

https://www.mql5.com/ru/forum/142582/page404 это написал Вадим,

 

 Вот это меня и смутило, честно говоря... 

В понедельник проверю. Возможно, что ошибаюсь.

================================== 

Во всяком случае, без RefreshRates() мои советники работать не будут. Делаю их зацикленными. Поэтому RefreshRates() обязательна.

Первоначальную подкачку истории произвожу по этому принципу. Потом периодически подкачиваю. Иначе образуются "дыры" в истории, с которой работает эксперт. Почему это происходит - не знаю. Пробовал использовать RefreshRates() для подкачки. Это работает не всегда. Выше описал проблему. Иногда приходит только последний бар.

Если открыт график инструмента, то по нему всегда есть история. Ошибок не было ниразу в таком случае. "Дыра" появлялась, когда график требуемого инструмента не открыт.

 
Forexman77:
В учебнике сообщается, что оператор 

прерывает  составные операторы while, for или switch. В моем случае данных операторов нет. Есть серия операторов if, действие, которых нужно прервать на определенном участке.

В любом случае пробую так:

 Сообщается об ошибке: 'break' - 'break' or 'continue' used within some cycle only. 

Если Вы ищите оператор GoTo, то такого нет, но как показывает практика он и не нужен. Чтобы точно порекомендовать Вам решение, нужно увидеть Вашу цель. Покажите в общих чертах Ваш алгоритм.

 
Roger:

Если Вы ищите оператор GoTo, то такого нет, но как показывает практика он и не нужен. Чтобы точно порекомендовать Вам решение, нужно увидеть Вашу цель. Покажите в общих чертах Ваш алгоритм.

 Спасибо, уже нашел способ решения задачи.
 
Forexman77:
 Спасибо, уже нашел способ решения задачи.

Вот... и многие так... Задают вопрос, который может интересовать и некоторых других начинающих. Потом найдут решение и, вместо того, чтобы показать его, говорят: "Ой, благодарю всех покорно, я всё нашёл и сделал, можете меня теперь всю неделю не бояться ... " ... и считают, что на этом всё... А решение этой  проблемы так и не показали. И начинается по кругу... Следующий идёт с тем же самым вопросом.

Вот скажите, что такого ужасно-секретного в вашем алгоритме и способе его решения, что как только вас, пытаясь вам же и помочь, попросили показать алгоритм в общих чертах, вы тут же отписались, что всё "зер гут" ?

Тогда уж и не задавайте вопросов лишних, если не думаете о других вопрошающих..., либо - нашли решение сами (ай молодца!!!), покажите другим...

Причина обращения: