Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 929

 
Juer :

kod

Bu sonucu verir:

Neyi yanlış yapıyorum?

Bir numaralandırmanın tüm üyeleri üzerinde yineleme yapmazsınız. Yerleşik numaralandırmalarda, örneğin "0"dan "sona" kadar dizi içinde yürümek imkansızdır. Yerleşik numaralandırmalara erişmek için numaralandırmanın her bir üyesine doğru şekilde erişmeniz gerekir. Örneğin şöyle:

 //+------------------------------------------------------------------+
//|                                              ENUM_TIMEFRAMES.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   Print ( "PERIOD_CURRENT " , PERIOD_M1 , "\n" ,
         "PERIOD_M2 " , PERIOD_M2 , "\n" ,
         "PERIOD_M3 " , PERIOD_M3 , "\n" ,
         "PERIOD_M4 " , PERIOD_M4 , "\n" ,
         "PERIOD_M5 " , PERIOD_M5 , "\n" ,
         "PERIOD_M6 " , PERIOD_M6 , "\n" ,
         "PERIOD_M10 " , PERIOD_M10 , "\n" ,
         "PERIOD_M12 " , PERIOD_M12 , "\n" ,
         "PERIOD_M15 " , PERIOD_M15 , "\n" ,
         "PERIOD_M20 " , PERIOD_M20 , "\n" ,
         "PERIOD_M30 " , PERIOD_M30 , "\n" ,
         "PERIOD_H1 " , PERIOD_H1 , "\n" ,
         "PERIOD_H2 " , PERIOD_H2 , "\n" ,
         "PERIOD_H3 " , PERIOD_H3 , "\n" ,
         "PERIOD_H4 " , PERIOD_H4 , "\n" ,
         "PERIOD_H6 " , PERIOD_H6 , "\n" ,
         "PERIOD_H8 " , PERIOD_H8 , "\n" ,
         "PERIOD_H12 " , PERIOD_H12 , "\n" ,
         "PERIOD_D1 " , PERIOD_D1 , "\n" ,
         "PERIOD_W1 " , PERIOD_W1 , "\n" ,
         "PERIOD_MN1 " , PERIOD_MN1 , "\n" );
  }
//+------------------------------------------------------------------+
Dosyalar:
 
Vladimir Karputov :

Bir numaralandırmanın tüm üyelerini yinelemezsiniz. Yerleşik numaralandırmalar bir dizi gibi geçilemez - örneğin "0"dan "sona" kadar. Yerleşik numaralandırmalara erişmek için numaralandırmanın her bir üyesine doğru şekilde erişmeniz gerekir. Örneğin şöyle:

Kim düşünebilirdi ki...
 
int val=( int ) PERIOD_H1 ;

Bu ifadede val 16385'e eşittir. Bu değer nedir?

Her zaman int ve enum'un kolayca birbirine dönüştürülebileceğini düşündüm :(

 
Juer :
Kim düşünebilirdi ki...

Bir dizi olarak standart bir numaralandırmaya erişmeniz gerekiyorsa, böyle bir dizi ilk önce kendiniz bildirilmeli ve doldurulmalıdır:

 //--- variant 2
   ENUM_TIMEFRAMES timeframes_array [ 21 ]=
     {
       PERIOD_M1 , PERIOD_M2 , PERIOD_M3 ,
       PERIOD_M4 , PERIOD_M5 , PERIOD_M6 ,
       PERIOD_M10 , PERIOD_M12 , PERIOD_M15 ,
       PERIOD_M20 , PERIOD_M30 , PERIOD_H1 ,
       PERIOD_H2 , PERIOD_H3 , PERIOD_H4 ,
       PERIOD_H6 , PERIOD_H8 , PERIOD_H12 ,
       PERIOD_D1 , PERIOD_W1 , PERIOD_MN1
     };
   int size= ArraySize ( timeframes_array );
   for ( int i= 0 ;i<size;i++)
       Print (i, ": " , EnumToString ( timeframes_array [i]), " " , timeframes_array [i]);
 
Juer :

Bu ifadede val 16385'e eşittir. Bu değer nedir?

Her zaman int ve enum'un kolayca birbirine dönüştürülebileceğini düşündüm :(

Yukarıdaki örneğim (   ): tekrar oynatın ve sayılara bakın

 

ftp dosya aktarımını kurmaya çalışıyorum.

Servis-Ayarlar-FTP'deki Test düğmesine basılarak dosya gönderilir , yani. şifreler ve yol doğru.

Dosyaları programlı olarak göndermek çalışmıyor . Yürütme sırasında komut dosyası ile dosya gönderirken SendFTP("File_1.txt", "/ftp_failes"); terminal donuyor. File_1.txt dosyası, Dosyalar dizininde bulunur.

soru . Komut dosyamda TerminalInfoInteger( TERMINAL_FTP_ENABLED) = 0. Genelde nerede ve nasıl yapılandırıldığını bulamadım, söyleyin lütfen.

Ve bana başka neyi kaçırdığımı söyler misin?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5 :

ftp dosya aktarımını kurmaya çalışıyorum.

Servis-Ayarlar-FTP'deki Test düğmesine basılarak dosya gönderilir , yani. şifreler ve yol doğru.

Dosyaları programlı olarak göndermek çalışmıyor . Yürütme sırasında komut dosyası ile dosya gönderirken SendFTP("File_1.txt", "/ftp_failes"); terminal donuyor. File_1.txt dosyası, Dosyalar dizininde bulunur.

soru . Komut dosyamda TerminalInfoInteger( TERMINAL_FTP_ENABLED) = 0. Genelde nerede ve nasıl yapılandırıldığını bulamadım, söyleyin lütfen.

Ve bana başka neyi kaçırdığımı söyler misin?
Nedeni şuydu: Dosyaya Rusça harflerle isim verilmesine izin verilmiyor.
Soru kaldırıldı.
 

Bir dosyadan bir satır okumaya çalışıyorum:

 #include <Files\FileTxt.mqh>
CFileTxt          m_file_txt;
m_file_handle=m_file_txt. Open (m_file_name, FILE_CSV | FILE_READ | FILE_COMMON | FILE_ANSI , 10 );
m_file_txt.Seek( 0 , SEEK_SET );
string str=m_file_txt.ReadString();

İşte dosyadaki ilk satır:

,1,1,1,21,0,eşleşmeyen sayı, CRLF IGNORE

str'de sadece "," karakterini alıyorum

 
FILE_UNICODE

yardımcı oldu, ancak bu durumda Çince karakterler okunur.

Ya ANSI'ye ihtiyacım olursa? FILE_ANSI bayrağı ayarlandığında neden tüm satırı okuyamıyorum?

 
Mümkün mü:
   int cur_bars= Bars ( _Symbol , PERIOD_CURRENT );

ile ikame edilmiş:

   int cur_bars= Bars ( _Symbol , _Period );