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

 
fxsaber:

ЗЫ Добавьте в Визуализатор Тестера миллисекунды, пожалуйста!

Добавим

 

Ошибка при выполнении

struct A {
template<typename T>
        void Print(   T t ) { ::Print( 2 ); }
        ~A() { Print( 1 ); }
};
void OnStart() { A a; }

Результат  : 1

Ожидалось: 2

 
A100:

Ожидалось: void A::Print<int>(int):1

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

namespace для Print, Comment, Alert, iCustom, ... - нечто особенное, похоже.

 
fxsaber:

Скорее всего, связано с хитрожопностью штатной Print.

Не связано

void Print2( int )           { Print( 1 ); }
struct A {
template<typename T>
        void Print2(   T t ) { Print( 2 ); }
        ~A() { Print2( 1 ); }
};
void OnStart() { A a; }

Результат тот же

 

SymbolInfoTick для кастомных символов выдает пустой тик (когда не было сделано ни одного CustomTicksAdd), даже когда есть тики в Истории.

Предлагаю на стороне Терминала после любого CustomTicksReplace последний тик (или только его время) Истории делать SymbolInfoTick.


Прошу разработчиков высказать свое мнение по этому поводу, на кого данное действие логично вешать - Терминал или юзера?

Мне видится, что на Терминал, т.к. это избавит Юзера от редко-уловимых багов в его коде (поймал такой).

Сейчас, например, последнее время символа приходится находить таким образом

  ulong GetOriginalLastTime( void ) const
  {
    MqlTick Tick[1] = {0};

    ::SymbolInfoTick(this.Symb, Tick[0]);
    
    if (!Tick[0].time_msc)
      ::CopyTicks(this.Symb, Tick, COPY_TICKS_ALL, 0, 1);

    return(Tick[0].time_msc);
  }
 
A100:

Не связано

Результат тот же

Да, баг. Никогда не сталкивался с ним, т.к. к методам всегда приписываю this.

 

мне кажется беда с подгрузкой истории. 

вчера ждал минут 30, потом сменил счет, сегодня решил перепроверить:


  1. Открываю рублевый счет RUR
  2. в тестере запускают тест на паре EURUSD 
  3. терминал пытается подгрузить котировки EURRUR
  4. Котировок нет, тестер завис



чего то помучался, потом опять решил скачать историю, которой нет

2018.02.21 15:58:48.244 Tester  EURRUR: history data begins from 2018.02.21 00:00
2018.02.21 15:58:48.344 Tester  USDRUR: preliminary downloading of M1 history started
2018.02.21 15:58:49.244 Tester  USDRUR: 20% history downloaded
2018.02.21 15:58:49.544 Tester  USDRUR: 30% history downloaded
2018.02.21 15:58:49.844 Tester  USDRUR: 40% history downloaded
2018.02.21 15:58:50.144 Tester  USDRUR: 51% history downloaded
2018.02.21 15:58:50.444 Tester  USDRUR: 61% history downloaded
2018.02.21 15:58:50.657 Tester  USDRUR: 71% history downloaded
2018.02.21 15:58:51.057 Tester  USDRUR: 81% history downloaded
2018.02.21 15:58:51.357 Tester  USDRUR: 91% history downloaded
2018.02.21 15:58:51.657 Tester  USDRUR: preliminary downloading of M1 history completed in 0:03.417
2018.02.21 15:58:51.657 Tester  USDRUR: history data begins from 2016.12.26 00:00
2018.02.21 15:58:51.661 Core 1  agent process started
2018.02.21 15:58:52.095 Core 1  connecting to 127.0.0.1:3000
2018.02.21 15:58:52.095 Core 1  connected
2018.02.21 15:58:52.103 Core 1  authorized (agent build 1755)
2018.02.21 15:58:52.105 Tester  EURUSD,H1 (Alpari-MT5-Demo): testing of Experts\Exp - TickSniper PRO FULL v36 20180220.ex5 from 2018.01.01 00:00 to 2018.02.10 00:00
2018.02.21 15:58:52.891 Core 1  common synchronization completed
2018.02.21 15:58:53.064 Tester  quality of analyzed history is 100%
2018.02.21 15:58:54.393 Core 1  EURRUR: history synchronization started



на USDJPY все нормально

 

Получается глупая ситуация с барами кастомных символов. Записать в историю (CustomRatesReplace) могу сколько угодно баров, а прочитать их (CopyRates) тут же - нет (TERMINAL_MAXBARS).

Надо как-то решать эту неправильную ситуацию. Отлично видно начало локальной Истории через

SeriesInfoInteger(_Symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE);

Но добраться до нее

Может, дать возможно менять TERMINAL_MAXBARS через MQL? Или сделать перегрузку CopyRates без ограничения MaxBars?

 

Давно отметил такое поведение MT5, но сейчас решил написать.

Работаю в ME и MT5+тестер. Иногда не подключиться к Агенту и требуется перезагрузка Терминала. К этому багу привык, поэтому речь не о нем.

Итак, закрываю Терминал, а в ME жму F4 - открыть Терминал. И вот здесь начинается какая-то ерунда.

ME несколько раз погружается в состояние "Не отвечает". Терминал не запускается. Через несколько секунд жму повторно F4 - реакция, как и до этого.

По итогу секунд через 20 (минимум) на не слабой машине (куча памяти, SSD, 95% CPU свободно) Терминал все же запускается.

Если сравнивать с MT4 - небо и земля. MT4 почти мгновенно запускается по F4 из ME. MT5 - как какое-то супер-сырое приложение стартует.

 
fxsaber:

Получается глупая ситуация с барами кастомных символов. Записать в историю (CustomRatesReplace) могу сколько угодно баров, а прочитать их (CopyRates) тут же - нет (TERMINAL_MAXBARS).

Надо как-то решать эту неправильную ситуацию. Отлично видно начало локальной Истории через

Но добраться до нее

Может, дать возможно менять TERMINAL_MAXBARS через MQL? Или сделать перегрузку CopyRates без ограничения MaxBars?

В СД считают, что нет проблемы в том, когда нельзя получить историю котировок дальше, чем MaxBars. Такой пример (один из МНОГИХ сценариев, где нужная история, которая уже ЕСТЬ на локальной машине)

Предполагается, что лимит выставлен для экономии ресурсов. И это правильно!

Представим себе Маркет-продукт, который призван рассчитать стат. данные эквити-линии.

Получается, что пользователь, перед тем, как применить этот продукт, вынужден будет делать UnlimitBars. А после применения - возвращать обратно.

не впечатлил. Костылище остается жить!