Ошибки, баги, вопросы - страница 1613

 
Vladimir Pastushak:
При работе с историей счета Выбрать период если выбираем неделя то история вся пропадает, хотя она есть ...
Отчёты в Office ещё и не такое могут.
 
Karputov Vladimir:
Отчёты в Office ещё и не такое могут.
Знаю, но в терминале то что должно работать не работает.
 
Vladimir Pastushak:
Знаю, но в терминале то что должно работать не работает.
Так Вам нужно бы уточнять, терминал то тьма...
 

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

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

 

Предложение разработчикам:

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

 

Свойство POSITION_COMMISSION в тестере (RoboForexEU-MetaTrader 5) возвращает всегда нулевую комиссию.

//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
  {
   return(PositionGetDouble(POSITION_COMMISSION));
  }

Также POSITION_COMMISSION (== 8) отсутствует в справке и метаэдиторе (подсветка), но компилятору знакомо. Комиссию позиции не сложно определить другим (рабочим) методом. Свойство POSITION_COMMISSION - рудимент? 


 
Какой смысл в наличии  ENUM_DEAL_PROPERTY_INTEGER::DEAL_TICKET, если единственное место, где его можно применить, это HistoryDealGetInteger(TicketDeal, DEAL_TICKET)?
 
Если HDD ушел в слип, то компиляция в метаэдиторе работает - "сбрасывается" как бы на диск EX5. Но тестер его подхватить не может. Пишет

2016.07.19 03:25:04     Tester  loading of C:\Program Files\MetaTrader 5\MQL5\Experts\Test.ex5 failed
2016.07.19 03:25:04     Test    invalid EX5 file (533)

Сам терминал HDD не пробуждает. А если его пробудить через сторонние действия, то терминал все равно выдает ошибку. Помогает перезагрузка терминала. 

Terminal        Microsoft Windows XP (X86 based PC), IE 08.00, Intel Core2 Duo  T7700 @ 2.40GHz, RAM: 2867 / 3581 Mb, HDD: 20998 / 27784 Mb, GMT+02:00
Terminal        MetaTrader 5 build 1368 started (MetaQuotes Software Corp.)

 
Если в тестере выставленный SellLimit удаляется вследсвие экспирации (expired) или окончания бэктеста, то дата его экспирации становится ошибочно равна дате установки отложенника.

 

Если установить дату экпирации через TRADE_ACTION_MODIFY, то она не срабатывает в тестере.

 

Воспроизведение
void OnInit()
{
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_PENDING;
  
  Request.symbol = Symbol();
  Request.volume = 1;
  Request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
  
  Request.type = ORDER_TYPE_SELL_LIMIT;

  MqlTradeResult Result;
  
  if (OrderSend(Request, Result))
  {
    Request.action = TRADE_ACTION_MODIFY;
    Request.order = Result.order;
    
    Request.type_time = ORDER_TIME_SPECIFIED;
    Request.expiration = TimeCurrent() + 10000;
    
    if (OrderSend(Request, Result))
      if (OrderSelect(Request.order))
        Print("SetExpiration = " + (string)(datetime)OrderGetInteger(ORDER_TIME_EXPIRATION)); // установили дату экспирации        
  }
}

void OnDeinit( const int reason )
{  
  if (HistorySelect(0, TimeCurrent()))
  {
    const ulong Ticket = HistoryOrderGetTicket(0);
   
    if (Ticket > 0)
    {
      // Дата экспирации изменилась - стала равна дате установки ордера!
      Print("NowExpiration = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_EXPIRATION));
     
      // При этом ордер по ранее установленной дате экспирации не удалился!     
      Print("DeleteTime = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_DONE));
    }
  }
}

 
Andrey Dik:

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

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

Попробовал. Теперь у меня несколько терминалов и их тестеры обращаются к одной единственной папке с историей. Кроме жалоб терминала типа:

 2016.07.19 16:39:02.276 Spreads config file open error [The process cannot access the file because it is being used by another process. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][The process cannot access the file because it is being used by another process. (32)]

никаких проблем в работе не наблюдаю. Ура!.. Получена экономия в сотни гигабайт дискового пространства!

В сервисдеске предупредили, что подобные действия с организацией доступа к общим данным могут нести риск. 


 
Andrey Dik:

Попробовал. Теперь у меня несколько терминалов и их тестеры обращаются к одной единственной папке с историей. Кроме жалоб терминала типа:

 2016.07.19 16:39:02.276 Spreads config file open error [The process cannot access the file because it is being used by another process. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][The process cannot access the file because it is being used by another process. (32)]

никаких проблем в работе не наблюдаю. Ура!.. Получена экономия в сотни гигабайт дискового пространства!

В сервисдеске предупредили, что подобные действия с организацией доступа к общим данным могут нести риск. 


а каким образом реализовали?