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

 
uncleVic:

1111000000000000011111111b => 31457535 (десятичное число)

                               запрет торговли с 00 до 07 часов

        разрешение торговли с 08 до 20 часов

запрет торговли с 21 до 23 часов

Спасибо
 

Вероятно, совсем чайничий вопрос, пока еще плохо ориентируюсь в mql5 синтаксисе (впрочем, как и во всем остальном). Подскажите, а может ли функция возвращать более одного значения, либо массив или еще какую структуру?

Ну что-то вроде:

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

Вероятно, совсем чайничий вопрос, пока еще плохо ориентируюсь в mql5 синтаксисе (впрочем, как и во всем остальном). Подскажите, а может ли функция возвращать более одного значения, либо массив или еще какую структуру?

Нет, массив можно описать глобально и изменять его значения в функции.
 
zfs:
Нет, массив можно описать глобально и изменять его значения в функции.
Спасибо, буду пробовать)
 

Подскажите пожалуйста!Я отписался от сигнала а через день снова на этот сигнал подписался,в подписках сигнал активен,а в настройках ставишь галочку разрешить подписку потом окей и снова открываешь настройки а галочек нет.Может кто подскажет что делать?У поставщика сигналов открываются новые ордера,а у меня тишина.

 
Lone_Irbis:

Вероятно, совсем чайничий вопрос, пока еще плохо ориентируюсь в mql5 синтаксисе (впрочем, как и во всем остальном). Подскажите, а может ли функция возвращать более одного значения, либо массив или еще какую структуру?

Ну что-то вроде:

Простые (не содержащие объектов классов, строк и динамических массивов) структуры можно возвращать из функций.

 

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

Есть зато новый, вероятно менее типичный вопрос: знаю что есть в mql5 всякие встроенные фишки для управления тестером стратегий. Но вот никак не найду, есть ли среди них дающие техническую возможность обрабатывать результаты оптимизации заранее заготовленным способом? Ну вот допустим найти среднее значение по профиту среди всех результатов, имеющих все значения параметров общими кроме Х, которое в диапазоне таком-то. 

 Или это только ручками в экселе возможно? Как в экселе все это делается я в курсе, если что. Просто есть тут задумка небольшого исследования (чисто для себя, из интереса), для чего пришлось бы перелопатить целую гору таблиц очень рутинно-одинаковым образом, а хочется как-то автоматизировать...

 
Lone_Irbis:

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

Есть зато новый, вероятно менее типичный вопрос: знаю что есть в mql5 всякие встроенные фишки для управления тестером стратегий. Но вот никак не найду, есть ли среди них дающие техническую возможность обрабатывать результаты оптимизации заранее заготовленным способом? Ну вот допустим найти среднее значение по профиту среди всех результатов, имеющих все значения параметров общими кроме Х, которое в диапазоне таком-то. 

 Или это только ручками в экселе возможно? Как в экселе все это делается я в курсе, если что. Просто есть тут задумка небольшого исследования (чисто для себя, из интереса), для чего пришлось бы перелопатить целую гору таблиц очень рутинно-одинаковым образом, а хочется как-то автоматизировать...

Почитайте здесь:  https://www.mql5.com/ru/docs/optimization_frames


А потом ещё поиском по форуму поищите примеры использования.

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

Почитайте здесь:  https://www.mql5.com/ru/docs/optimization_frames


А потом ещё поиском по форуму поищите примеры использования.

Да, это мне уже попадалось несколько раз, и примеры типа такого. Но почему-то показалось, что это не совсем то, что я ищу. Но может это я просто не умею их готовить пока еще :)

 

В любом случае, это пока не актуально до тех пор, пока несчастную сову не удается заставить работать как надо...  

В связи с чем последний (надеюсь, по крайней мере) на ближайшее время вопросец: как правильно добыть цену открытия последнего ордера позиции?

Мой подопытный сов - на самом деле изначально не мой, а найденный, неизвестного автора, явно сыроватый. У него изначально была такая странная бага: в тестере работает как надо, но на демке не получает значения последней цены ордера.

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

Выдает ошибку 4753 (ордер не найден) и возвращает ноль на демке (на тестере возвращает все как положено). И это при том, что расставленные тестовые Print подсказывают, что до обработки HistoryOrderGetDouble он вроде бы доходит, и даже имеет не пустой Ticket...

 

Скажите, 50 рейтинга 1$ каждую неделю?, у кого 5000 он получает 100$ в неделю?

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