Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1373

 
leon_17 #:

Провел пару тестов... тут вот какое дело получается. На MQL5 использовать при создании объектов ObjectFind() вовсе необязательно.
Объект можно создавать без всяких предварительных проверок его существования (просто через ObjectCreate) и даже внутри OnTick такой код не вызывается никаких ошибок _LastError.

Не знаю как это реализовано в недрах системного кода MQL5, возможно там уже уже зашита какая-то проверка, что объект будет создаваться только, если его еще нет. Но получается, что по крайней мере при создании объекта внутри MQL5 ObjectFind()  просто не нужен. И видимо все его свойства безвариантно постоянно  обновляются на каждом тике.

Чего не не скажешь про MQL4. Там создание объекта поверх уже существующего вызывается ошибку 4200 ("Объект уже существует"). То есть для его создания использование  ObjectFind() уже обязательно. При этом остается простая возможность закрыть его свойства от постоянного переобновления без генерации ошибок _LastError.

Прошу подтвердить мои выводы.

Дело вовсе не в ошибках. Дело в том, что после создания объекта ему назначаются определённые свойства и зачем-же тратить машинное время и ресурсы на переопределение свойств без внесения изменений. Гораздо дешевле проверить существование и если объект есть то назначить новые свойства только те которые надо изменить. Например текстовая метка или Lable, часто менять надо только текст в этих объектах. А все остальные как есть так и остаются…
 
Mikhail Toptunov #:

Ну да вроде все понятно, но если появляется обрыв, например задержка, появилось два бара, их записываю.

Спасибо понял, попробую через CopyTime.

Ну, так если через CopyTime то вообще нет проблем. Просто копируйте от текущего 3000 баров и все дела.

 

Как задать уровень штатного трейлинг-стопа в коде программы при выставлении отложенного ордера или при открытии позиции с рынка?

Как это делается вручную, понятно. Программки для нештатных трейлинг-стопов не интересуют.

Заранее благодарю.

 
   for (int symbols; symbols < SymbolsTotal(true); symbols++) 
      {
        Print(SymbolName(symbols ,true));
      }

Почему такая конструкция не работает? Где ошибка... (в журнале пусто)


И енам, тоже пусто

enum c_mode
  {
   Auto,
   Manual,    
  };

input c_mode MODE         = Auto;

if (MODE==Auto) 
      {
      Print("MODE=Auto");
      } 
[Удален]  
int symbols=0;

и после Manual запятая не нужна

 

Добрый день.

При исполнении скрипта идет запись в FILE_BIN.  В процессе отладки хочу проверить, что в него записывается.

Какой программой можно открыть такой файл?

[Удален]  
sable57fx #:

Какой программой можно открыть такой файл?

Сделайте скрипт, который читает этот файл и пишет в логи терминала
 
Aleksei Stepanenko #:
Сделайте скрипт, который читает этот файл и пишет в логи терминала
Это  будет непременно делаться, но цель в том, чтобы визуально проконтролировать правильность записи.
[Удален]  
sable57fx #:

Отдельный скрипт как раз и поможет посмотреть что в bin. Второй вариант: пишите параллельно csv файл, специально для просмотра.

 
sable57fx #:

Добрый день.

При исполнении скрипта идет запись в FILE_BIN.  В процессе отладки хочу проверить, что в него записывается.

Какой программой можно открыть такой файл?

Перед записью в файл суньте в переменную то, что будет писаться и её поместите в наблюдение. Пошаговое выполнение даст возможность увидеть что будет записано…