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

 
WindSW:
Пожалуйста, подскажите, как посмотреть сколько памяти занимает эксперт и как происходит перерспределение?

Диспетчера задач Windows вам должно хватить.

Эту статью полистайте.

А вообще, разберите ваш эксперт на скрипты, заставьте все функции работать, а потом уж собирайте их в кучу.

 
WindSW:

И все же у меня не получается определить почему не создаются уровни с помощью ObjectCreate. Все функции отрабатываются, а объекты OBJ_TREND не создаются

На глобальном уровне определены переменные:

string oRes, oSup, oPP, oRes1, oRes2, oRes3, oSup1, oSup2, oSup3, textPP, textR1, textR2, textR3, textS1, textS2, textS3;

Код, который должен создавать уровни:

Народ, помогите разобраться с этим. Пожалуйста

 

Уровни создаются, только их не видно)

Задайте координаты - время / цена. У Вас там нули сплошные заданы.

 
Dima_S:

Уровни создаются, только их не видно)

Задайте координаты - время / цена. У Вас там нули сплошные заданы.

Он делает объект без привязок, потом его модифицирует. Тут.

Не создаётся объект из-за некорректного (не назначенного) имени. (Выше уже ответили). Соответственно, и модификации не поддаётся, чтоб его увидеть.

 
fyords:

Ну допустим, Вы объявили переменные на глобальном уровне, а Вы присвоили этим переменным значения?

Если нет, то получается Вы говорите программе "создай объект с такими-то характеристиками с именем..." и тут проблема - имя не задано. Вот он и не создает.

Может проще будет указать его прямо в коде ObjectCreate?

 

Спасибо! Почему-то не сообразил так сразу сделать, ведь в 4 версии также определяется имя объекта.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

У меня не получается исправить ошибку с переполнением массива. Я о ней писал на 88 странице. Эксперт работает какое-то время и вылетает. А точнее работает один проход от начала до конца эксперта и на втором проходе в указанном ниже цикле массив переполняется с указанием на строку:

H=High[j];

void CreateLevels()
   {
      double High[];
      ArrayResize(High,0);
      ArraySetAsSeries(High,true);
      CopyHigh(_Symbol,_Period,0,Candle,High);
      ArrayResize(HBar,0);
      ArrayResize(HBar,1000);
      int countH=0;
      int f1;
      double H;
      for(int j=Nachalo;j<=Candle;j++)
         {
          //--- поиск макс -----------------------------------
          if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
            {
             f1=0;
             H=High[j];                                 // отметка текущего хая
             ...                                        // здесь обработка флага f1
             if(f1==0)                                  // если занесение хая в массив разрешено
               {
                HBar[countH][0]=High[j];
                countH++;
               }
            }
         }
   }

Самое главное я не понимаю как массив High[] переполняется, ведь указано конкретное количество хаев? И почему терминал указывает на переполнение в строке H=High[j]; ?

Пожалуйста, можете подсказать как правильно реализовать задуманное? Может как-то обнулить массив  High[] или в переменную Н можно каким-то другим способом записать хай конкретной свечи?

 
WindSW:

Попробуйте так:

for(int j=Nachalo;j<Candle;j++)

 Основание: индексация массива начинается с нуля, поэтому при Candle==100 последний элемент массива проидексирован числом 99, а не числом 100.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Yedelkin:

Попробуйте так:

 Основание: индексация массива начинается с нуля, поэтому при Candle==100 последний элемент массива проидексирован числом 99, а не числом 100.

Спасибо! Помогло!
 

Добрый день! Я столкнулся со следующей проблемой... Сгенерировал эксперта... Запустил его на фьючерсе на индекс РТС. А там, лоты не дробные = не работает манименеджмент, и котриовки кратные 10 = не работает трэйлинг стоп. Пожалуйста, подскажите, можно ли решить эту проблему?

Как округлять значения iМа до 10 или 5 я знаю,  в крайнем случае, думаю, отдельно запустить трэйлингстоп. 

 
oldiol: А там, лоты не дробные = не работает манименеджмент, и котриовки кратные 10 = не работает трэйлинг стоп. Пожалуйста, подскажите, можно ли решить эту проблему? 

У инструмента есть такое свойство, как Volume_Step (типа, "шаг лота"). Посмотрите, может удастся его использовать применительно к недробным объёмам.

Ну а котировки кратные 10 - надо просто шаг трейлингстопа сделать таким же. 

 
Yedelkin:

У инструмента есть такое свойство, как Volume_Step (типа, "шаг лота"). Посмотрите, может удастся его использовать применительно к недробным объёмам.

Ну а котировки кратные 10 - надо просто шаг трейлингстопа сделать таким же. 

 

Очень благодарен) Попробую..
Причина обращения: