[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 749
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Господа программисты. Не могли бы вы мне помочь.
из вводных переменных
extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;
int start(){
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
}
}
я хочу добавить второй промежуток времени когда должна вестись торговля с другими переменными UseHourTrade2, FromHourTrade2, ToHourTrade2.
Пожалуйста помогите. скажите пожалуйста что нужно добавить в функцию старт. Просто я уже чего-только не пробовал - не получается.
Заранее благодарен. Борис.
Как то так, наверно.
ЗЫ Кнопкой вставки кода "SRC" пользуйтесь, читать неудобно.
Заморочка такого плана.
Индикатор в самом конце кода создает объект, который служит флагом для другого индикатора.
Надо, после создания объекта, "усыпить" индикатор, скажем, на 5 сек, после чего удалить объект и усыпить уже сек. на 60, после чего он перейдет к последнему ретурну и с новым тиком начнет сначала.
Пытаюсь делать так
Зависает, пока, видимо, не закончится while.
Подскажите что нить умное.
Логика такая - оба индикатора знают имя объекта, и еще одного дополнительного объекта
первый создает объект и при его наличии постоянно ничего не делает - в самом начале старта прописываем это условие на выход (return;)
второй читает обьект, делает свои дела и выставляет дополнительный объект
первый не видя основного объекта выходит из ничего не делания и сразу находит второй ( доп объект), читает время создания объекта ( его туда ложит второй индюк в описание при создании), отсчитывает нужную паузу (60 сек) и удаляет, все объектов нет - можно работать дальше....
Не работает в индикаторах. Причину сделать именно так - не понимаю. Видимо, постоянно работающий индикатор должен гипнотизировать :)
Причина в том, что индикатор работает в интерфейсном потоке, его усыплять нельзя, потому что если бы вы могли его «тормознуть», то в этот момент нельзя было бы нажать ни одну кнопку в терминале, например «Новый ордер», или закрыть ордер, ну и т.д.
Еще одна тонкость в этой теме, касается тестера. В реале есть несколько потоков, один интерфейсный, отдельно создается для советников (поэтому его и можно тормозить без последствий), а в тестере он один за всех, и все на одного :)
Поэтому в режиме тестирования так специфически работает функция Sleep(). Если вы усыпите поток тестера, то соответственно перестанет работать вообще все, и советники, и индикаторы, ну и генерация тиков естественно тоже. Поэтому если я правильно понял вашу задумку, ее можно будет проверить только на демо, и уж если захотите тормознуть интерфейсный поток то можно воспользоваться например такой функцией:
отсчитывает нужную паузу (60 сек)
читайте внимательно, я все расписал, причем совсем не обязательно при этом использовать граф объект, можно обойтись и глобалками....
Причина в том, что индикатор работает в интерфейсном потоке, его усыплять нельзя...
Вон оно как... теперь посветлело, спасибо.
Блин, ну что за камни. В один индикатор нельзя, усыплять нельзя... попробую с глобальными переменными замутить.
читайте внимательно, я все расписал, причем совсем не обязательно при этом использовать граф объект, можно обойтись и глобалками....
... попробую с глобальными переменными замутить.
А вот это правильно, про это кажется, еще Рустам намекнул, потому как приостановка потоков, это последнее чем нужно заниматься, так сказать, крайняя мера, причем не только в MQL, а вообще во всех языках программирования.