오류, 버그, 질문 - 페이지 2237

 
fxsaber :

일부 문자에는 시간 초과가 있고 일부는 그렇지 않습니다. OrderSend에서 여전히 수락할 수 있는 최대 틱 연령을 찾는 방법([가격 없음] 없음)은 무엇입니까?

지옥은 알고 있습니다.

 
Stanislav Korotky :
여기에서 이 조합의 FILE_SHARE_WRITE 플래그가 작동하는 것처럼 보이지만 또 다른 질문이 발생합니다. 이러한 레코드의 요점은 무엇입니까? 논리적으로 쓸 때 분할을 활성화하면 쓰기 플래그에 추가해야 합니다.

그것이 내가 시도한 것이고 오류도 발생합니다.

MetaTrader를 켜고 이전 예제를 찾았고 FILE_SHARE_WRITE 를 추가했습니다(필요하지는 않지만) - 결과는 변경되지 않았습니다 ... 아마도 다른 이유로 작동하지 않았을 수 있습니다
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 거래 플랫폼은 이제 선물 거래를 위해 AMP 선물 고객에게 제공됩니다

fxsaber , 2018.07.23 22:34

Bid/Ask가 TickSize의 배수인 경우에도 시장가 주문을 할 수 없는 경우의 예

여기서 Last-price는 TickSize의 배수가 아닙니다. 시장 주문과 아무 관련이 없지만 OrderCheck는 여전히 버그가 있습니다. 시장 주문을 할 수 없습니다.

 
fxsaber :

일부 문자에는 시간 초과가 있고 일부는 그렇지 않습니다. OrderSend에서 여전히 수락할 수 있는 최대 틱 연령을 찾는 방법([가격 없음] 없음)은 무엇입니까?

16초 전에 받은 마지막 틱은 OrderSend 와 관련이 없는 것으로 간주됩니다. 결국 버그 일 것입니다.

 
A100 :
MetaTrader를 켜고 이전 예제를 찾았고 FILE_SHARE_WRITE 를 추가했습니다(필요하지는 않지만) - 결과는 변경되지 않았습니다 ... 아마도 다른 이유로 작동하지 않았을 수 있습니다

옵션으로 파일을 메모리(MemMap)에 배치하고 세마포어를 통해 거기에서 작업하고 작업이 끝나면 데이터를 세마포어를 통해 파일로 재설정합니다.

이렇게 하면 속도가 크게 향상됩니다.

 
Konstantin :

옵션으로 파일을 메모리(MemMap)에 배치하고 세마포어를 통해 거기에서 작업하고 작업이 끝나면 데이터를 세마포어를 통해 파일로 재설정합니다.

이렇게 하면 속도가 크게 향상됩니다.

사실 나는 작은 구성 파일을 가지고 있었고 각 전문가는 작업을 시작하기 전에 한 번만 읽어야했습니다. 가장 간단한 작업 - 위의 링크에서 예제를 참조하십시오. 그리고 당신은 - 세마포어)
 
A100 :
사실 나는 작은 구성 파일을 가지고 있었고 각 전문가는 작업을 시작하기 전에 한 번만 읽어야했습니다. 가장 간단한 작업 - 위 링크의 예를 참조하십시오 ... 그리고 당신이 말하는 - 세마포어)

내가 말하려는 것은 이 문제에 대한 글이 여러 페이지에 있으며 수염 문제를 감안할 때 개발자가 아직 수정할 수 없거나 수정할 생각이 없다는 것입니다. 아마도 다른 우선 순위가있을 것이고 그렇다면 옵션을 생각해 내야합니다. 나는 그 중 하나를 제안했습니다. 마음에 들지 않으면 winapi를 사용하십시오. 문제는 무엇입니까)))없이 동일한 것을 작성하는 것보다 낫습니다 그건 그렇고, 당신은 같은 세마포어를 사용할 수 있고 물리적 파일에서 읽어서 읽기 오류를 생성하는 동일한 세마포어 신호를 사용할 수 있습니다. 이 신호는 사용 중이고 기다려야 합니다!!!

 
Stanislav Korotky :

여기 이 간단한 스크립트에서 처음에는 write = true로 시작한 다음 write = false로 다른 차트에서 오류가 발생합니다.


 #property script_show_inputs

input bool writing = false ;

int OnStart ()
{
   int handle = FileOpen ( "xyz.foo" , FILE_READ | FILE_BIN | FILE_SHARE_READ |(writing? FILE_WRITE : 0 ));
   if (handle == INVALID_HANDLE )
  {
     Print ( "FileOpen failed: " , GetLastError ());
     return INIT_FAILED ;
  }
  
   if (writing) FileWriteInteger (handle, 0 );
  
   Print ( "handle=" , handle);
  
   while (! IsStopped ())
  {
     Sleep ( 1000 );
  }

   Print ( "Closing" );
   FileClose (handle);

   return 0 ;
}

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

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

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

 int handle = FileOpen ( "xyz.foo" , FILE_READ | FILE_BIN | FILE_SHARE_READ |(writing? FILE_WRITE : FILE_SHARE_WRITE ));
 
Ilyas :

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

FileLoad를 수정하십시오

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2018.07.10 19:26

파일 로드에 오류가 있습니다. 두 로컬 에이전트가 FILE_COMMON 플래그를 사용하여 FileLoad를 통해 데이터를 읽으려고 하면 에이전트 중 하나가 중단됩니다.

FileOpen에서는 적절한 플래그를 설정할 수 있지만 FileLoad에서는 설정할 수 없습니다. 따라서 다른 FileLoad가 파일을 읽을 경우 FileLoad를 통해 파일에 대한 액세스를 허용하십시오.

 
TheXpert :

왜요? )

플래그 목록에 0이 없기 때문에

식별자

의미

설명

파일_읽기

하나

파일이 읽기 위해 열립니다. 플래그는 파일을 열 때 사용됩니다( FileOpen() ). 파일을 열 때 FILE_WRITE 플래그 및/또는 FILE_READ 플래그를 지정해야 합니다.

파일_쓰기

2

파일이 쓰기 위해 열립니다. 플래그는 파일을 열 때 사용됩니다( FileOpen() ). 파일을 열 때 FILE_WRITE 플래그 및/또는 FILE_READ 플래그를 지정해야 합니다.

FILE_BIN

4

이진 읽기-쓰기 모드(문자열에서 문자열로의 변환 없음). 파일을 열 때 사용되는 플래그( FileOpen() )

파일_CSV

여덟

csv 파일(기록된 모든 요소는 적절한 유형, 유니코드 또는 ansi의 문자열로 변환되고 구분 기호로 구분됨). 파일을 열 때 사용되는 플래그( FileOpen() )

FILE_TXT

열여섯

간단한 텍스트 파일(같은 csv이지만 구분 기호는 고려되지 않음). 파일을 열 때 사용되는 플래그( FileOpen() )

FILE_ANSI

32

ANSI 유형 문자열(1바이트 문자). 파일을 열 때 사용되는 플래그( FileOpen() )

FILE_UNICODE

64

UNICODE 유형의 문자열(2바이트 문자). 파일을 열 때 사용되는 플래그( 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() )에 사용됩니다.


그리고 개발자가 모든 문제를 수정하면 많은 사람들이 그것을 좋아하지 않을 것입니다. 코드의 절반 이상이 작동을 멈춥니다.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...
사유: