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

 

Приветствую!

 

Оптимизатор МТ5 - правильно считает CustomMax?

Гоняю тут оптимизатор (генетич. оптимизация) в MT5 5.00 build 722 и случайно обратил внимание, что результаты оптимизации вычисляются как-то неожиданно.

В эксперте OnTester() возвращает:

Profit * Trades * (1/(MaxEquityDDPercent+1)) * RecoveryFactor

где:

   double Profit = TesterStatistics(STAT_PROFIT);

   double Trades = TesterStatistics(STAT_TRADES);

   double MaxEquityDDPercent = TesterStatistics(STAT_EQUITY_DDREL_PERCENT);

   double RecoveryFactor = MathAbs(TesterStatistics(STAT_RECOVERY_FACTOR));

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


Это я чего-то не так понимаю? 

Файлы:
 
MetaDriver:

Ну давайте подвигаем:

Но боюсь вам не понравится.  Мне, например, не нравится - чарт дёргается и двоит.  А хотел как лучше - плавно сдвинуть к нужному месту..

// Что интересно, с ChartRedraw() работает вдвое быстрее чем без. При этом дёргается больше.

Проблема с функцией ChartNavigate() до сих пор есть. Это будет исправлено когда-нибудь? Или это не считается багом?

В Сервисдеске сообщения уже есть по этой теме? Или добавить ещё? ))

 

Ошибка выполнения: Stack overflow

class A {
        static  bool OrderSend( const MqlTradeRequest& request, MqlTradeResult& result, bool async_mode = false )
	void function();
};
void A::function()
{...
	OrderSend(...) // ошибка выполнения возникает здесь
	A::OrderSend(...) // не помогает
...}

Если заменить OrderSend на любое другое имя - всё нормально

наличие static на ошибку не влияет

обращение A::OrderSend() - на ошибку - не влияет

 
A100:

Ошибка исполнения Stack overflow

Если заменить OrderSend на любое другое имя - всё нормально


потому что надо контекст разрешать

::OrderSend

 

я думаю, что вызываю не ::OrderSend, а  A::OrderSend() 

должно работать 

 
A100:

я думаю, что вызываю не ::OrderSend, а  A::OrderSend() 

это вы думаете над какой строкой?

то что у вас просто

void A::function()
{...
	OrderSend(...) // ошибка выполнения возникает здесь
вызывается именно ваша A::OrderSend
Если хотите вызвать терминальную, то делайте :: перед Ordersend
 
Спасибо, нашел причину - вопрос снимаю - сам зациклил
 
A100:
Спасибо, нашел причину - вопрос снимаю - сам зациклил

так понял вы в своей Ordersend вызывали себя же без ::

я на таком попался помню сразу, когда в классе Print и Comment переопределил.  теперь блюду постоянно :)

 
sergeev:

так понял вы в своей Ordersend вызывали себя же без ::

Ну да, хотя у А::OrderSend 3(три) параметра, но последний - по умолчанию и компилятор не смог (и не должен был) отличить от ::OrderSend по количеству параметров
 
Подскажите пожалуйста как создать опрос на форуме?
Причина обращения: