MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 487

 
igrok333 :

파일의 8번째 줄을 읽는 방법은 무엇입니까?

파일 작업에 대한 질문

https://docs.mql4.com/ru/files


누군가 나에게 한 번 말했듯이 mql의 모든 것은 열거에 의해 수행됩니까?


다른 방법으로는 안되나요?

모든 데이터 유형에는 바이트 단위로 점유되는 특정 양의 메모리가 있습니다. 따라서 코드를 작성할 때 이것을 사용하여 한 줄의 데이터가 차지하는 바이트 수만큼 파일 포인터를 이동할 수 있습니다.

문자열에 double 유형의 값이 4개 있으면 문자열은 4 * 8 = 32바이트를 차지합니다. 따라서 파일의 9번째 줄을 읽으려면 파일 포인터를 256바이트만큼 이동해야 합니다.

 bool    FileSeek (
   int                   file_handle,     // handle файла
   long                  offset,           // в байтах 
   ENUM_FILE_POSITION    origin           // позиция для отсчета
   );
 bool    FileSeek (file_handle, 265 , SEEK_SET );

포인터가 파일 끝에서 오프셋되면 값은 음수여야 합니다.

그러나 모든 것이 순조로운 것은 아닙니다. 얼마 전에 이 문제를 처리하고 .txt 및 .csv 파일이 이 문제와 올바르게 작동하지 않지만 .bin 파일은 오류를 허용하지 않는다는 것을 알게 되었습니다. 이 문제는 이미 해결되었으며 운이 좋을 수도 있습니다.

 
Alexey Viktorov :

행에 4개의 이중 값이 있는 경우

하지만 csv 파일 문자열의 모든 값이 아닌가요?


파일의 모든 줄은 단어입니다.
12바이트 크기의 문자열 값을 얻습니다.
따라서 8행으로 이동하려면 캐리지를 84바이트만큼 이동해야 합니다.

 bool    FileSeek (file_handle, 84 , SEEK_SET );

정보 주셔서 감사합니다.

 
mql 5에서 모든 열린 위치 를 반복하는 방법은 무엇입니까?
 
Roman Sharanov :
mql 5에서 모든 열린 위치 를 반복하는 방법은 무엇입니까?
이것은 mql4 주제입니다
 
igrok333 :
이것은 mql4 주제입니다

아니요, 이 주제는 mql4 및 mql5 모두에 대한 것입니다.

 
Roni Iron :

안녕하세요!

질문: 터미널에서 테스터 의 작업 속도를 높이는 방법은 무엇입니까?

저에게는 4개 중 1개의 프로세서 스레드 와 150MB의 RAM만 사용합니다. (즉, PC의 전체 전력을 사용하지 않음)

옵션은 무엇입니까?

이것이 이미 논의되었다면 링크를 던져주세요!

MT4인 경우 프로세서의 주파수만 역할을 합니다. 하나의 스트림을 사용합니까? 음, 여기에는 몇 가지 장점이 있습니다. 다른 테스트 또는 최적화 작업으로 4개의 MT4 터미널을 동시에 실행할 수 있습니다. 그리고 하나의 터미널뿐만 아니라 프로세서에도 동일한 부하가 있습니다.

 
Roman Sharanov :
mql 5에서 모든 열린 위치 를 반복하는 방법은 무엇입니까?

mql5는 위치와 주문을 구분합니다. 포지션은 거래의 결과입니다. 그리고 거래는 주문 트리거의 결과입니다.

먼저 거래 요청이 서버로 전송되고 보류 중인 주문(요청이 설정을 위한 요청인 경우) 또는 시장 주문(요청이 포지션을 개설하기 위한 것인 경우)이 나타납니다.

시장 주문이 발동되면(거래가 발생한 경우) 이 거래의 결과로 포지션이 나타납니다(또는 기존 포지션이 변경됨).

헤지 계정은 여러 위치(다방향 포함)를 가질 수 있지만 상계 계정은 하나의 위치만 가질 수 있습니다.

따라서 루프의 모든 위치를 탐색하려면 해당 번호로 루프를 구성해야 합니다. 따라서 mql4에 일반적으로 사용되는 OrdersTotal() 대신 PositionsTotal()을 사용합니다.

mql5의 모든 주문을 정렬해야 하는 경우 여기(mql5)에서 mql4 OrdersTotal()에 대한 관례가 사용됩니다.

 
igrok333 :

하지만 csv 파일 문자열의 모든 값이 아닌가요?


파일의 모든 줄은 단어입니다.
12바이트 크기의 문자열 값을 얻습니다.
따라서 8행으로 이동하려면 캐리지를 84바이트만큼 이동해야 합니다.


정보 주셔서 감사합니다.

텍스트 파일은 한 줄씩 읽어야 합니다. 줄 번호를 계산하는 다른 방법은 없습니다. 따라서 예, FileReadString을 사용하여 루프에서 순차 읽기만 가능합니다.

 

ObjectCreate(name,OBJ_FIBO, ...)를 사용하여 차트에 피보나치 수준 을 만든 다음 ObjectSetFiboDescription(name,0,"...") 수준에 대한 설명을 설정했지만 이름을 오른쪽에서 멀리 이동해야 합니다. 가장자리. 공백을 추가했지만 텍스트를 멀리 이동할 뿐만 아니라 줄도 덮습니다. 또한 공백을 더 추가하면 텍스트가 더 이상 이동하지 않습니다.
질문: "보이지 않는" 문자를 텍스트에 추가하여 기본 행을 덮지 않도록 할 수 있습니까?


 
Maxim Khrolenko :

ObjectCreate(name,OBJ_FIBO, ...)를 사용하여 차트에 피보나치 수준 을 만든 다음 ObjectSetFiboDescription(name,0,"...") 수준에 대한 설명을 설정했지만 이름을 오른쪽에서 멀리 이동해야 합니다. 가장자리. 공백을 추가했지만 텍스트를 멀리 이동할 뿐만 아니라 줄도 덮습니다. 또한 공백을 더 추가하면 텍스트가 더 이상 이동하지 않습니다.
질문: 텍스트에 "보이지 않는" 문자를 추가하여 그 아래의 행을 덮지 않도록 할 수 있습니까?

코드 0으로 점과 문자를 시도하십시오.