오류, 버그, 질문 - 페이지 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]

출시 전에 모든 기호가 Market Watch에 포함되어 있으면 ForexTimeFXTM-Demo01에서 이 스크립트를 사용하여 약 1분 안에 재현할 수 있습니다.

 
Ilyas :

이것은 시스템 제한 사항(WinAPI)입니다.

다음은 코드가 실행될 올바른 플래그입니다.

절대 안돼 )

동일하게 선택됨 - Windows는 파일을 열 수 있지만 스크립트는 열 수 없습니다. FILE_SHARE_READ 플래그 문제

 
fxsaber :

FileLoad를 수정하십시오

메시지 주셔서 감사합니다.

추가된 플래그 FILE_FLAG_SHARE_READ | FileLoad/FileSave 기능 구현에 대한 FILE_FLAG_SHARE_WRITE

하나의 파일을 동시에 쓰고 읽을 때는 동기화를 올바르게 구성해야 하므로 주의하십시오. 읽기 결과는 정의되지 않습니다.

 
Ilyas :

메시지 주셔서 감사합니다.

추가된 플래그 FILE_FLAG_SHARE_READ | FileLoad/FileSave 기능 구현에 대한 FILE_FLAG_SHARE_WRITE

하나의 파일을 동시에 쓰고 읽을 때는 동기화를 올바르게 구성해야 하므로 주의하십시오. 읽기 결과는 정의되지 않습니다.

수정해주셔서 감사합니다. 이것은 동기화 레이크에 영향을 미치지 않습니다.

 
TheXpert :

절대 안돼 )

동일하게 선택됨 - Windows는 파일을 열 수 있지만 스크립트는 열 수 없습니다. 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

FileClose 없이 TotalCommander에서 탐색 중입니다. 물론 이것은 FILE_SHARE_READ 없이는 할 수 없습니다.

 
Ilyas :

읽을 것을 권장합니다

네 그냥 넣고 싶었습니다.

내가 틀렸다는 것을 인정합니다. 첫 번째 핸들이 쓰기 위해 열려 있으면 두 번째 핸들이 FILE_SHARE_WRITE 플래그를 추가해야 합니다.

하지만 기록이 전혀 없는 100의 댓글 도 있습니다.
 
Ilyas :

읽기용 오프너에는 FILE_SHARE_WRITE 플래그(쓰기 허용)가 없습니다. 작가가 있다.

이것은 시스템 제한 사항(WinAPI)입니다.

다음은 코드가 실행될 올바른 플래그입니다.

MSDN도 읽었습니다. 설명하십시오. Microsoft가 영어를 모르거나 자체 설명서를 읽지 못하거나 또는 - 마지막 옵션인 MQL의 플래그는 WinApi와 유사하게 이름이 지정되지만 다르게 작동합니까?

여기에서 가져옴 - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

FILE_SHARE_READ - 파일 또는 장치에 대한 후속 열기 작업을 활성화하여 읽기 액세스를 요청합니다. 그렇지 않으면 다른 프로세스가 읽기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

FILE_SHARE_WRITE - 쓰기 액세스를 요청하기 위해 파일 또는 장치에 대한 후속 열기 작업을 활성화합니다. 그렇지 않으면 다른 프로세스가 쓰기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

이를 바탕으로 두 번째 프로그램이 읽을 수 있도록 첫 번째 프로그램에서 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 플래그를 추가해야 합니다.

하지만 기록이 전혀 없는 100의 댓글 도 있습니다.
제 경우에는 현재 ServiceDesk에서 재생이 안된다고 씁니다...따라서 청중의 도움이 필요합니다...조금 후에 구체적으로 무엇을, 어떻게 쓰겠습니다