Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 947

 
Buenas tardes, por favor, aconsejen... Después de actualizar a la última compilación, han empezado a salir errores en "SmoothAlgorithms". Y los promedios de sma, lwma, parma y vidya dejaron de funcionar. Está jurando en esta línea: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". ¿Cómo debo arreglarlo? Gracias.
Archivos adjuntos:
 
007yurik:
Buenas tardes, por favor, aconsejen... Después de actualizar a la última compilación, empezaron a aparecer errores en "SmoothAlgorithms". Y los promedios de sma, lwma, parma y vidya dejaron de funcionar. Está jurando en esta línea: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". ¿Cómo debo arreglarlo? Gracias.
Escriba al autor en la página de discusión de su biblioteca:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
Escriba sobre ello al autor en la página de discusión de su biblioteca:
Gracias, pero no me contestó. En otro hilo, probaré el que se ofrece.
 

Es necesario utilizar valores numéricos como elementos de enumeración.

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

Esto no está permitido. Identificador de error de compilación esperado. ¿Hay alguna forma de evitarlo (dejando sólo los valores numéricos)?

 
Juer:

Es necesario utilizar valores numéricos como elementos de enumeración.

Esto no está permitido. Identificador de error de compilación esperado. ¿Hay alguna forma de evitarlo (dejando sólo los valores numéricos)?

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

¿Puedes darme un enlace a la documentación de lo que significan estos símbolos <>?

_GlobalVariableGet<string>("ResourceName")
 

¿Existe alguna forma de establecer mediante programación una lista de parámetros a optimizar?

El caso es que tengo muchos parámetros. Miles de ellos. Los pongo en un programa separado. EA cargándolos durante la inicialización a través de un archivo externo. Así que mi tarea es optimizar estos parámetros ahora.

Esto es, por ejemplo, una lista de parámetros optimizables con valores y rangos en un archivo. Lea desde allí y escriba el resultado allí también.

 

Estoy escribiendo una función para cerrar gráficos sin EAs o scripts. Obtengo el nombre del Asesor Experto y del script en el gráfico usando la función ChartGetString. Si ambas están vacías, las cierro. El problema está en la línea con el cierre del gráfico según la condición. La condición nunca se cumple. Aquí está el código.

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

Esto es lo que muestra la impresión

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

Entiendo que podemos cambiar la condición por la siguiente

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

¿Cómo podríamos comparar la variable cadena con una cadena vacía?

 

Buenas tardes! He hecho .mqh para el procesamiento y almacenamiento de datos en el recurso. Todo funciona, pero hay un matiz, si compilo el indicador, el .mqh se reinicia y vuelve a hacer el proceso de peso para el almacenamiento. Objetivo: mientras haya datos en el recurso no se restablece. ¿Dónde está el error, cómo solucionarlo?

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

¿Cómo puedo comparar correctamente una cadena variable con una cadena vacía?

Hay dos cadenas vacías normales: "" y NULL. Y también puede haber cadenas vacías personalizadas.