Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 629

 
TarasBY:
Любую задачу можно решить разными способами. 6-ой год на рынке, но ни разу не возникло необходимости менять Магик (даже во времена "зелёной юности").
Всяко бывает. Например, если управление позицией необходимо передать другому советнику. 
 
tara:
Всяко бывает. Например, если управление позицией необходимо передать другому советнику. 
Ну, если другой советник тоже свой, то можно его накормить любым дополнительным магиком.
 
tara:
Всяко бывает. Например, если управление позицией необходимо передать другому советнику. 
Я делю советника на две части: аналитическую и торговую. Аналитическая часть у каждого советника уникальна, а вот административная у всех одинаковая (возможно, не все административные функции у каждого советника задействованы). И у меня нет необходимости передавать ордера м\у советниками.
 

Перерыл справку и сделал поиск по сайту, но не нашёл примеров по работе с функцией MessageBox. Подскажите, пожалуйста:

1. Можно ли менять расположение окна, выводимого MessageBox?

2. Можно ли менять наименование кнопок, например, с "Ok" и "Cancel" на "ага" и "нефиг"?

3. Что в этой функции делают флаги MB_DEFBUTTON - о каких кнопках речь и для чего это надо?

 

Доброго дня(или ночи).

А подскажите, если зациклить код (for или while  без разницы что), и в цикл всунуть код получения значения одного из индикаторов (ну или цену получать в переменную), будет ли оно работать?

Будет ли при новом тике переменная находящаяся в цикле постоянно при тике новом получать значения, ведь процедура зациклена?

 
culler:

Доброго дня(или ночи).

А подскажите, если зациклить код (for или while  без разницы что), и в цикл всунуть код получения значения одного из индикаторов (ну или цену получать в переменную), будет ли оно работать?

Будет ли при новом тике переменная находящаяся в цикле постоянно при тике новом получать значения, ведь процедура зациклена?

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

Чтоб быть на 100% уверенным, сделайте простой советник с вашим циклом и через Comment() выводите информацию на график и сразу будет видно правильные ли значения получаются в цикле.
 
paladin80:

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

Чтоб быть на 100% уверенным, сделайте простой советник с вашим циклом и через Comment() выводите информацию на график и сразу будет видно правильные ли значения получаются в цикле.


Спасибо.
То бишь будет работать. Это замечательно.

А кстати правильный такой подход в цикл или это немножко извращенно?

Заметил что из-за  цикла такого, повисает MT4 напрочь.

 
culler:


А кстати правильный такой подход в цикл или это немножко извращенно?

Заметил что из-за  цикла такого, повисает MT4 напрочь.


И любители извращений есть. Я про зацикливание. 
 
Всем привет. Поскажите как протестировать советник при 0 спреде. Может что нужно прописать в коде.
 
culler:


Спасибо.
То бишь будет работать. Это замечательно.

А кстати правильный такой подход в цикл или это немножко извращенно?

Заметил что из-за  цикла такого, повисает MT4 напрочь.


Из справки "Каждый скрипт и каждый эксперт работает в собственном отдельном потоке."

"Зацикленный скрипт или эксперт не может нарушить работу других программ"

т.е. можно использовать зацикливание.

 

Для данных задач я использую скрипт и такой шаблон:

void OnStart()
  {
   while(!IsStopped()) // пока скрипт не удалён с графика
     {
      bool is_new_tick=RefreshRates();
      // если true значит пришли новые котировки
      if(is_new_tick)
        {
         // код который необходимо выполнять при новых котировках
        }
      //остальной код
      Sleep(100);
     }
  }
Причина обращения: