Обновление платформы MetaTrader 5 build 1010: Новые сигналы, маркет и опционы

 

Обновление платформы MetaTrader 5 build 1010: Новые сигналы, маркет и опционы

В пятницу 31-го октября будет опубликовано обновление платформы MetaTrader 5. Обновление будет содержать следующие изменения:

MetaTrader 5 Client Terminal build 1010
  1. Signals: Полностью переработана витрина сигналов. Добавлены новые функции, улучшен дизайн и повышено удобство работы с сигналами.



    Новые функции списка сигналов:

    • В списке сигналов появились графики прироста, аналогичные отображаемым на сайте MQL5.community. Зеленая иконка в левом нижнем углу графика означает, что сигнал создан на основе реального счета.
    • Теперь подписаться на сигнал можно прямо из списка. Для этого необходимо нажать кнопку с изображением цены (или надписью Free, если сигнал бесплатный). Сразу после этого будет показан диалог подтверждения подписки.
    • Теперь сигналы можно добавить в избранные. Нажмите кнопку с изображением звезды в конце строки сигнала. После этого сигнал можно будет легко найти на вкладке "Избранное".
    • Убрано контекстное меню. Сейчас чтобы найти сигнал, на который вы подписаны, зайдите в любой сигнал. На верхней панели будет указан сигнал, на который вы подписаны, и ссылка на него.

    Обновилась страница просмотра сигналов. Появилась возможность добавить сигнал в избранные. Общее состояние счета сигнала показывается при наведении курсора мыши на показатель "Прирост".

    Расширилась статистика по сигналу:

    • Общий объем средств подписчиков.
    • Срок жизни торгового счета с момента первой торговой операции.
    • Среднее время удержания позиции.



    Также добавились новые вкладки:

    • Риски - информация о наилучших и наихудших торговых операциях и сериях операций, а также о просадках.
    • Отзывы - отзывы подписчиков сигнала.
    • Новости - через данную вкладку провайдер может информировать подписчиков о любых изменениях в работе сигнала и публиковать другую полезную информацию.

  2. Market: Переработано представление продуктов в MetaTrader AppStore. Программы, журналы и книги получили новый дизайн. Появилась возможность добавления продуктов в Избранное. Нажмите кнопку с изображением звезды при просмотре продукта. После этого вы легко сможете его найти на вкладке "Избранное".




  3. Terminal: Добавлена доска опционов и график волатильности. Продолжаются работы по внедрению инструментов торговли опционами. В следующей версии планируется включить инструменты анализа опционных стратегий.




    Доска опционов
    На доске отображается серия опционов по дате истечения на базовый актив (класс опционов), выбранный в поле "Underlying". Для опционов отображаются следующие параметры:

    • Bid CALL - цена продажи опциона колл.
    • Ask CALL - цена покупки опциона колл.
    • Theo CALL - теоретическая (справедливая) цена опциона колл, рассчитанная для указанного страйка по историческим данным.
    • Strike - цена исполнения опциона (страйк).
    • Volatility -  подразумеваемая (implied) волатильность. Она указывается в процентах и характеризует ожидания участников рынка по поводу стоимости базового актива опциона.
    • Theo PUT - теоретическая (справедливая) цена опциона пут, рассчитанная для указанного страйка по историческим данным.
    • Bid PUT - цена продажи опциона пут.
    • Ask PUT - цена покупки опциона пут.

    График волатильности
    По горизонтальной оси данного графика откладываются страйки опциона, а по вертикальной - подразумеваемая волатильность.




  4. Terminal: Добавлен показ значений пинга в списке точек доступа.




  5. Terminal: Произведена адаптация интерфейса терминала для экранов с высоким разрешением - Full HD и выше. Меню, панели инструментов, заголовки окон и статусная строка теперь имеют достаточный размер для удобного просмотра и работы на сенсорных дисплеях Windows-планшетов.

  6. Terminal: Добавлена команда управления торговыми символами в меню "Вид" и на панели инструментов. Теперь настройки символов всегда под рукой:



  7. MQL5: Добавлено преобразование параметра макроса в строку и конкатенация параметра макроса. Ниже приведен пример, в котором конкатенация макросов позволяет организовать автоматическое удаление экземпляров класса.
    //+------------------------------------------------------------------+
    //|                                                     MacroExample |
    //|                        Copyright 2014, MetaQuotes Software Corp. |
    //|                                       http://www.metaquotes.net  |
    //+------------------------------------------------------------------+
    #property script_show_inputs
    input bool InpSecond=true;
    
    #define DEFCLASS(class_name) class class_name:public CBase{public:class_name(string name):CBase(name){}};
    #define TOSTR(x) #x
    #define AUTODEL(obj) CAutoDelete auto_##obj(obj)
    #define NEWOBJ(type,ptr) do { ptr=new type(TOSTR(ptr)); \
                             Print("Create object '",TOSTR(type)," ",TOSTR(ptr),"' by macro NEWOBJ"); } \
                             while(0)
    //+------------------------------------------------------------------+
    //| Базовый класс, необходим для автоудаления объектов               |
    //+------------------------------------------------------------------+
    class CBase
      {
    protected:
       string            m_name;
    
    public:
                         CBase(string name):m_name(name) { }
       string            Name(void) const{ return(m_name); }
    
      };
    //+------------------------------------------------------------------+
    //| Класс автоудаления объектов позволяет не следить за созданными   |
    //| объектами. Он удаляет их в своем деструкторе                     |
    //+------------------------------------------------------------------+
    class CAutoDelete
      {
       CBase            *m_obj;
    
    public:
                         CAutoDelete(CBase *obj):m_obj(obj) { }
                        ~CAutoDelete()
         {
          if(CheckPointer(m_obj)==POINTER_DYNAMIC)
            {
             Print("Delete object '",m_obj.Name(),"' by CAutoDelete class");
             delete m_obj;
            }
         }
      };
    //+------------------------------------------------------------------+
    //| Объявим два новых класса CFoo и CBar                             |
    //+------------------------------------------------------------------+
    DEFCLASS(CFoo);
    DEFCLASS(CBar);
    //+------------------------------------------------------------------+
    //| Основная функция скрипта                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       CFoo *foo;
    //--- создадим объект класса CFoo
       NEWOBJ(CFoo,foo);
    //--- создадим экземпляр класса автоудаления объекта CFoo foo
       AUTODEL(foo);
    //---
       if(InpSecond)
         {
          CBar *bar;
          //---
          NEWOBJ(CBar,bar);
          AUTODEL(bar);
         }
    //--- Удалять foo не нужно, он будет удален автоматически
      }
    //+------------------------------------------------------------------+
    
  8. MQL5: Добавлено свойство OBJPROP_ANCHOR для графических объектов "Bitmap" и "Bitmap Label". Свойство определяет точку привязки графического объекта на графике: левый верхний угол, слева по центру, левый нижний угол, снизу по центру и т.д.
  9. MQL5: Добавлено чтение свойства графика CHART_BRING_TO_TOP (график показан поверх всех остальных) в функции ChartGetInteger.
  10. MQL5: Исправлены ошибки компиляции и генерации тернарного оператора "?".
  11. MQL5: Исправлена ошибка передачи статического массива - члена класса
  12. MQL5: Исправлено применение шаблона к списку инициализации членов класса шаблонного конструктора.
  13. Signals: Существенно смягчены ограничения при подписке на сигналы:

    Если в торговой истории сигнала есть символы, которых нет у подписчика, то подписка разрешается (ранее запрещалась). Действия с позициями, по которым у подписчика отсутствуют символы, игнорируются. При этом в журнал выводится информирующее сообщение:
    2014.08.26 16:44:29.036    '2620818': Signal - symbol GBPNZD not found
    Если у подписчика есть позиции и/или отложенные ордера, то показывается диалог предупреждения с предложением их закрыть/удалить (как и ранее). Однако теперь это не является обязательным условием продолжения работы с сигналами.



    Синхронизация с провайдером сигналов будет осуществлена. Позиции и ордера, открытые не по сигналу, на который осуществляется подписка, будут оставлены без изменения. Пользователь может проводить любые операции с ними.

    Теперь пользователи могут осуществлять торговые операции вручную (или советником), будучи подписанными на сигнал. Сервис сигналов будет игнорировать позиции и ордера, открытые трейдером.
    Следует учитывать, что выставление ордеров вручную влияет на объем доступной маржи на торговом счета. При открытии позиций вручную общая нагрузка на счет увеличивается по сравнению со счетом провайдера сигналов.
  14. Signals: Добавлена поддержка процента копирования объемов с плавающей точкой. Снижен минимальный процент копирования объемов у сигналов с 1% до 0.001%.
  15. Tester: Исправлены зависания агента тестирования при работе с облачной сетью MQL5 Cloud Network.
  16. Tester: Исправлен расчет свопов в пунктах при минимальных объемах торговой позиции.
  17. MetaEditor: Исправлена работа горячих клавиш для команд "Navigate Forward" и "Navigate Backward".
  18. MetaViewer: Исправлена навигация по страницам на панели инструментов.
  19. MetaViewer: Исправлен поиск текста с учетом текущего языка интерфейса.
  20. Исправления по крешлогам.
  21. Обновлена документация.

Обновление будет доступно через систему LiveUpdate.

 

MetaQuotes:

7. MQL5: Добавлено преобразование параметра макроса в строку и конкатенацияпараметра макроса. Ниже приведен пример, в котором конкатенациямакросов позволяет организовать автоматическое удаление экземпляровкласса.

//+------------------------------------------------------------------+
//|                                                     MacroExample |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net  |
//+------------------------------------------------------------------+
#property script_show_inputs
input bool InpSecond=true;

#define DEFCLASS(class_name) class class_name:public CBase{public:class_name(string name):CBase(name){}};
#define TOSTR(x) #x
#define AUTODEL(obj) CAutoDelete auto_##obj(obj)
#define NEWOBJ(type,ptr) do { ptr=new type(TOSTR(ptr)); \
                         Print("Create object '",TOSTR(type)," ",TOSTR(ptr),"' by macro NEWOBJ"); } \
                         while(0)
//+------------------------------------------------------------------+
//| Базовый класс, необходим для автоудаления объектов               |
//+------------------------------------------------------------------+
class CBase
  {
protected:
   string            m_name;

public:
                     CBase(string name):m_name(name) { }
   string            Name(void) const{ return(m_name); }

  };
//+------------------------------------------------------------------+
//| Класс автоудаления объектов позволяет не следить за созданными   |
//| объектами. Он удаляет их в своем деструкторе                     |
//+------------------------------------------------------------------+
class CAutoDelete
  {
   CBase            *m_obj;

public:
                     CAutoDelete(CBase *obj):m_obj(obj) { }
                    ~CAutoDelete()
     {
      if(CheckPointer(m_obj)==POINTER_DYNAMIC)
        {
         Print("Delete object '",m_obj.Name(),"' by CAutoDelete class");
         delete m_obj;
        }
     }
  };
//+------------------------------------------------------------------+
//| Объявим два новых класса CFoo и CBar                             |
//+------------------------------------------------------------------+
DEFCLASS(CFoo);
DEFCLASS(CBar);
//+------------------------------------------------------------------+
//| Основная функция скрипта                                         |
//+------------------------------------------------------------------+
void OnStart()
  {
   CFoo *foo;
//--- создадим объект класса CFoo
   NEWOBJ(CFoo,foo);
//--- создадим экземпляр класса автоудаления объекта CFoo foo
   AUTODEL(foo);
//---
   if(InpSecond)
     {
      CBar *bar;
      //---
      NEWOBJ(CBar,bar);
      AUTODEL(bar);
     }
//--- Удалять foo не нужно, он будет удален автоматически
  }
//+------------------------------------------------------------------+

Спасибо за нововведение и пример. Вопросы по примеру:

  • ## - конкатенация?
  • Почему в NEWOBJ не прописали сразу AUTODEL? Тогда любое создание объекта через NEWOBJ сразу бы делало его автоудаляемым без доп. вызовов AUTODEL - что удобнее и нагляднее в том же примере.
  • Почему TOSTR(ptr), а не проще - #ptr?
  • Конструкция do {...} while(0) по какой причине используется?
  • И где на практике такое автоудаление удобно использовать?
  • Можете привести жизненные примеры этой новой возможности MQL?

Добавлять аналог StringSubstr для макросов планируете? Чтобы в том же примере можно было писать не  NEWOBJ(type,ptr), а попроще -  NEWOBJ(type).

 
Можно ли в редактор добавить возможность, чтобы он показывал исходник с ракрытием всех макросов перед компиляцией?
 

1) В MT5 остался баг, который поправили в MT4.  ChartApplyTemplate может разрешать Автоторговлю эксперту, если она была ему выключена, но при попытке запретить Автоторговлю эксперту, если она была разрешена, ничего не меняется.

2) Просьба привести в соответствие функции StringTrimLeft  и StringTrimRight в MT4 и MT5. При переносе кода из MT4 в MT5 конструкция str = StringTrimLeft(str) вполне проходит, но неверна в MT5.

3) Просьба уже добавить функцию StringTrim и в MT4 и в MT5.

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