Доступ из разных экспертов к одному файлу

 
Как правильно организовать чтение-запись данных в один файл из разных экспертов, чтобы они не блокировали друг друга?
 
во-первых, используйте глобальную переменную в качестве семафора (0-свободно, 1-занято)
во-вторых, после операции записи обязательно вызывайте функцию FileFlush для сброса буфера на диск (но это только в том случае, если Вы не закрываете файл)
семафор используйте так:
1. занято? если да, отваливаем
2. если свободно, занимаем семафор (пишем туда 1)
3. читаем файл, освобождаем семафор (пишем туда 0)
или
3. пишем файл, сбрасываем буфер на диск, освобождаем семафор
 
Это всё замечательно.
Но всё же форум не совсем то место, где пользователь должен черпать знания. Нужен учебник с примерами.

Можно ли узнать, как идёт работа над русскоязычным ресурсом, посвящённом экспертам и индикаторам, кот. планировалось создать на вашем сайте?
 
Можно ли узнать, как идёт работа над русскоязычным ресурсом, посвящённом экспертам и индикаторам, кот. планировалось создать на вашем сайте?

Работы вовсю уже идут - весь дизайн и реализация отдана в аутсорс. Правда ресурс не русскоязычный, а мультиязычный. Его базовое ядро - английское. Думаю, через месяц уже увидим первую бета-версию.
 
Его базовое ядро - английское.


Наши зарубежные друзья, конечно, обрадуются.

Единственное, что сдерживает мне работу на MQL4,- это отсутствие толкового описания. И не только мне. Русскоязычная аудитория, всё же, достаточно представительна.

А пока ресурса нет, ответьте, пожалуйста.
1. В МТ3 есть ограничение интервала 10 сек между управляющими воздействиями, формируемыми советником. Будет ли подобное ограничение в МТ4?
2. В МТ3 длительность работы советника ограничена 1сек. Будет ли подобное ограничение в МТ4?
 
1. В МТ3 есть ограничение интервала 10 сек между управляющими воздействиями, формируемыми советником. Будет ли подобное ограничение в МТ4?
между _торговыми_операциями_. Никто не отменял. Рекомендуют не 10, а 15-20 сек.


2. В МТ3 длительность работы советника ограничена 1сек. Будет ли подобное ограничение в МТ4?
Нет, никаких ограничений. Единственное, обещали проверку на бесконечный цикл сделать. А так всё пользователь сам контролирует.
 

А пока ресурса нет, ответьте, пожалуйста.
1. В МТ3 есть ограничение интервала 10 сек между управляющими воздействиями, формируемыми советником. Будет ли подобное ограничение в МТ4?

Теперь такого ограничения нет. Но никто не отменял правила разумной достаточности. То есть, можно быстро провести 2-3 операции подрят, но никак не 10-20-30. За неразумное использование экспертов будет жесткое наказание в виде блокировки торговых операций.

2. В МТ3 длительность работы советника ограничена 1сек. Будет ли подобное ограничение в МТ4?

Больше таких ограничений нет для экспертов и скриптов, эксперт может работать неограниченно долго. А вот индикатор должен как можно быстрее отрабатывать, и даже 1 секунда, потраченная на индикатор, не даст нормально работать с терминалом.
 
Единственное, обещали проверку на бесконечный цикл сделать.

К сожалению, этого не будет. Бесконечность циклов просто так не определить.
 
К сожалению, этого не будет. Бесконечность циклов просто так не определить.

Можно просто ввести функцию для задания максимального времени выполнения, для того, чтобы сам пользователь мог контролировать зацикливание. Значение времени по умолчанию = 0, что означает - "Нет ограничения".
 
Можно просто ввести функцию для задания максимального времени выполнения, для того, чтобы сам пользователь мог контролировать зацикливание. Значение времени по умолчанию = 0, что означает - "Нет ограничения".

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

Но у вас ведь вроде бы получается не машинный код, а р-код, который потом обрабатывается виртуальной машиной?

Можно было бы в нее встроить проверку времени работы скрипта. Причем даже не во всех командах, а скажем только в команде присваивания (сохранения результата в памяти). Или в другой какой, например в операторе цикла (без него зацикливания не получится). Т.е. в р-код, который генерится на операторы циклов добавить вызов функции проверки времени работы скрипта.

Это все фантазии конечно, вам виднее ..