Особенности языка mql5, тонкости и приёмы работы - страница 17

 
Комбинатор:
Эээ зачем если его все равно не видно?

Эти параметры можно не задавать, если не нужно отображать индикатор.

Да и совместимость со старым кодом не будет нарушена. При тестировании индикатор отображается всегда.‌

 
Slawa:

Потому что через хэндл индикатора (через рассчётную часть) свойства отображения (рисовательной части) задать невозможно. Баг - это когда что-то написано по-одному, а работает совсем по-другому.

Здесь нужен другой подход. Доступ к индикатору по короткому имени, как в группе функций ChartIndicatorXXX. Что-то типа ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)‌

Мы уже думали над этим, но пока руки не дошли‌

Если это предназначается для индикаторов поставленных программным способом, не лучше-ли выделенное заменить на хендл индикатора?
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.02.25 16:02

  static bool HistoryDealSelect( MqlTradeResult &Result )
  {
    if ((Result.deal == 0) && (Result.order != 0))
    {
      if (::HistorySelectByPosition(::HistoryOrderGetInteger(Result.order, ORDER_POSITION_ID)))
        for (int i = ::HistoryDealsTotal() - 1; i >= 0; i--)
        {
          const ulong DealTicket = ::HistoryDealGetTicket(i);

          if (Result.order == ::HistoryDealGetInteger(DealTicket, DEAL_ORDER))
          {
            Result.deal = DealTicket;

            break;
          }
        }
    }

    return(::HistoryDealSelect(Result.deal));
  }
  // Учтены MT5-нюансы: Result.deal == 0
  static bool OrderSendSync( const MqlTradeRequest &Request, MqlTradeResult &Result )
Синхронизированность уже не актуальна. Выделил только кусок, отвечающий за коррекцию Result.deal.
 
fxsaber:
Синхронизированность уже не актуальна. Выделил только кусок, отвечающий за коррекцию Result.deal.
а что за "коррекция Result.deal" ?
 
Alexey Viktorov:
Если это предназначается для индикаторов поставленных программным способом, не лучше-ли выделенное заменить на хендл индикатора?
Не лучше. Потому что невозможно без изменения архитектуры. Я очень подробно описал, почему.
 
Artyom Trishkin:
а что за "коррекция Result.deal" ?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2017.02.23 15:34

Из СД

Заполнение тикета результирующей сделки не гарантировано. Заполнение или не заполнение зависит от режима исполнения инструмента и настроек конкретного сервера.

‌Кто закладывался на ненулевой Result.deal - примите меры.

 
Roffild:

Эти параметры можно не задавать, если не нужно отображать индикатор.

Если нужно отображать можно вынести эти настройки в параметры.
 
fxsaber:

Ну ... вижу, что закладываться на ненулевой Result.deal нельзя. Тогда о чём говорит эта строчка?‌

// Учтены MT5-нюансы: Result.deal == 0

‌Где они учтены?

 
Artyom Trishkin:

Ну ... вижу, что закладываться на ненулевой Result.deal нельзя. Тогда о чём говорит эта строчка?‌

‌Где они учтены?


В OrderSendSync вызывается перегруженная (см. выше) HistoryDealSelect.
 

fxsaber:

static bool OrderSendSync( const MqlTradeRequest &Request, MqlTradeResult &Result )

Синхронизированность уже не актуальна. Выделил только кусок, отвечающий за коррекцию Result.deal.

А позвольте полюбопытствовать, почему static?
Причина обращения: