MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 128

 
Alexey Kozitsyn :
Grafiklerde göstergeler/uzmanlar var mı?
Danışman yok, yalnızca terminalden gelen standart hacimler göstergedir
 
Sergey Parkin :
Danışman yok, yalnızca terminalden gelen standart hacimler göstergedir
Onlar. çizelgeyi açtı, yatay bir çizgi çizdi, terminali kapattı, terminali açtı, çizelge (çizgi çizmeye açık) yerinde ama çizginin kendisi orada değil mi?
 
Alexey Kozitsyn :
Onlar. çizelgeyi açtı, yatay bir çizgi çizdi, terminali kapattı, terminali açtı, çizelge (çizgi çizmeye açık) yerinde ama çizginin kendisi orada değil mi?
kesinlikle
 
Sergey Parkin :
kesinlikle

Dostum, bu olmamalı...

 

Selamlar! Lütfen bana MQL4\Indicators klasöründe belirli bir özel göstergenin varlığını veya yokluğunu adıyla nasıl programlı olarak kontrol edeceğimi söyler misiniz?

Yani, iCustom işlevinin göstergeyi bulduğunu ve onunla çalıştığını kontrol etmem gerekiyor.

Aynı ada sahip bir gösterge olup olmadığını kontrol edin (nasıl olduğunu bilmiyorum)

if( !=Indicatorname)// Peki, ya da aynı ada sahip bir gösterge olmadığını gösteren başka bir "sinyal", -1, false gibi...

{buraya bir şeyler yazıyorum :)}

else // Göstergeden değeri al

{

iCustom(....Gösterge adı....);

}

Konunun "Kısıtlamasız dosya işlemleri" düzleminde yattığından şüpheleniyorum (yanılıyor olabilirim), ancak genellikle "bu konuda" kullanılan sistem kitaplıklarına hiç rastlamadım ...

Genel olarak, tavsiyeye ihtiyacımız var ... belki zaten hazır bir şey var ... veya en azından - "nereyi kazmak"

teşekkürler

 
Ilya Melamed :

Selamlar! Lütfen bana MQL4\Indicators klasöründe belirli bir özel göstergenin varlığını veya yokluğunu adıyla nasıl programlı olarak kontrol edeceğimi söyler misiniz?

Yani, iCustom işlevinin göstergeyi bulduğunu ve onunla çalıştığını kontrol etmem gerekiyor.

Aynı ada sahip bir gösterge olup olmadığını kontrol edin (nasıl olduğunu bilmiyorum)

if( !=Indicatorname)// Peki, ya da aynı ada sahip bir gösterge olmadığını gösteren başka bir "sinyal", -1, false gibi...

{buraya bir şeyler yazıyorum :)}

else // Göstergeden değeri al

{

iCustom(....Gösterge adı....);

}

Konunun "Kısıtlamasız dosya işlemleri" düzleminde yattığından şüpheleniyorum (yanılıyor olabilirim), ancak genellikle "bu konuda" kullanılan sistem kitaplıklarına hiç rastlamadım ...

Genel olarak, tavsiyeye ihtiyacımız var ... belki zaten hazır bir şey var ... veya en azından - "nereyi kazmak"

teşekkürler

göstergeyi bir kaynak olarak bağlamak daha iyidir, o zaman onu aramanıza gerek kalmayacak, her zaman orada olacak
 
Sergey Gritsay :
göstergeyi bir kaynak olarak bağlamak daha iyidir, o zaman onu aramanıza gerek kalmayacak, her zaman orada olacak
Göstergeler kullanıcı tarafından bağlanacaktır, bu nedenle, kullanıcı gösterge adına bir hata yaptıysa, iCustom'un sadece türkiye olmadığını anlamadan bilgi olarak sadece sıfırları döndürdüğüne dair bir kontrol gereklidir.
 
Ilya Melamed :
Göstergeler kullanıcı tarafından bağlanacaktır, bu nedenle, kullanıcı gösterge adına bir hata yaptıysa, iCustom'un sadece türkiye olmadığını anlamadan bilgi olarak sadece sıfırları döndürdüğüne dair bir kontrol gereklidir.

daha sonra dosya işlemlerinde size yardımcı olabilirler, işte dosya arama belgelerinden bir örnek

//--- покажем окно входных параметров при запуске скрипта
#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 :

daha sonra dosya işlemlerinde size yardımcı olabilirler, işte dosya arama belgelerinden bir örnek

//--- покажем окно входных параметров при запуске скрипта
#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]);
     }
  }

....

Dosyalar, dosya sanal alanının dışında olamaz. Göstergeler klasörü buna dahil değildir.
 
Sergey Gritsay :

daha sonra dosya işlemlerinde size yardımcı olabilirler, işte dosya arama belgelerinden bir örnek


  }

....

ancak standart araçları kullanmazsanız, muhtemelen göstergelerin bulunduğu klasöre girmezsiniz, bu örneği analiz etmeye çalışın, eğer yardımcı olmazsa, o zaman sadece wine api aracılığıyla

//--- покажем окно входных параметров при запуске скрипта
#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!" );
  }

...