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

 
paladin800:
GMT.
TimeGMT();
 
artmedia70:
TimeGMT();
Да, я на эту функцию тоже наткнулся. Не могу сообразить как во внешних параметрах одну переменную сделать как 4AM а вторую как 5PM и потом просто результат TimeGMT() сравнивать с ними.
 
papaklass:

Почему у меня в профиле указано 4-ре опубликованных кодов в CodeBase:

А если я захожу в CodeBase через меню и выбираю пункт "Мои коды", то у меня опубликовано 7-мь кодов:

В чем фишка?

Расчет действительно разный. В достижениях пользователя не учитываются публикации, импортированные с mql4.com, таких у вас 3 штуки.

Учитываются только публикации, изначально размещенные на mql5.com - таких 4 штуки = три для MT5 + один для MT4.

 

Думаю каждый заметил, что чтобы залогиниться тут на свой аккаунт не обязательно нужно соблюдать регистр букв своего логина. Вот когда я тут сейчас пишу вы видите мой логин написанный маленькими буквами с цифрами. Если при залогировании я напишу все буквы большими или по очереди большая-маленькая, то я всё равно залогинюсь. Ок, это ни как не напрагает.

В своём МЕ5 создал проект, к которому надо подключить другого участника и неудобство в том, что когда в окне добавления пользователя пишу логин соратника, то появляется сообщение что нет такого. Спросил в СервисДеске, сказали что надо соблюсти регистр букв. Т.е. тут при логировании регистр не важен, а при добавлении в МЕ5 проект важен. Если уж тут регистр не важет, то сделайте так чтоб и при проектах тоже не был важен.
 
zhserg:

Подскажите что у меня не так, хотя бы примерно. Может из-за  WinXP?

Проверили в WinXP - ваш код работает.

А в списке объектов на чарте ваш объект появляется?

 
Публикую свою заявку в сервис деск здесь, дабы ускорить ее рассмотрение. (Уже неделю висит а ответа нет).  ОткрытаНачата: 2015.03.03 10:49#1169959

Версия и битность терминала

MetaTrader 5, build 1085

Описание проблемы

Степенная зависимость времени перебора ордеров или сделок от их количества. Очевидно, что время работы функций HistoryOrderGetDouble,  HistoryOrderGetInteger, HistoryDealGetInteger, HistoryDealGetDouble вызыванных для каждого ордера в истории должно линейно увеличиваться с увеличением количества обрабатанных ими ордеров:

общее время выполнения = время выполнения запроса для одного ордера * количество ордеров;

В реальности этого не происходит. Вместо этого была выявленная степенная зависимость рода кол-во миллисекунд = 0,000005*n^2 где n - количество ордеров для обработки.

 

Последовательность действий

Данный скрипт показывает существующую проблему:

//+------------------------------------------------------------------+
//|                                             TestSpeedHistory.mq5 |
//|                                 Copyright 2015, Vasiliy Sokolov. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
//---
   HistorySelect(0, TimeCurrent()+100);
   for(int end_order_index = 1000; end_order_index < HistoryOrdersTotal(); end_order_index+=1000)
   {
      uint tiks_begin = GetTickCount();
      TestProgression(end_order_index);
      uint tiks = GetTickCount() - tiks_begin;
      printf("Parsing " + (string)end_order_index + " for " + (string)tiks + " msc.");   
   }
}

void TestProgression(int end_order_index)
{
   for(int i = 0; i < end_order_index; i++)
   {
      ulong id = HistoryOrderGetTicket(i);
      string symbol = HistoryOrderGetString(id, ORDER_SYMBOL);
      double priceSetup = HistoryOrderGetDouble(id, ORDER_PRICE_OPEN);
      double volumeSetup = HistoryOrderGetDouble(id, ORDER_VOLUME_INITIAL);
      long tSetup = HistoryOrderGetInteger(id, ORDER_TIME_SETUP_MSC);
      string comment = HistoryOrderGetString(id, ORDER_COMMENT);
      ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(id, ORDER_TYPE);
      ENUM_ORDER_STATE state = (ENUM_ORDER_STATE)HistoryOrderGetInteger(id, ORDER_STATE);
      ulong magic = HistoryOrderGetInteger(id, ORDER_MAGIC);
      HistoryDealGetInteger
   }
}
//+------------------------------------------------------------------+

Полученный результат

Кажется очевидным, что время выполнения для этого скрипта должно увеличиваться линейно, с увеличением end_order_index. Так если в TestRegression обработка 1000 ордеров занимает 16 миллисекунд, то обработка 2 000 ордеров должна занимать 16 * 2 = 32 мсек. Однако этого не происходит. Вместо этого зависимость степенная. Скрипт выводит следующее сообщение:

2015.03.03 12:14:29.385 TestSpeedHistory (USDCHF,D1)    Parsing 22000 for 4025 msc.
2015.03.03 12:14:25.354 TestSpeedHistory (USDCHF,D1)    Parsing 21000 for 3666 msc.
2015.03.03 12:14:21.689 TestSpeedHistory (USDCHF,D1)    Parsing 20000 for 3323 msc.
2015.03.03 12:14:18.358 TestSpeedHistory (USDCHF,D1)    Parsing 19000 for 2995 msc.
2015.03.03 12:14:15.365 TestSpeedHistory (USDCHF,D1)    Parsing 18000 for 2715 msc.
2015.03.03 12:14:12.658 TestSpeedHistory (USDCHF,D1)    Parsing 17000 for 2418 msc.
2015.03.03 12:14:10.243 TestSpeedHistory (USDCHF,D1)    Parsing 16000 for 2106 msc.
2015.03.03 12:14:08.134 TestSpeedHistory (USDCHF,D1)    Parsing 15000 for 1872 msc.
2015.03.03 12:14:06.266 TestSpeedHistory (USDCHF,D1)    Parsing 14000 for 1622 msc.
2015.03.03 12:14:04.645 TestSpeedHistory (USDCHF,D1)    Parsing 13000 for 1388 msc.
2015.03.03 12:14:03.244 TestSpeedHistory (USDCHF,D1)    Parsing 12000 for 1170 msc.
2015.03.03 12:14:02.074 TestSpeedHistory (USDCHF,D1)    Parsing 11000 for 983 msc.
2015.03.03 12:14:01.097 TestSpeedHistory (USDCHF,D1)    Parsing 10000 for 796 msc.
2015.03.03 12:14:00.295 TestSpeedHistory (USDCHF,D1)    Parsing 9000 for 639 msc.
2015.03.03 12:13:59.657 TestSpeedHistory (USDCHF,D1)    Parsing 8000 for 500 msc.
2015.03.03 12:13:59.164 TestSpeedHistory (USDCHF,D1)    Parsing 7000 for 358 msc.
2015.03.03 12:13:58.796 TestSpeedHistory (USDCHF,D1)    Parsing 6000 for 266 msc.
2015.03.03 12:13:58.537 TestSpeedHistory (USDCHF,D1)    Parsing 5000 for 171 msc.
2015.03.03 12:13:58.369 TestSpeedHistory (USDCHF,D1)    Parsing 4000 for 94 msc.
2015.03.03 12:13:58.277 TestSpeedHistory (USDCHF,D1)    Parsing 3000 for 47 msc.
2015.03.03 12:13:58.229 TestSpeedHistory (USDCHF,D1)    Parsing 2000 for 15 msc.
2015.03.03 12:13:58.208 TestSpeedHistory (USDCHF,D1)    Parsing 1000 for 16 msc.


Функция зависимости времени обработки от количества ордеров:

 

Ожидаемый результат

Ожидается что данная операция должна занимать O(n) времени, в то время как она занимает O(n^2).

Дополнительные сведения

Что бы убедиться в работоспособности скрипта необходимо запустить его на счету с большим количеством сделок и ордеров.

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

Важно: по моим наблюдениям эта неприятная зависимость появилась в MetaTrader 5 где-то в начале лета 2014 года. До этого времени все работало быстро.

 
Дня доброго ! Надеюсь, вопрос в правильном разделе размещаю. Пробовал тестировать МТ5 под Wine и использовать не получается. При старте Wine показывает ошибку, хотя приложение работает. Так же непонятно,куда складывать сертификаты. Пробовал и установкой и простым копирование приложения, ошибка та же. На всякий даже звуки отключил,не помогло. Может,где-нибудь можно скачать стабильную однозначно работающую под линуксом,версию?
 
polik:
Дня доброго ! Надеюсь, вопрос в правильном разделе размещаю. Пробовал тестировать МТ5 под Wine и использовать не получается. При старте Wine показывает ошибку, хотя приложение работает. Так же непонятно,куда складывать сертификаты. Пробовал и установкой и простым копирование приложения, ошибка та же. На всякий даже звуки отключил,не помогло. Может,где-нибудь можно скачать стабильную однозначно работающую под линуксом,версию?

Добрый день,

Что за ошибка? Какая система стоит? Версия Wine?

 
C-4:
Публикую свою заявку в сервис деск здесь, дабы ускорить ее рассмотрение. (Уже неделю висит а ответа нет).  ОткрытаНачата: 2015.03.03 10:49#1169959

Версия и битность терминала

MetaTrader 5, build 1085

Описание проблемы

Степенная зависимость времени перебора ордеров или сделок от их количества. Очевидно, что время работы функций HistoryOrderGetDouble,  HistoryOrderGetInteger, HistoryDealGetInteger, HistoryDealGetDouble вызыванных для каждого ордера в истории должно линейно увеличиваться с увеличением количества обрабатанных ими ордеров:

общее время выполнения = время выполнения запроса для одного ордера * количество ордеров;

В реальности этого не происходит. Вместо этого была выявленная степенная зависимость рода кол-во миллисекунд = 0,000005*n^2 где n - количество ордеров для обработки. 

Подобная картина происходит и при расчете большого количества индикаторов. Всё резко началось с версии 1079.
У меня одновременно открыто 8 ТФ, на каждом по 10 индикаторов. Работать невозможно.

 

у кого в реале такое бывает.....

таймы постоянно зависают мт4