초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1358

 

안녕하세요!

혹시 아시는 분이 계실까봐... WebRequest를 사용하여 받은 ZIP 파일의 바이트 시퀀스를 ZIP 아카이브로 변환하고 MQL5를 사용하여 디스크에 압축을 푸는 방법을 찾고 있습니다.

솔루션을 검색한 결과 2015년( https://www.mql5.com/en/articles/1971 )의 "타사 라이브러리를 사용하지 않고 MQL5를 사용하여 ZIP 아카이브로 작업" 기사로 이동했습니다. 여기에서 저자는 솔루션을 보여주고 ZIP 아카이브 작업을 위한 CZip 클래스를 게시했습니다. 그러나 이 솔루션은 실패합니다. 컴파일할 때 MetaEditor는 CZip 클래스 라이브러리의 오류를 참조하여 실행 파일을 컴파일할 수 없습니다.

내 질문의 본질은 다음과 같이 줄일 수 있습니다. - CZip 클래스의 메서드, 특히 CreateFromCharArray() 및 UnpackZipArchive()를 스크립트 코드에 직접 포함하여 어떻게 별도로 사용할 수 있습니까?

 //+------------------------------------------------------------------+
//|                                                     ZipTask2.mq5 |
//|                                 Copyright 2015, Vasiliy Sokolov. |
//|                                               https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link        " https://www.mql5.com "
#property version    "1.00"
#include <Zip\Zip.mqh>

CZip Zip;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   string cookie,headers;
   string mql_url= " https://www.mql5.com/ru/code/download/9 " ;
   int timeout= 5000 ;
   uchar data[],zip_array[];
   if (! WebRequest ( "GET" ,mql_url,cookie, NULL ,timeout,data, 0 ,zip_array,headers))
     {
       printf ( "Unable to download ZIP archive from " +mql_url+ ". Check request and permissions EA." );
       return ;
     }
   if (!Zip.CreateFromCharArray(zip_array))
     {
       printf ( "Loaded bad ZIP archive. Check results array." );
       return ;
     }
   printf ( "Archive successfully loaded. Total files: " +( string )Zip.TotalElements());
   Zip.UnpackZipArchive( "Alligator" , FILE_COMMON );
  }
//+------------------------------------------------------------------+
Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
  • www.mql5.com
Язык MQL5 развивается, и в него постоянно добавляются новые функции для работы с данными. С некоторых пор, благодаря нововведениям, стало возможно работать с ZIP-архивами штатными средствами MQL5 без привлечения сторонних библиотек DLL. Данная статья подробно описывает, как это делается, на примере описания класса CZip — универсального инструмента для чтения, создания и модификации ZIP-архивов.
 
질문을 반복하겠습니다.
주기적으로 파일을 생성하는 서비스가 있습니다(저는 FileClose 를 통해 모든 것을 올바르게 닫습니다).
실행 후 일반적으로 첫 번째 파일이 정상적으로 생성되고 FileOpen이 오류 5001을 반환하기 시작합니다.
그러나 이 모든 것은 무작위입니다. 때로는 작동하고 때로는 작동하지 않습니다. 동시에 스크립트나 Expert Advisor에서 같은 코드를 실행해도 문제를 눈치채지 못했다.
이 금지를 우회하는 방법?
 
Evgeny Dyuka # :
질문을 반복하겠습니다.
주기적으로 파일을 생성하는 서비스가 있습니다(저는 FileClose 를 통해 모든 것을 올바르게 닫습니다).
실행 후 일반적으로 첫 번째 파일이 정상적으로 생성되고 FileOpen이 오류 5001을 반환하기 시작합니다.
그러나 이 모든 것은 무작위입니다. 때로는 작동하고 때로는 작동하지 않습니다. 동시에 스크립트나 Expert Advisor에서 같은 코드를 실행해도 문제를 눈치채지 못했다.
이 금지를 우회하는 방법?

다른 사람이 귀하와 동일한 오류로 유사한 서비스를 작성하고 수정해야 할 사항을 알려주기를 원하십니까?

 
Alexey Viktorov # :

다른 사람이 귀하와 동일한 오류로 유사한 서비스를 작성하고 수정해야 할 사항을 알려주기를 원하십니까?

코드를 배치할 수 있도록 초과분을 잘라내기 시작했고 모두 작동했습니다))
파일 검색 기능에서 FileFindClose()를 통해 검색이 닫히지 않았습니다.
어쨌든 답변 감사합니다.
 
Evgeny Dyuka # :
코드를 배치할 수 있도록 초과분을 잘라내기 시작했고 모두 작동했습니다))
파일 검색 기능에서 FileFindClose()를 통해 검색이 닫히지 않았습니다.
어쨌든 답변 감사합니다.

예, 파일을 사용하는 모든 것이 파일을 엽니다(파일에 대한 액세스를 엽니다)))) 그리고 파일(액세스)을 닫아야 합니다.

추가 닫기는 결과 없이 -1을 반환하고 잊어버린 열린 파일은 많은 문제를 일으킬 수 있음)

 

입력 블록에서 로봇의 매개변수에 설명을 표시하지 않을 수 있음을 상기시키십시오.

 sinput long    MagicNumber= 123 ;       // Магический номер

MagicNumber가 - Magic number 대신 매개변수에 나타나도록

 
Fast235 # :

입력 블록에서 로봇의 매개변수에 설명을 표시하지 않을 수 있음을 상기시키십시오.

MagicNumber가 - Magic number 대신 매개변수에 나타나도록

'sinput'은 매개변수를 출력 하지만 최적화에 포함할 수 없습니다.

sinput 수정자가 있는 변수   #

수정자 변수   입력   프로그램을 시작할 때 외부 매개변수의 값을 설정할 수 있을 뿐만 아니라 테스터에서 거래 전략을 최적화하는 데 중요한 역할을 합니다. Expert Advisor에서 선언된 각 입력 변수는 string형을 제외하고 최적화에 참여할 수 있다.

어떤 경우에는 테스터에서 가능한 모든 패스 영역 형성에서 프로그램의 일부 외부 매개 변수를 제외해야 할 수도 있습니다. 이러한 경우를 위한 메모리 수정자가 있습니다.   입력 . sinput은 정적 외부 변수 선언의 줄임말입니다. sinput = 정적 입력. 즉, 고문 코드의 그러한 선언

 sinput        int layers= 6 ;   // Количество слоев

전체 선언과 동일합니다.

 static input int layers= 6 ;   // Количество слоев

sinput 수정자로 선언된 변수는 MQL5 프로그램의 입력 매개변수이며, 이 매개변수의 값은 실행될 때 변경할 수 있습니다. 그러나 동시에이 변수는 입력 매개 변수를 최적화하는 프로세스에 참여하지 않습니다. 즉, 주어진 기준에 따라 최상의 매개 변수 집합을 검색할 때 값을 열거하지 않습니다.

죄다

그림은 Expert Advisor에 5개의 외부 매개변수가 있음을 보여줍니다. 이 중 "Number of layer" 매개변수는 다음과 같이 선언됩니다.   죄다   이 매개변수는 거래 전략 최적화 절차에서 변경할 수 없으며 사용할 원하는 값을 설정할 수 있습니다. 이러한 변수에 대한 시작, 단계 및 중지 필드는 값을 설정하는 데 사용할 수 없습니다.

따라서 변수에 대한 sinput 수정자를 설정하여 사용자가 이 매개변수를 최적화하는 것을 금지합니다. 이는 전략 테스터에서 단말 사용자가 최적화 과정에서 지정된 범위에서 자동 열거를 위해 초기 및 최종 값을 설정하는 것이 불가능해진다는 것을 의미합니다.

그러나 동시에 이 규칙에 대한 한 가지 예외가 있습니다. sinput 변수는 함수를 사용하여 최적화 문제에서 다양할 수 있습니다.   ParameterSetRange() . 이 기능은 사용 가능한 값의 공간을 프로그래밍 방식으로 제어하기 위해 특별히 만들어졌습니다.   다음과 같이 선언된 변수를 포함한 입력 변수   정적 입력   (입력). 기타 기능   매개변수GetRange()   최적화를 시작할 때 허용(핸들러에서   OnTesterInit() ) 입력 변수의 값을 가져오고 필요한 경우 변경 단계와 최적화되는 매개변수 값이 반복되는 범위를 재정의합니다.

따라서 입력 매개변수로 작업하기 위한 sinput 수정자와 두 함수의 조합을 통해 다른 입력 변수의 값에 따라 일부 입력 변수에 대한 최적화 간격을 설정하기 위한 유연한 규칙을 생성할 수 있습니다.

Документация по MQL5: Основы языка / Переменные / Input переменные
Документация по MQL5: Основы языка / Переменные / Input переменные
  • www.mql5.com
Input переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

sinput 질문은 주석 표시에 있습니다. 고문의 매개 변수에 주석 대신 변수 이름을 표시할 수 있습니까?

예를 들어 실수로 잡힌 sinput이 있는 ps 행)

 
Fast235 # :

sinput 질문은 주석 표시에 있습니다. 고문의 매개 변수에 주석 대신 변수 이름을 표시할 수 있습니까?

예를 들어 실수로 잡힌 sinput이 있는 ps 행)

';' 뒤에 아무것도 쓰지 마세요.

예 - 설명은 다음과 같습니다.

 input group     "Buy Saucer"
input uchar        InpBuySaucerCode     = 174 ;   // Buy Saucer: Arrow code (font Wingdings) 

이제 설명을 제거하십시오.

 input group     "Buy Saucer"
input uchar        InpBuySaucerCode     = 174 ;    


변수 이름을 참조하십시오

 

';' 뒤에 아무것도 쓰지 마세요.

이것은 질문이었고 주석이 있었고 매개 변수에 변수 이름을 표시해야합니다.

아마도 이것에 약간의 트릭이있을 것입니다 ...

사유: