Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 947

 
Добрый день!Подскажите пожалуйста...После обновления на последний билд стали вылетать ошибки в "SmoothAlgorithms". И перестали работать усреднения  sma, lwma, parma, vidya. Ругается на эту строчку: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Как исправить? Спасибо!
Файлы:
 
007yurik:
Добрый день!Подскажите пожалуйста...После обновления на последний билд стали вылетать ошибки в "SmoothAlgorithms". И перестали работать усреднения  sma, lwma, parma, vidya. Ругается на эту строчку: "array out of range in 'SmoothAlgorithms.mqh' (3394,9)". Как исправить? Спасибо!
Написать об этом автору на странице обсуждения его библиотеки:
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
Написать об этом автору на странице обсуждения его библиотеки:
Спасибо,но он что-то не ответил.Правда  в другой теме,попробую в предложенной.
 

Есть необходимость использовать числовые значения в качестве элементов перечисления.

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

Так нельзя. Ошибка при компилировании identifier expected. Можно как-то обойти (оставив исключительно числовые значения)?

 
Juer:

Есть необходимость использовать числовые значения в качестве элементов перечисления.

Так нельзя. Ошибка при компилировании identifier expected. Можно как-то обойти (оставив исключительно числовые значения)?

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

Можете дать силку на документацию что означает эти символы <> ?

_GlobalVariableGet<string>("ResourceName")
 

Скажите, можно ли каким-либо образом программно задать список оптимизируемых параметров?

Дело в том, что у меня параметров очень много. Тысячи. Я их выношу в отдельную программу. EA подгружает их во время инициализации через внеший файл. Вот моя задача прооптимизировать сейчас эти параметры.

То есть например список оптимизируемых параметров со значениями и диапазонами в файле. Оттуда читать, туда же и писать результат.

 

Пишу функцию для закрытия графиков на которых нет советников и скриптов. Получаю имя эксперта и скрипта на графике с помощью функции ChartGetString. Если и там и там пусто закрываю. И вот как раз в строке с закрытием графика по условию проблема. Условие не выполняется никогда. Вот код.

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

А вот, что выводит Print

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

Я понимаю, что можно условие поменять на такое

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

Ну, а как всё таки правильно сравнить переменную string c пустой строкой ?

 

Добрый день! Я сделал .mqh для обработки данных и хранение в ресурсе. Всё работает, но есть нюанс, если скомпилировать индикатор, то .mqh сбрасывается и заново делает вес процесс для хранение. Цель - пока есть данные в ресурсе они не сбрасывается. Где ошибка, как исправить?

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

как всё таки правильно сравнить переменную string c пустой строкой ?

Есть две штатные пустые строки - "" и NULL. И могут быть еще кастомные пустые строки.

Причина обращения: