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

 
Artem Mordvinkin :


Evet, test sırasında karakterlerin otomatik olarak bağlandığı beyaz olarak Rusça olarak yazılmıştır.

Onlarla iletişim kurarken.
 
Artem Mordvinkin :


Evet, test sırasında karakterlerin otomatik olarak bağlandığı beyaz olarak Rusça olarak yazılmıştır.

Bir gösterge oluşturmak için önce sembolü Piyasa İzleme'ye bağlamanız gerekir (sizin durumunuzda Test Kullanıcısının Piyasa İzleme'sine).

 
Artyom Trishkin :
İstediğiniz her karakterden herhangi bir veri isteyin.

SymbolSelect() tarafından yoklar - seçilmediler

Sayın Baylar Beni yayınlara göndermeden önce (bunun için teşekkür ederim) çoklu para birimi sistemlerinizin test cihazında çalışıp çalışmadığını kontrol edin Ve çalışıyorsa, o zaman mantıklıdır

 
Artem Mordvinkin :

SymbolSelect() tarafından yoklar - seçilmediler

Sayın Baylar Beni yayınlara göndermeden önce (bunun için teşekkür ederim) çoklu para birimi sistemlerinizin test cihazında çalışıp çalışmadığını kontrol edin Ve çalışıyorsa, o zaman mantıklıdır

Çalışırlar. Son yapıda. Sorun yok.
 
Artyom Trishkin :
Çalışırlar. Son yapıda. Sorun yok.

Onları nasıl bağladınız (semboller) - söyle bana, lütfen, hangi işlev?

 
Artem Mordvinkin :

Onları nasıl bağladınız (semboller) - söyleyin lütfen, işlev nedir?

SymbolSelect( sembol adı ,doğru);

 
Vladimir Karputov :

SymbolSelect( sembol adı ,true);

ben de aynısını yapıyorum

 SymbolSelect (EURUSD_inst, true );
   SymbolSelect (GBPUSD_inst, true );
   SymbolSelect (USDJPY_inst, true );
   SymbolSelect (AUDUSD_inst, true );


ben böyle oluyorum

2020.03.09 19:19:45.766 EURUSDrfd sembolü mevcut değil

2020.03.09 19:19:45.766 USDJPYrfd sembolü mevcut değil

2020.03.09 19:19:45.766 AUDUSDrfd sembolü mevcut değil


Kablo test cihazının kendisinde seçildiği için hata vermiyor

Sembol isimleri doğrudur.


UPD bana öyle geliyor ki, terminalin kendi ayarlarında bir şeyler yapılması gerekiyor. Her şey son derlemeden önce çalıştıysa, kodda yoktur. Test cihazı sembolleri görmez.

 
Artem Mordvinkin :


2020.03.09 19:19:45.766 EURUSDrfd sembolü mevcut değil

2020.03.09 19:19:45.766 USDJPYrfd sembolü mevcut değil

2020.03.09 19:19:45.766 AUDUSDrfd sembolü mevcut değil


Kablo test cihazının kendisinde seçildiği için hata vermiyor

Bu ne? Kod nerede? Nasıl alırsın? Daha fazla mükemmel diğer karakterleri seçersiniz.

 
Vladimir Karputov :

Bu ne? Kod nerede? Nasıl alırsın? Daha fazla mükemmel diğer sembolleri seçersiniz.

anladım hadi yapalım

Verilen (karakter adı)


Kod parçacıkları)

 //----------------------------название инструмента
string EURUSD_inst = "EURUSDrfd" ;
string GBPUSD_inst = "GBPUSDrfd" ;
string AUDUSD_inst = "AUDUSDrfd" ;
string USDJPY_inst = "USDJPYrfd" ;


 void OnTick ()
  {
   SymbolSelect (EURUSD_inst, true );
   SymbolSelect (GBPUSD_inst, true );
   SymbolSelect (USDJPY_inst, true );
   SymbolSelect (AUDUSD_inst, true );
}

Örneğin, test cihazında bir kablo seçin


başlatıyoruz ve

2020.03.09 19:19:45.766 EURUSDrfd sembolü mevcut değil

2020.03.09 19:19:45.766 USDJPYrfd sembolü mevcut değil

2020.03.09 19:19:45.766 AUDUSDrfd sembolü mevcut değil

Kabloda hata yok - test cihazında da zorla seçilmiş

Ve her ihtimale karşı, böyle bir sorunun sadece test cihazında olduğunu söyleyeceğim. Ve baykuş zaten birkaç yaşında ve hata 2 günlük ve bu, tüm çok para birimli baykuşlarım için geçerli.
 

Test cihazı 'EURUSD' üzerinde başlatılırken 'USDJPY' sembolü üzerinde bir iMA göstergesi oluşturma örneği.

 //+------------------------------------------------------------------+
//|                                        iMA Values on a Chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property version    "1.001"
//--- input parameters
input    string               Inp_MA_symbol        = "USDJPY" ;     // MA: symbol name
input ENUM_TIMEFRAMES       Inp_MA_period        = PERIOD_D1 ;   // MA: timeframe
input int                   Inp_MA_ma_period     = 12 ;           // MA: averaging period
input int                   Inp_MA_ma_shift      = 5 ;           // MA: horizontal shift
input ENUM_MA_METHOD        Inp_MA_ma_method     = MODE_SMA ;     // MA: smoothing type
input ENUM_APPLIED_PRICE    Inp_MA_applied_price = PRICE_CLOSE ; // MA: type of price
//---
int     handle_iMA;                           // variable for storing the handle of the iMA indicator
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   if (! SymbolSelect (Inp_MA_symbol, true ))
     {
       PrintFormat ( "Failed select symbol %s" ,
                  Inp_MA_symbol);
       return ( INIT_FAILED );
     }
//--- create handle of the indicator iMA
   handle_iMA= iMA (Inp_MA_symbol,Inp_MA_period,Inp_MA_ma_period,Inp_MA_ma_shift,
                  Inp_MA_ma_method,Inp_MA_applied_price);
//--- if the handle is not created
   if (handle_iMA== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code
       PrintFormat ( "Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d" ,
                  Inp_MA_symbol,
                   EnumToString (Inp_MA_period),
                   GetLastError ());
       //--- the indicator is stopped early
       return ( INIT_FAILED );
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   double array_ma[];
   ArraySetAsSeries (array_ma, true );
   int start_pos= 0 ,count= 3 ;
   if (!iGetArray(handle_iMA, 0 ,start_pos,count,array_ma))
       return ;

   string text= "" ;
   for ( int i= 0 ; i<count; i++)
      text=text+ IntegerToString (i)+ ": " + DoubleToString (array_ma[i], Digits ()+ 1 )+ "\n" ;
//---
   Comment (text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
bool iGetArray( const int handle, const int buffer, const int start_pos,
               const int count, double &arr_buffer[])
  {
   bool result= true ;
   if (! ArrayIsDynamic (arr_buffer))
     {
       //if(InpPrintLog)
       PrintFormat ( "ERROR! EA: %s, FUNCTION: %s, this a no dynamic array!" , __FILE__ , __FUNCTION__ );
       return ( false );
     }
   ArrayFree (arr_buffer);
//--- reset error code
   ResetLastError ();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer);
   if (copied!=count)
     {
       //--- if the copying fails, tell the error code
       //if(InpPrintLog)
       PrintFormat ( "ERROR! EA: %s, FUNCTION: %s, amount to copy: %d, copied: %d, error code %d" ,
                   __FILE__ , __FUNCTION__ ,count,copied, GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated
       return ( false );
     }
   return (result);
  }
//+------------------------------------------------------------------+

Sonuç doğru bir şekilde oluşturulur. İlk önce bir sembol seçilir ve SONRA buna dayalı bir gösterge oluşturulur.


Dosyalar: