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

 
Slava:

1. при простом запросе данных типа CopyRates

2. при создании хэндла индикатора на соответствующем символе-периоде

Спасибо.

 
Artyom Trishkin:

А MQL_MEMORY_USED не подходит?

Странные значения показывает.

 
fxsaber:

Странные значения показывает.

Ну это нужно показывать разработчикам - код и странности.
Я никогда не использовал, к сожалению.
 

Хорошо было бы настройки которые наоборот есть смысл оптимизировать тоже как то помечать, например oinput, в оптимизаторе такая настройка имела бы жирный шрифт или зеленый, мы как разработчики могли бы так сказать юзеру что настройку можно/имеет смысл оптимизировать, или настройка имеет большое влияние на результат работы оптимизации эксперта.

Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
fxsaber:

Странные значения показывает.

Если 6Тб, то все норм. Именно такой размер адрессного пространства процесса и есть в win64
 

Уважаемые разработчики!

На ФОРТС функция OrderCalcMargin(), при подсчете маржи рыночного ордера

выдает не правильное значение.

//+------------------------------------------------------------------+
//|                                                   CheckMoney.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    double real_go;
    double price = SymbolInfoDouble(Symbol(), SYMBOL_BID);
    bool result = OrderCalcMargin(ORDER_TYPE_SELL, Symbol(), 1, price, real_go);
    if(result == true)
    {
      Print("ГО = ", DoubleToString(real_go));
    }
 //---
   return(INIT_SUCCEEDED);
  }

Результат

2020.03.04 23:21:09.664 CheckMoney (GOLD-3.20,M1)       ГО = 11258.89000000

Но если совершить сделку, то резервируется приблизительно как начальная маржа



Исправьте, пожалуйста.

 
Значит мной описанный баг не интересен разработчикам, ну ладно...
 
Баг МТ5 (build 2345) долго не мог понять почему профайлер запускается, отрабатывает, но результаты ни где не отображаются.
Оказывается, профайлер для проекта скрипта отображает результат только в случаи выключенной оптимизации, если оптимизация включена - все запустится, отработает, но без какого-либо результата.
[Удален]  
Sergey Dzyublik:
Баг МТ5 (build 2345) долго не мог понять почему профайлер запускается, отрабатывает, но результаты ни где не отображаются.
Оказывается, профайлер для проекта скрипта отображает результат только в случаи выключенной оптимизации, если оптимизация включена - все запустится, отработает, но без какого-либо результата.

Профайлер отрабатывает не для всех индикаторов (без оптимизации). Дважды написал об этом на форуме, скинул в ЛС разработчикам код - нет ответа.

 
Поработал с профайлером в МТ5 (build 2345),
грубо говоря, интересовало почему два алгоритма, дающих в конечном итоге один и тот же результат, выполняются с разной скоростью, просадка в 1.7 раза в режиме оптимизации.

#include <stl_vector.mqh>

// TickCounts: 850
vector<int>::move test_vector_move_return_assign_by_index(int n){
   vector<int> v(n);
   for(int i = 0; i < n; i++){
      v[i].UNREF  = i;
   }
   return v;
};

// TickCounts: 1450
vector<int>::move test_vector_move_return_push_back(int n){
   vector<int> v;
   // lazy implementation  
   v.reserve(n);                      
   for(int i = 0; i < n; i++){
      v.push_back(i);
   }
   return v;
};


void OnStart()
{
   for(int i = 0; i < 20000; i++){
       vector<int> v_int_move = test_vector_move_return_assign_by_index(1000);
   }
   
   for(int i = 0; i < 20000; i++){
      vector<int> v_int_move = test_vector_move_return_push_back(1000);
   }
}


В результате был получен практический опыт работы с профайлером МТ5 и обнаружено ряд дефектов в его работе.
Так как не понятно, интересует ли разработчиков эта информация, а тратить часы собственно времени для локализации багов ни какого желания нет, то будет предоставлена лишь краткая информация по обнаруженным проблемам:

1) Нет возможности сравнивать скорости разных алгоритмов.
Так алгоритм, который в три раза быстрее остальных, как с включенной оптимизацией так и без, в профайлере может оказаться самым медленным.
Видимо идет какой-то оверхед со стороны профайлера, который влияет на время выполнение алгоритмов, в данном случаи сравнивать скорости выполнения алгоритмов в профайлере не имеет ни какого смысла.

2) Некорректное значение Count в сплывающих подсказках гистограмм на экране.
Профайлер пишет, что функция запускалась 80К раз, а не 20К как ожидалось, аналогично внутри функции для разных строк идет превышение Count в разы, для одних строк в три раза, для других в два.

3) Некорректное значение Time в сплывающих подсказках гистограмм на экране.
Имеются случаи, когда профайлер показывает, что алгоритм заходил в условие 99.90% раз по времени, а в действительности оказывается, что только один раз из 20К проходов.