Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 947

 
Buon pomeriggio, per favore consigliatemi... Dopo l'aggiornamento all'ultima build, gli errori in "SmoothAlgorithms" hanno iniziato a comparire. E sma, lwma, parma, vidya media ha smesso di funzionare. Sta imprecando a questa linea: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Come devo risolvere il problema? Grazie!
File:
 
007yurik:
Buon pomeriggio, per favore consigliatemi... Dopo l'aggiornamento all'ultima build, gli errori in "SmoothAlgorithms" hanno iniziato a volare fuori. E sma, lwma, parma, vidya media ha smesso di funzionare. Sta imprecando a questa linea: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Come devo risolvere il problema? Grazie!
Scrivi all'autore nella pagina di discussione della sua biblioteca:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
Scrivete all'autore sulla pagina di discussione della sua biblioteca:
Grazie, ma non ha risposto. In un altro thread, proverò quello in offerta.
 

C'è la necessità di usare valori numerici come elementi di enumerazione.

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

Questo non è permesso. Identificatore di errore di compilazione previsto. C'è un modo per aggirarlo (lasciando solo valori numerici)?

 
Juer:

C'è la necessità di usare valori numerici come elementi di enumerazione.

Questo non è permesso. Identificatore di errore di compilazione previsto. C'è un modo per aggirarlo (lasciando solo valori numerici)?

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

Puoi darmi un link alla documentazione di cosa significano questi simboli <>?

_GlobalVariableGet<string>("ResourceName")
 

C'è un modo per impostare programmaticamente una lista di parametri da ottimizzare?

Il fatto è che ho molti parametri. Migliaia. Li ho messi in un programma separato. EA che li carica durante l'inizializzazione attraverso un file esterno. Quindi il mio compito è quello di ottimizzare questi parametri ora.

Questo è per esempio un elenco di parametri ottimizzabili con valori e intervalli in un file. Leggi da lì e scrivi il risultato anche lì.

 

Sto scrivendo una funzione per chiudere i grafici senza EA o script. Ottengo il nome dell'Expert Advisor e dello script sul grafico usando la funzione ChartGetString. Se entrambi sono vuoti, li chiudo. Il problema è nella linea con la chiusura del grafico secondo la condizione. La condizione non è mai soddisfatta. Ecco il codice.

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

Ecco cosa mostra Print

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

Capisco che possiamo cambiare la condizione nel seguente modo

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

Beh, in che altro modo dovremmo confrontare la variabile stringa con una stringa vuota?

 

Buon pomeriggio, ho fatto .mqh per l'elaborazione e la memorizzazione dei dati nella risorsa. Tutto funziona, ma c'è una sfumatura, se compilo l'indicatore, il .mqh viene resettato e rifà il processo di peso per la memorizzazione. Obiettivo - finché ci sonodati nella risorsa non viene resettato. Dov'è l'errore, come risolverlo?

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

Come faccio a confrontare correttamente una stringa variabile con una stringa vuota?

Ci sono due normali stringhe vuote - "" e NULL. E ci possono essere anche stringhe vuote personalizzate.