Ошибки, баги, вопросы - страница 2238

 
fxsaber:

Бывает, что последний тик, полученный 16 секунд назад, не воспринимается актуальным для OrderSend. Наверное, это все таки баг.

Этот баг

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2018.07.24 09:46

Обновленный скрипт в приложении. Быстро находит, например, такие проблемы
2018.07.24 10:24:19.177 Trades  '35247942': market buy 0.01 USDHKD
2018.07.24 10:24:19.246 Trades  '35247942': failed market buy 0.01 USDHKD [No prices]
2018.07.24 10:24:19.246 Trades  '35247942': buy limit 0.01 USDHKD at 7.83618
2018.07.24 10:24:19.315 Trades  '35247942': failed buy limit 0.01 USDHKD at 7.83618 [No prices]
2018.07.24 10:24:19.316 Trades  '35247942': buy stop 0.01 USDHKD at 7.85618
2018.07.24 10:24:19.384 Trades  '35247942': failed buy stop 0.01 USDHKD at 7.85618 [No prices]

где-то за минуту можно воспроизвести с помощью данного скрипта на ForexTimeFXTM-Demo01, если перед запуском включить в Обзор рынка все символы.

 
Ilyas:

Это ограничение системы (WinAPI).

Вот правильные флаги, при котором ваш код будет работать:

да ладно )

проверяли же - винда может файл открыть а скрипт нет. проблема с флагом FILE_SHARE_READ

 
fxsaber:

Просьба починить FileLoad

Спасибо за сообщение.

Добавил флаги FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE в реализацию функций FileLoad/FileSave

Будьте внимательны, при одновременной записи и чтении одного файла необходимо правильно организовать синхронизацию, т.к. результат чтения будет неопределён.

 
Ilyas:

Спасибо за сообщение.

Добавил флаги FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE в реализацию функций FileLoad/FileSave

Будьте внимательны, при одновременной записи и чтении одного файла необходимо правильно организовать синхронизацию, т.к. результат чтения будет неопределён.

Спасибо за исправление, на грабли синхронизации это повлиять не должно.

 
TheXpert:

да ладно )

проверяли же - винда может файл открыть а скрипт нет. проблема с флагом FILE_SHARE_READ

Рекомендую ознакомиться https://docs.microsoft.com/en-us/windows/desktop/FileIO/creating-and-opening-files

Creating and Opening Files
Creating and Opening Files
  • 2018.05.31
  • Michael Satran
  • docs.microsoft.com
Considerations for creating or opening a file by using the CreateFile function.
 

Как быть с этим фактом?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2018.07.23 16:48

Явно баг, т.к. с подобными флагами сторонние приложения файл читают без проблем.


Такие файлы

FILE_READ | FILE_WRITE | FILE_IS_TEXT | FILE_SHARE_READ

просматриваю в TotalCommander без FileClose. Без FILE_SHARE_READ этого сделать, конечно, не получается

 
Ilyas:

Рекомендую ознакомиться

да, как раз хотел вкинуть.

признаю, что неправ. если первый хендл открыт для записи, второй обязан добавлять флаг FILE_SHARE_WRITE

но есть еще коммент от a100 где вообще записи нет
 
Ilyas:

Открывающему на чтение не хватает флага FILE_SHARE_WRITE (разрешить запись), т.к. имеется пишущий.

Это ограничение системы (WinAPI).

Вот правильные флаги, при котором ваш код будет работать:

Я тоже MSDN читаю. Поясните, это - майкрософт английского не знает, или они сами свою документацию не читают, или - последний вариант - флаги в MQL названы по аналогии WinApi но работают по-другому?

Взято вот отсюда - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

FILE_SHARE_READ - Enables subsequent open operations on a file or device to request read access. Otherwise, other processes cannot open the file or device if they request read access.

FILE_SHARE_WRITE - Enables subsequent open operations on a file or device to request write access. Otherwise, other processes cannot open the file or device if they request write access.

Исходя из этого, первой программе достаточно указать флаг FILE_SHARE_READ для того чтобы вторая смогла читать. FILE_SHARE_WRITE требуется указать только в случае, когда известно, что помимо первой программы в файл будет писать и вторая.

CreateFileA function
CreateFileA function
  • 2018.06.14
  • windows-sdk-content
  • docs.microsoft.com
Creates or opens a file or I/O device. The most commonly used I/O devices are as follows:\_file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, and pipe.
 

Вопрос к разработчикам.

Есть функция синхронизации:

//+------------------------------------------------------------------+
//| Проверка синхронизации символов                                                                                             |
//+------------------------------------------------------------------+
bool CheckSync()
        {
         //--- Проверка синхронизации символов
         if( !SymbolIsSynchronized( inpSymbol_1 ) )
                {
                 Print( __FUNCTION__,": ОШИБКА #",GetLastError(),": SymbolIsSync("+inpSymbol_1+") = false!" );
                 return( false );
                }
         if( !SymbolIsSynchronized( inpSymbol_2 ) )
                {
                 Print( __FUNCTION__,": ОШИБКА #",GetLastError(),": SymbolIsSync("+inpSymbol_2+") = false!" );
                 return( false );
                }
         //--- Если символы синхронизированы
         return( true );
        }

С помощью нее иногда получаю такую ошибку:

2018.07.24 15:14:27.415 Indicator (USDJPY,M5)   CheckSync: ОШИБКА #4014: SymbolIsSync(EURGBP) = false!

Т.е. индикатор запускается на USDJPY, и получаю ошибку с символа EURGBP. При этом есть открытый график EURGBP в терминале.

Ошибка 4014 говорит о том, что:

Системная функция не разрешена для вызова

Как такое может быть?

 
TheXpert:

да, как раз хотел вкинуть.

признаю, что неправ. если первый хендл открыт для записи, второй обязан добавлять флаг FILE_SHARE_WRITE

но есть еще коммент от a100 где вообще записи нет
В моем случае СервисДеск сейчас пишет что не может воспроизвести... соответственно требуется помощь зала... чуть позже я подробно распишу что и как 
Причина обращения: