Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1240

 
Sayberix:

Подскажите, как в визуализаторе тестера стратегий убрать линии аск и бид:

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

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

 
Vladimir Karputov:

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

Спасибо! А это баг, или так и нужно - чтобы отображался бид и аск? )

 
Sayberix:

Спасибо! А это баг, или так и нужно - чтобы отображался бид и аск? )

Не используйте пожалуйста никогда слово "баг" - если не читаете справку.

 
Vladimir Karputov:

Не используйте пожалуйста никогда слово "баг" - если не читаете справку.

Я читаю. Просто еще туда наверное не дошел. Я думаю что не так просто осилить справку в 28 МБ пдф-го формата. Или другими словами - не все прихожане знают всю библию, хоть и свято веруют.

У меня другой вопрос, подскажите пожалуйста - если не трудно:

при выполнении кода в визуализаторе стратегий:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

ulong count, raschet = 1;
int OnInit()
  {
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   for(int i=1; i<=10; i++)
     {
      count = GetTickCount();
      raschet *=  i;
      Print("Счетчик i: ", i, " Raschet: ", IntegerToString(raschet)," Время выполнения цикла: ", IntegerToString(GetTickCount() - count));
     }
    return;
  }
//+------------------------------------------------------------------+

1. программа впадает в бесконечный цикл;

2. отличаются результаты выполнения:

без точек останова:

с точкой останова на Print:


Все делал на отладке исторических данных. На реальных нет возможности - сейчас выходные.

 
Sayberix:

Я читаю. Просто еще туда наверное не дошел. Я думаю что не так просто осилить справку в 28 МБ пдф-го формата. Или другими словами - не все прихожане знают всю библию, хоть и свято веруют.

У меня другой вопрос, подскажите пожалуйста - если не трудно:

при выполнении кода в визуализаторе стратегий:

1. программа впадает в бесконечный цикл;

2. отличаются результаты выполнения:

без точек останова:

с точкой останова на Print:


Все делал на отладке исторических данных.

Вы постоянно увеличиваете переменную. Как думаете: когда размер переменной выйдет за рамки её границ?

 
Vladimir Karputov:

Вы постоянно увеличиваете переменную. Как думаете: когда размер переменной выйдет за рамки её границ?

Я думаю что на 10 итераций улонга должно было хватить. Вопрос тогда:

1. почему не обрывается цикл? и

2. почему не отображаются результаты самого счетчика времени выполнения итерации?


Из-за того что отладка проходила на исторических данных?

 
Sayberix:

Я думаю что на 10 итераций улонга должно было хватить. Вопрос тогда:

1. почему не обрывается цикл? и

2. почему не отображаются результаты самого счетчика времени выполнения итерации?


Из-за отладки на исторических данных?

Переменная у Вас объявлена на глобальном программном уровне - Вы её постоянно увеличиваете.

 
А-а понял ... Итерация проходит меньше чем за милисекунду ...
 
Vladimir Karputov:

Переменная у Вас объявлена на глобальном программном уровне - Вы её постоянно увеличиваете.

Все-равно не понимаю, причем тут глобальная переменная. Сама то программа ограничивается циклом: "for(int i=1; i<=10; i++)" ?

Или я чего-то не понимаю, объясните пожалуйста.

 
Sayberix:

Все-равно не понимаю, причем тут глобальная переменная. Сама то программа ограничивается циклом: "for(int i=1; i<=10; i++)" ?

Или я чего-то не понимаю, объясните пожалуйста.

Уберите переменные

ulong count, raschet = 1;

из глобальной области видимости.


Вы на каждом тике многократно увеличиваете переменную raschet. И на следующем тике СНОВА ПРОДОЛЖАЕТЕ ЕЁ многократно увеличивать. Несколько тиков - и переменная raschet выходит за свои границы. В конце концов Вы делаете распечатку значений переменной, но почему то не смотрите в эту распечатку.