Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 947

 
Guten Tag, bitte um Rat... Nach dem Upgrade auf die neueste Version begannen Fehler in "SmoothAlgorithms" aufzutauchen. Und die Mittelwertbildung von sma, lwma, parma und vidya funktioniert nicht mehr. Es flucht bei dieser Zeile: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Wie soll ich es reparieren? Ich danke Ihnen!
Dateien:
 
007yurik:
Guten Tag, bitte um Rat... Nach der Aktualisierung auf die neueste Version tauchten Fehler in "SmoothAlgorithms" auf. Und die Mittelwertbildung von sma, lwma, parma und vidya funktioniert nicht mehr. Es flucht bei dieser Zeile: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Wie soll ich es reparieren? Ich danke Ihnen!
Schreiben Sie dem Autor auf der Diskussionsseite seiner Bibliothek:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
Schreiben Sie darüber an den Autor auf der Diskussionsseite seiner Bibliothek:
Danke, aber er hat nicht geantwortet. In einem anderen Thread werde ich das Angebot ausprobieren.
 

Es besteht die Notwendigkeit, numerische Werte als Aufzählungselemente zu verwenden.

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

Dies ist nicht erlaubt. Kompilierungsfehlerbezeichner erwartet. Gibt es eine Möglichkeit, dies zu umgehen (nur numerische Werte zu belassen)?

 
Juer:

Es besteht die Notwendigkeit, numerische Werte als Aufzählungselemente zu verwenden.

Dies ist nicht erlaubt. Kompilierungsfehlerbezeichner erwartet. Gibt es eine Möglichkeit, dies zu umgehen (nur numerische Werte zu belassen)?

//+------------------------------------------------------------------+
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
  };
//+------------------------------------------------------------------+
 

Können Sie mir einen Link zu der Dokumentation geben, in der die Bedeutung dieser <>-Symbole erläutert wird?

_GlobalVariableGet<string>("ResourceName")
 

Gibt es eine Möglichkeit, eine Liste der zu optimierenden Parameter programmatisch festzulegen?

Die Sache ist die, dass ich eine Menge Parameter habe. Tausende von ihnen. Ich habe sie in einem separaten Programm gespeichert. EA lädt sie während der Initialisierung über eine externe Datei. Meine Aufgabe ist es nun, diese Parameter zu optimieren.

Das ist zum Beispiel eine Liste von optimierbaren Parametern mit Werten und Bereichen in einer Datei. Lesen Sie dort ab und schreiben Sie das Ergebnis ebenfalls dorthin.

 

Ich schreibe eine Funktion zum Schließen von Charts ohne EAs oder Skripte. Ich erhalte den Namen des Expert Advisors und des Skripts im Diagramm mit der Funktion ChartGetString. Wenn beide leer sind, schließe ich sie. Das Problem liegt in der Zeile mit dem Diagramm, das je nach Bedingung geschlossen wird. Die Bedingung ist nie erfüllt. Hier ist der Code.

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

Das zeigt der Ausdruck

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

Ich verstehe, dass wir die Bedingung wie folgt ändern können

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

Wie sollten wir sonst die String-Variable mit einem leeren String vergleichen?

 

Guten Tag, ich habe .mqh für die Datenverarbeitung und Speicherung in der Ressource erstellt. Alles funktioniert, aber es gibt eine Nuance, wenn ich den Indikator zu kompilieren, ist die .mqh zurückgesetzt und neu-does das Gewicht Prozess für die Speicherung. Ziel - SolangeDaten in der Ressource vorhanden sind , wird sie nicht zurückgesetzt. Wo liegt der Fehler, wie kann er behoben werden?

// Сохранение данных
#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:

Wie kann ich eine variable Zeichenkette korrekt mit einer leeren Zeichenkette vergleichen?

Es gibt zwei normale leere Zeichenfolgen - "" und NULL. Und es kann auch benutzerdefinierte leere Zeichenfolgen geben.