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

 
Alexey Kozitsyn :
차트에 지표/전문가가 있습니까?
고문은 없으며 터미널의 표준 볼륨만 표시기입니다.
 
Sergey Parkin :
고문은 없으며 터미널의 표준 볼륨만 표시기입니다.
저것들. 차트를 열고, 수평선을 그리고, 터미널을 닫고, 터미널을 열고, 차트(선을 그리기 위해 열려 있음)가 제자리에 있지만 선 자체는 거기에 있지 않습니까?
 
Alexey Kozitsyn :
저것들. 차트를 열고, 수평선을 그리고, 터미널을 닫고, 터미널을 열고, 차트(선을 그리기 위해 열려 있음)가 제자리에 있지만 선 자체는 거기에 있지 않습니까?
바로 그거죠
 
Sergey Parkin :
바로 그거죠

이런, 이러면 안된다...

 

인사말! MQL4\Indicators 폴더의 특정 사용자 지정 표시기 의 존재 여부를 이름으로 프로그래밍 방식으로 확인하는 방법을 알려주시겠습니까?

즉, iCustom 기능이 표시기를 찾고 작동하는지 확인하기 위해 필요합니다.

같은 이름의 인디케이터가 있는지 확인(어떻게 하는지 모르겠음)

if( !=Indicatorname)// 음, 또는 -1, false와 같이 동일한 이름을 가진 표시기가 없다는 다른 "신호" ...

{여기에 내가 뭔가를 씁니다 :)}

else // 표시기에서 값을 가져옵니다.

{

iCustom(....지시자 이름....);

}

주제가 "제한 없는 파일 작업" 평면에 있다고 생각하지만(틀릴 수 있음) "이 주제"에서 일반적으로 사용되는 시스템 라이브러리를 접한 적이 없습니다...

일반적으로 우리는 조언이 필요합니다 ... 아마도 이미 준비된 것이 있을 수 있습니다 ... 또는 적어도 - "파기"할 위치

감사해요

 
Ilya Melamed :

인사말! MQL4\Indicators 폴더의 특정 사용자 지정 표시기 의 존재 여부를 이름으로 프로그래밍 방식으로 확인하는 방법을 알려주시겠습니까?

즉, iCustom 기능이 표시기를 찾고 작동하는지 확인하기 위해 필요합니다.

같은 이름의 인디케이터가 있는지 확인(어떻게 하는지 모르겠음)

if( !=Indicatorname)// 음, 또는 -1, false와 같이 동일한 이름을 가진 표시기가 없다는 다른 "신호" ...

{여기에 내가 뭔가를 씁니다 :)}

else // 표시기에서 값을 가져옵니다.

{

iCustom(....지시자 이름....);

}

주제가 "제한 없는 파일 작업" 평면에 있다고 생각하지만(틀릴 수 있음) "이 주제"에서 일반적으로 사용되는 시스템 라이브러리를 접한 적이 없습니다...

일반적으로 우리는 조언이 필요합니다 ... 아마도 이미 준비된 것이 있을 수 있습니다 ... 또는 적어도 - "파기"할 위치

감사해요

표시기를 리소스로 연결하는 것이 좋습니다. 그러면 찾을 필요가 없으며 항상 표시됩니다.
 
Sergey Gritsay :
표시기를 리소스로 연결하는 것이 좋습니다. 그러면 찾을 필요가 없으며 항상 표시됩니다.
표시기는 사용자가 연결하므로 사용자가 표시기 이름을 잘못 입력하면 iCustom이 단순히 칠면조가 없다는 것을 이해하지 않고 정보로 단순히 0을 반환하는지 확인해야 합니다.
 
Ilya Melamed :
표시기는 사용자가 연결하므로 사용자가 표시기 이름을 잘못 입력하면 iCustom이 단순히 칠면조가 없다는 것을 이해하지 않고 정보로 단순히 0을 반환하는지 확인해야 합니다.

그러면 파일 작업을 도와줄 수 있습니다. 다음은 파일 검색 문서의 예입니다.

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- дата для старых файлов
input datetime InpFilesDate= D'2013.01.01 00:00' ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   string    file_name;       // переменная для хранения имен файлов
   string    filter= "*.txt" ; // фильтр для поиска файлов
   datetime create_date;     // дата создания файла
   string    files[];         // список имен файлов
   int       def_size= 25 ;     // размер массива по умолчанию
   int       size= 0 ;         // количество файлов
//--- выдели память для массива
   ArrayResize (files,def_size);
//--- получение хэндла поиска в корне локальной папки
   long search_handle= FileFindFirst (filter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
   if (search_handle!= INVALID_HANDLE )
     {
       //--- в цикле перебираем файлы
       do
        {
         files[size]=file_name;
         //--- увеличим размер массива
         size++;
         if (size==def_size)
           {
            def_size+= 25 ;
             ArrayResize (files,def_size);
           }
         //--- сбрасываем значение ошибки
         ResetLastError ();
         //--- получим дату создания файла
         create_date=( datetime ) FileGetInteger (file_name, FILE_CREATE_DATE , false );
         //--- проверим, старый ли файл
         if (create_date<InpFilesDate)
           {
             PrintFormat ( "Файл %s удален!" ,file_name);
             //--- удаляем старый файл
             FileDelete (file_name);
           }
        }
       while ( FileFindNext (search_handle,file_name));
       //--- закрываем хэндл поиска
       FileFindClose (search_handle);
     }
   else
     {
       Print ( "Files not found!" );
       return ;
     }
//--- проверим какие из файлов остались
   PrintFormat ( "Результаты:" );
   for ( int i= 0 ;i<size;i++)
     {
       if ( FileIsExist (files[i]))
         PrintFormat ( "Файл %s существует!" ,files[i]);
       else
         PrintFormat ( "Файл %s удален!" ,files[i]);
     }
  }

....

 
Sergey Gritsay :

그러면 파일 작업을 도와줄 수 있습니다. 다음은 파일 검색 문서의 예입니다.

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- дата для старых файлов
input datetime InpFilesDate= D'2013.01.01 00:00' ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   string    file_name;       // переменная для хранения имен файлов
   string    filter= "*.txt" ; // фильтр для поиска файлов
   datetime create_date;     // дата создания файла
   string    files[];         // список имен файлов
   int       def_size= 25 ;     // размер массива по умолчанию
   int       size= 0 ;         // количество файлов
//--- выдели память для массива
   ArrayResize (files,def_size);
//--- получение хэндла поиска в корне локальной папки
   long search_handle= FileFindFirst (filter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
   if (search_handle!= INVALID_HANDLE )
     {
       //--- в цикле перебираем файлы
       do
        {
         files[size]=file_name;
         //--- увеличим размер массива
         size++;
         if (size==def_size)
           {
            def_size+= 25 ;
             ArrayResize (files,def_size);
           }
         //--- сбрасываем значение ошибки
         ResetLastError ();
         //--- получим дату создания файла
         create_date=( datetime ) FileGetInteger (file_name, FILE_CREATE_DATE , false );
         //--- проверим, старый ли файл
         if (create_date<InpFilesDate)
           {
             PrintFormat ( "Файл %s удален!" ,file_name);
             //--- удаляем старый файл
             FileDelete (file_name);
           }
        }
       while ( FileFindNext (search_handle,file_name));
       //--- закрываем хэндл поиска
       FileFindClose (search_handle);
     }
   else
     {
       Print ( "Files not found!" );
       return ;
     }
//--- проверим какие из файлов остались
   PrintFormat ( "Результаты:" );
   for ( int i= 0 ;i<size;i++)
     {
       if ( FileIsExist (files[i]))
         PrintFormat ( "Файл %s существует!" ,files[i]);
       else
         PrintFormat ( "Файл %s удален!" ,files[i]);
     }
  }

....

파일은 파일 샌드박스 외부에 있을 수 없습니다. Indicators 폴더는 포함되어 있지 않습니다.
 
Sergey Gritsay :

그러면 파일 작업을 도와줄 수 있습니다. 다음은 파일 검색 문서의 예입니다.


  }

....

그러나 표준 도구를 사용하지 않으면 표시기가 있는 폴더에 들어갈 수 없을 것입니다. 이 예를 분석해 보세요. 도움이 되지 않으면 와인 API를 통해서만

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- фильтр
input string InpFilter= "Dir1\\*" ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   string file_name;
   string int_dir= "" ;
   int     i= 1 ,pos= 0 ,last_pos=- 1 ;
//--- ищем последний бэк-слеш
   while (! IsStopped ())
     {
      pos= StringFind (InpFilter, "\\" ,pos+ 1 );
       if (pos>= 0 )
         last_pos=pos;
       else
         break ;
     }
//--- в фильтре присутствует имя папки
   if (last_pos>= 0 )
      int_dir= StringSubstr (InpFilter, 0 ,last_pos+ 1 );
//--- получение хэндла поиска в корне локальной папки
   long search_handle= FileFindFirst (InpFilter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
   if (search_handle!= INVALID_HANDLE )
     {
       //--- в цикле проверим являются ли переданные строки именами файлов или директорий
       do
        {
         ResetLastError ();
         //--- если это файл, то функция вернет true, а если директория, то функция генерирует ошибку ERR_FILE_IS_DIRECTORY
         FileIsExist (int_dir+file_name);
         PrintFormat ( "%d : %s name = %s" ,i, GetLastError ()== ERR_FILE_IS_DIRECTORY ? "Directory" : "File" ,file_name);
         i++;
        }
       while ( FileFindNext (search_handle,file_name));
       //--- закрываем хэндл поиска
       FileFindClose (search_handle);
     }
   else
       Print ( "Files not found!" );
  }

...