Ошибки, баги, вопросы - страница 2237
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Включил MetaTrader, нашёл свой давний пример, добавил FILE_SHARE_WRITE (хотя он там и не нужен) - результат не поменялся... возможно у меня по другой причине не работало
как вариант спозиционировать файл в память (MemMap) и там работать через семафор, по окончании работы так же через семафор сбросить в файл данные
такой способ кстати даст большой выигрыш в скорости
как вариант спозиционировать файл в память (MemMap) и там работать через семафор, по окончании работы так же через семафор сбросить в файл данные
такой способ кстати даст большой выигрыш в скорости
Дело в том что у меня был небольшой файл конфигурации и каждый эксперт должен был лишь только прочитать его один раз перед началом работы - простейшая операция - посмотрите пример по ссылкам выше... а Вы говорите - семафоры )
я говорю то, что писанины по этой проблеме на несколько страниц, а учитывая что проблема с бородой то и исправлять ее разработчики видимо не могут или не хотят пока т.к. есть наверное другие приоритеты, а если так, то нужно придумывать варианты, я вам предложил один из них, не нравится используйте winapi в чем проблема то )) но это лучше чем писать одно и то же ни чего не делая, можете кстати использовать те же семафоры и по считыванию из физического файла, генерация ошибки считывания тот же сигнал семафора, что пока занято и нужно обождать !!!
Вот на это простом скрипте, запущенном сперва с writing = true, а потом на другом чарте с writing = false, получаю ошибку.
Открывающему на чтение не хватает флага FILE_SHARE_WRITE (разрешить запись), т.к. имеется пишущий.
Это ограничение системы (WinAPI).
Вот правильные флаги, при котором ваш код будет работать:
Вот правильные флаги, при котором ваш код будет работать:
Просьба починить FileLoad
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.07.10 19:26
Ошибка в FileLoad. Если с флагом FILE_COMMON два локальных Агента пытаются считать данные через FileLoad, то один из Агентов обламывается.
В FileOpen можно задать соответствующие флаги, а вот в FileLoad - нет. Поэтому просьба разрешить доступ к файлу через FileLoad, если другой FileLoad его считывает.
почему? )
Потому, что в списке флагов нет нуля
Идентификатор
Значение
Описание
FILE_READ
1
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ
FILE_WRITE
2
Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ
FILE_BIN
4
Двоичный режим чтения-записи (без преобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen())
FILE_CSV
8
Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем). Флаг используется при открытии файлов (FileOpen())
FILE_TXT
16
Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание). Флаг используется при открытии файлов (FileOpen())
FILE_ANSI
32
Строки типа ANSI (однобайтовые символы). Флаг используется при открытии файлов (FileOpen())
FILE_UNICODE
64
Строки типа UNICODE (двухбайтовые символы). Флаг используется при открытии файлов (FileOpen())
FILE_SHARE_READ
128
Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ
FILE_SHARE_WRITE
256
Совместный доступ по записи со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ
FILE_REWRITE
512
Возможность перезаписывания файла функциями FileCopy() и FileMove(). Файл должен существовать или открываться для записи. В противном случае файл открыт не будет
FILE_COMMON
4096
Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())
И если разработчики исправят все свои косяки, многим это не понравится. Намного больше половины кода перестанет работать.
Бывает, что последний тик, полученный 16 секунд назад, не воспринимается актуальным для OrderSend. Наверное, это все таки баг.
Этот баг
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2018.07.24 09:46
где-то за минуту можно воспроизвести с помощью данного скрипта на ForexTimeFXTM-Demo01, если перед запуском включить в Обзор рынка все символы.
Это ограничение системы (WinAPI).
Вот правильные флаги, при котором ваш код будет работать:
да ладно )
проверяли же - винда может файл открыть а скрипт нет. проблема с флагом FILE_SHARE_READ
Просьба починить FileLoad
Спасибо за сообщение.
Добавил флаги FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE в реализацию функций FileLoad/FileSave
Будьте внимательны, при одновременной записи и чтении одного файла необходимо правильно организовать синхронизацию, т.к. результат чтения будет неопределён.
Спасибо за сообщение.
Добавил флаги FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE в реализацию функций FileLoad/FileSave
Будьте внимательны, при одновременной записи и чтении одного файла необходимо правильно организовать синхронизацию, т.к. результат чтения будет неопределён.
Спасибо за исправление, на грабли синхронизации это повлиять не должно.