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

 
İyi günler Lütfen söyleyin lütfen ... Son yapıya yapılan güncellemeden sonra, "SmoothAlgorithms" de hatalar uçmaya başladı. Ve ortalama sma, lwma, parma, vidya çalışmayı durdurdu. Şu satıra yemin eder: "'SmoothAlgorithms.mqh' (3394,9) içindeki dizi aralık dışında". Nasıl düzeltilir? Teşekkür ederim!
Dosyalar:
 
007yurik :
İyi günler Lütfen söyleyin lütfen ... Son yapıya yapılan güncellemeden sonra, "SmoothAlgorithms" de hatalar uçmaya başladı. Ve ortalama sma, lwma, parma, vidya çalışmayı durdurdu. Şu satıra yemin eder: "'SmoothAlgorithms.mqh' (3394,9) içindeki dizi aralık dışında". Nasıl düzeltilir? Teşekkür ederim!
Kitaplığının tartışma sayfasında yazara bunun hakkında yazın:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin :
Kitaplığının tartışma sayfasında yazara bunun hakkında yazın:
Teşekkür ederim ama bir şeye cevap vermedi Gerçek başka bir konuda, önerilen konuda deneyeceğim.
 

Numaralandırma öğeleri olarak sayısal değerlerin kullanılmasına ihtiyaç vardır.

enum ENUM_HOURS
{
 0,
 1,
 ..,
 23
};

Bu şekilde yapamazsınız. Beklenen tanımlayıcı derlenirken hata oluştu. Bir şekilde dolaşabilir miyim (yalnızca sayısal değerler bırakarak)?

 
Juer :

Numaralandırma öğeleri olarak sayısal değerlerin kullanılmasına ihtiyaç vardır.

Bu şekilde yapamazsınız. Beklenen tanımlayıcı derlenirken hata oluştu. Bir şekilde dolaşabilir miyim (yalnızca sayısal değerler bırakarak)?

 //+------------------------------------------------------------------+
enum ENUM_HOURS
  {
   HOUR_0,   // 0
   HOUR_1,   // 1
   HOUR_2,   // 2
   HOUR_3,   // 3
   HOUR_4,   // 4
   HOUR_5,   // 5
   HOUR_6,   // 6
   HOUR_7,   // 7
   HOUR_8,   // 8
   HOUR_9,   // 9
   HOUR_10, // 10
   HOUR_11, // 11
   HOUR_12, // 12
   HOUR_13, // 13
   HOUR_14, // 14
   HOUR_15, // 15
   HOUR_16, // 16
   HOUR_17, // 17
   HOUR_18, // 18
   HOUR_19, // 19
   HOUR_20, // 20
   HOUR_21, // 21
   HOUR_22, // 22
   HOUR_23  // 23
  };
//+------------------------------------------------------------------+
 

Bu <> sembolleri ne anlama geliyor?

_GlobalVariableGet < string > ( "ResourceName" )
 

Söylesene, herhangi bir şekilde optimize edilecek parametrelerin bir listesini programlı olarak ayarlamak mümkün müdür?

Mesele şu ki, birçok seçeneğim var. Binlerce. Onları ayrı bir programa koydum. EA, başlatma sırasında harici bir dosya aracılığıyla bunları yükler. Şimdi bu parametreleri optimize etmek benim görevim.

Yani örneğin dosyadaki değerler ve aralıklar ile optimize edilecek bir parametre listesi. Oradan oku ve sonucu oraya yaz.

 

Uzman Danışmanları veya komut dosyaları olmayan grafikleri kapatmak için bir işlev yazıyorum. ChartGetString işlevini kullanarak Uzman Danışmanın adını ve grafikteki komut dosyasını alıyorum. Hem orada hem de oradaysa boş kapatırım. Ve grafiğin koşula göre kapanmasıyla aynı doğrultuda, bir sorun var. Koşul hiçbir zaman karşılanmaz. İşte kod.

 if ( ExpertName == "" && ScriptName == "" ){ ChartClose ( prevChart );}
 else Print ( "Не закрываем график . Имя эксперта =" ,ExpertName, "= ScriptName =" ,ScriptName, "=" );

Ve işte çıktı çıktıları

Не закрываем график . Имя эксперта == ScriptName ==

Anladığım kadarıyla bu durumu değiştirebilirsin

 StringLen (ExpertName) == 0 && StringLen (ScriptName) == 0

Peki, string değişkenini boş bir string ile karşılaştırmak nasıl doğru olur?

 

Tünaydın! Kaynakta veri işleme ve depolama için .mqh yaptım. Her şey çalışıyor, ancak bir nüans var, göstergeyi derlerseniz, .mqh sıfırlanır ve tüm süreç depolama için yeniden düzenlenir. Amaç, kaynakta veri olduğu sürece sıfırlanmamasıdır. Hata nerede, nasıl düzeltilir?

 // Сохранение данных
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166
#include <GlobalVariables.mqh> 

const RESOURCEDATA< MqlTick >m_Resource( "::" + __FILE__ ); // Ресурс для передали данных (тики)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CMyTicks
  {
protected :
public :
   //+------------------------------------------------------------------+
   //| Constructor.                                                     |
   //+------------------------------------------------------------------+      
   void CMyTicks()
     {
      _GlobalVariableSet( "ResourceName" ,m_Resource.GetFullName()); // Записали в глобальную переменную полное имя ресурса (read-only)      
     }
   //+------------------------------------------------------------------+
   //| Destructor.                                                     |
   //+------------------------------------------------------------------+      
   void ~CMyTicks()
     {
       //_GlobalVariableDel("ResourceName");
     }

   //+------------------------------------------------------------------+  
   void CollectTicks()
     {
       MqlTick m_Ticks[];
       CopyTicks ( _Symbol ,m_Ticks, COPY_TICKS_ALL , 0 , 5 ); // Сформировали данные
      m_Resource=m_Ticks; // Записали данные
     }
  };
//+------------------------------------------------------------------+
 // Получение данных
#property indicator_chart_window
#property indicator_plots 0

#include <Test_Keep_Info_13.mqh>
CMyTicks  Test;

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166
#include <GlobalVariables.mqh> 

static const RESOURCEDATA< MqlTick >Resource(_GlobalVariableGet< string >( "ResourceName" )); // Создали ресурс на основе переданного в глобальной переменной полного имени  
MqlTick Ticks[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total, const int prev_calculated, const int , const double &[])
  {
   if (prev_calculated== 0 )
     {
      Resource.Get(Ticks); // Считали данные из ресурса.
       ArrayPrint (Ticks);   // Распечатали полученные данные

       if ( ArraySize (Ticks)< 1 )
        {
         Test.CollectTicks();
         Print ( " SAVE TICKS " );
        }

      Resource.Get(Ticks); // Считали данные из ресурса.
       ArrayPrint (Ticks);   // Распечатали полученные данные
     }
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
pivomoe :

Dize değişkenini boş bir dizeyle karşılaştırmak nasıl doğru olur?

İki normal boş dize vardır - "" ve NULL. Ve özel boş dizeler olabilir.