OrdersHistoryTotal()

 

Коллеги, приветствую!

Вопрос по OrdersHistoryTotal(). Читаем к ней описание и видим - "Количество закрытых и удаленных ордеров в истории текущего счета, загруженной в клиентском терминале. Размер списка истории зависит от текущих настроек вкладки "История счета" терминала".

Как из MQL4 узнать, что в клиентский терминал загружена история с "нужной даты"...и если нет, то дозагрузить?

Спасибо.

 

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

 
Alexey Viktorov:

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


Спасибо. Так это означает, что фактически невозможно подсчитать реальный профит, заработанный c конкретной даты по конкретному инструменту с конкретным магиком.

Как же тогда дать понять советнику, что "Цель" достигнута - пора закрывать сделки.  AccountEquity()  использовать некорректно - поскольку эта функция учитывает все без разбора на магики.

 
Mikhail Kontsevoy:

Спасибо. Так это означает, что фактически невозможно подсчитать реальный профит, заработанный c конкретной даты по конкретному инструменту с конкретным магиком.

Как же тогда дать понять советнику, что "Цель" достигнута - пора закрывать сделки.  AccountEquity()  использовать некорректно - поскольку эта функция учитывает все без разбора на магики.

В истории поставить "Вся история" или необходимую глубину, потом начинать цикл с проверкой магиков и прочих атрибутов и пересчётом желаемого параметра.

 
Alexey Viktorov:

В истории поставить "Вся история" или необходимую глубину, потом начинать цикл с проверкой магиков и прочих атрибутов и пересчётом желаемого параметра.


А как же если пишешь советник на заказ? Обращать внимание заказчика, что "Account History" нужно поставить в "Вся История"

 
Mikhail Kontsevoy:

А как же если пишешь советник на заказ? Обращать внимание заказчика, что "Account History" нужно поставить в "Вся История"

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

OrdersHistoryTotal()

Alexey Viktorov, 2017.12.04 12:22

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


 
Mikhail Kontsevoy:

А как же если пишешь советник на заказ? Обращать внимание заказчика, что "Account History" нужно поставить в "Вся История"

Для MT4 можно поправить (программно, перед запуском терминала) файл config\terminal.ini. Посмотрел комментарий к этой моей функции:

"Также проверит, что в config\terminal.ini есть строка HistoryPeriod=7 для MT4 - показывать всю историю счета, а не за иной период. Если ее нет или установка иная, перепишет файл"

 
Vladimir:

Для MT4 можно поправить (программно, перед запуском терминала) файл config\terminal.ini. Посмотрел комментарий к этой моей функции:

"Также проверит, что в config\terminal.ini есть строка HistoryPeriod=7 для MT4 - показывать всю историю счета, а не за иной период. Если ее нет или установка иная, перепишет файл"


Спасибо, за подсказку. Я нашел эту тему https://www.mql5.com/ru/forum/160726. Уверен, что средствами MQL config не переписать. Нужно писать BAT или привязывать внешний dll или еще что-то ... 

История сделок в MT4
История сделок в MT4
  • 2016.11.10
  • www.mql5.com
Добрый день! Поиск по форуму и Google мне не помогли, по этому решил создать обсуждение...
 
Mikhail Kontsevoy:

Спасибо, за подсказку. Я нашел эту тему https://www.mql5.com/ru/forum/160726. Уверен, что средствами MQL config не переписать. Нужно писать BAT или привязывать внешний dll или еще что-то ... 

Один раз через mklink поместите config-папку в песочницу. И конфиги навсегда станут доступны из MQL.

 

А у меня вот такая проверка есть, делюсь...

int It2 = 0;
  
   int TryWait = 6000; // 6000 - 10 minutes
   
   //--------- All access history
   if(accountHistoryF)
   {
      while(!IsStopped() )
      {
         RefreshRates();
      
         if(OrderSelect(0, SELECT_BY_POS, MODE_HISTORY) )
         {
            if(OrderType() == ORDER_TYPE_BALANCE) break;
         }
      
         if(It2 == 0)
         {
            Alert("Open the all Account History please. Waiting...");
            
            SendMail(AccountInfoString(ACCOUNT_COMPANY) + "   Account " + IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN) ), 
                     AccountInfoString(ACCOUNT_COMPANY) + "   Account " + IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN) ) + 
                     "\n Symbol " + symbolF +
                     "\n expert " + MQLInfoString(MQL_PROGRAM_NAME) + 
                     "\n Open the all Account History please!");
                     
            SendNotification(
                     AccountInfoString(ACCOUNT_COMPANY) + "   Account " + IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN) ) + 
                     "\n Symbol " + symbolF +
                     "\n expert " + MQLInfoString(MQL_PROGRAM_NAME) + 
                     "\n Open the all Account History please!");
         }
         
         It2++;
         
         if(It2 >= TryWait)
         {
            Print("!!! End waiting -  Account History.");
            return(false); 
         }         

         Sleep(100);
      } // while(!IsStopped() )
      
      if(It2 > 0)
      {
         Alert("Ok. All Account History ");
      }      
   }
 
Olena Zelenska:

А у меня вот такая проверка есть, делюсь...


В принципе, идея интересная, но если первой в истории идет не балансовая операция, то не сработает. Такое часто бывает, когда брокеры удаляют старую историю. К примеру, у меня сейчас история счета начинается со сделки sell от 04.09.2017 (брокер хранит только три месяца истории). 

К сожалению, в МТ4 нет программного способа определения наличия всей доступной истории счета.

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