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

 

Добрый день.

Пара вопросов по тестеру в МТ5:

1) В МТ5 в режиме визуального тестирования эксперта все индикаторы, которые в коде эксперта рассчитываются через iCustom, сами наносятся на график. Это как-то отключается/настраивается?

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

 
satorifx:

Добрый день.

Пара вопросов по тестеру в МТ5:

1) В МТ5 в режиме визуального тестирования эксперта все индикаторы, которые в коде эксперта рассчитываются через iCustom, сами наносятся на график. Это как-то отключается/настраивается?


1. TesterHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Как различить события удаление графического объекта и переименование графического объекта. В обоих случаях генерируется событие удаления. Как отличить одно от другого?
 
leonerd:
Как различить события удаление графического объекта и переименование графического объекта. В обоих случаях генерируется событие удаления. Как отличить одно от другого?

Никак. Переименование это и есть, удаление и создание нового. Вот и пытайтесь отловить создание после удаления.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

Подскажите, что прописать, чтобы получать random 6-значные числа?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

Подскажите, что прописать, чтобы получать random 6-значные числа?

Нашёл такое решение

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

Нашёл такое решение

Виталий, это не лучший вариант.

Во первых в таком случае лучше использовать цикл do while

Во вторых, на мой взгляд, надёжней получить число больше 6ти знаков при возведении в степень, чем при умножении. Но в этом случае есть возможность получить INF. Но можно ограничить значение степени… В моём примере степень не больше 16.

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

И взять остаток от деления получив шестизначное число.

 
Alexey Viktorov:

Виталий, это не лучший вариант.

Во первых в таком случае лучше использовать цикл do while

Во вторых, на мой взгляд, надёжней получить число больше 6ти знаков при возведении в степень, чем при умножении. Но в этом случае есть возможность получить INF. Но можно ограничить значение степени… В моём примере степень не больше 16.

И взять остаток от деления получив шестизначное число.

Спасибо, заменил часть в коде.

 
Vitaly Muzichenko:

Спасибо, заменил часть в коде.

И что в результате получилось? Я ведь не претендую на непогрешимость…)))

Причина обращения: