Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 947

 
Boa tarde, por favor aconselhe... Depois de actualizar para a última construção, erros no "SmoothAlgorithms" começaram a voar para fora. E a sma, lwma, parma, vidya average parou de funcionar. Jura-se a esta linha: "matriz fora de alcance em 'SmoothAlgorithms.mqh' (3394,9)". Como devo corrigi-lo? Obrigado!
Arquivos anexados:
 
007yurik:
Boa tarde, por favor aconselhe... Depois de actualizar para a última construção, começaram a aparecer erros no "SmoothAlgorithms". E a sma, lwma, parma, vidya average parou de funcionar. Jura-se a esta linha: "matriz fora de alcance em 'SmoothAlgorithms.mqh' (3394,9)". Como devo corrigi-lo? Obrigado!
Escreva para o autor na página de discussão da sua biblioteca:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
Escreva sobre isso ao autor na página de discussão da sua biblioteca:
Obrigado, mas ele não respondeu. Num outro tópico, vou tentar o que está em oferta.
 

Há necessidade de utilizar valores numéricos como elementos de enumeração.

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

Isto não é permitido. Identificador de erro de compilação esperado. Existe alguma forma de contornar o problema (deixando apenas valores numéricos)?

 
Juer:

Há necessidade de utilizar valores numéricos como elementos de enumeração.

Isto não é permitido. Identificador de erro de compilação esperado. Existe alguma forma de contornar o problema (deixando apenas 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
  };
//+------------------------------------------------------------------+
 

Pode dar-me um link para a documentação do significado destes símbolos <>?

_GlobalVariableGet<string>("ResourceName")
 

Existe alguma forma de programar uma lista de parâmetros a serem optimizados?

A questão é que eu tenho muitos parâmetros. Milhares deles. Coloquei-os num programa separado. EA carregando-os durante a inicialização através de ficheiro externo. Portanto, a minha tarefa é optimizar estes parâmetros agora.

Isto é, por exemplo, uma lista de parâmetros optimizáveis com valores e intervalos num ficheiro. Leia a partir daí e escreva o resultado também aí.

 

Estou a escrever uma função para fechar gráficos sem EAs ou guiões. Recebo o nome de Expert Advisor e o script no gráfico usando a função ChartGetString. Se ambos estiverem vazios, eu fecho-os. O problema está na linha com o fecho do gráfico de acordo com a condição. A condição nunca é satisfeita. Aqui está o código.

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

Aqui está o que a impressão mostra

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

Compreendo que podemos mudar a condição para o seguinte

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

Bem, de que outra forma devemos comparar a variável string com uma string vazia?

 

Boa tarde! fiz .mqh para o processamento e armazenamento de dados no recurso. Tudo funciona, mas há uma nuance, se eu compilar o indicador, o .mqh é reiniciado e refaz o processo de peso para armazenamento. Alvo - desde que haja dados no recurso não é reinicializado. Onde está o erro, como corrigi-lo?

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

Como posso comparar correctamente uma cadeia variável com uma cadeia vazia ?

Há duas cordas vazias normais - "" e NULL. E também pode haver cordas vazias personalizadas.

Razão: