Ошибки, баги, вопросы - страница 2237
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На некоторых символах стоит таймаут, на некоторых - нет. Как узнать максимальный возраст тика, который еще может восприниматься OrderSend (нет [No price])?
Хрен его знает.
Вот флаг FILE_SHARE_WRITE в таком сочетании, похоже, работает, но возникает другой вопрос: какой смысл именно в такой записи? По логике, если включать разделение при записи, то нужно его добавлять именно к флагу записи:
Именно это я и пробовал, и оно тоже дает ошибку.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Торговая платформа MetaTrader 5 стала доступна клиентам AMP Futures для торговли фьючерсами
fxsaber, 2018.07.23 22:34
Пример, когда невозможно сделать Маркет-ордер даже в том случае, когда Bid/Ask кратны TickSize
Здесь Last-цена не кратна TickSize. Она никакого отношения к маркет-ордерам не имеет, но OrderCheck все так же бажит - не дает провести маркет-ордер.
На некоторых символах стоит таймаут, на некоторых - нет. Как узнать максимальный возраст тика, который еще может восприниматься OrderSend (нет [No price])?
Бывает, что последний тик, полученный 16 секунд назад, не воспринимается актуальным для OrderSend. Наверное, это все таки баг.
Включил 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())
И если разработчики исправят все свои косяки, многим это не понравится. Намного больше половины кода перестанет работать.