Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1755

 
Andrey Sokolov #:

Приветствую. Подскажите, пожалста. Как в мт5  при инициализации или тике определить тестирование?

Пока нашел только OnTester(), которая вызывается непосредственно перед вызовом функции OnDeinit().

MQLInfoInteger (MQL_TESTER)

Как то так.

 
Nerd Trader #:
last_time = iTime(NULL, 0, 0);

  if(last_time > bar.time_open){
    bar.time_open = last_time;
    coint++;//стартовое значение -1
  }

Здесь явно что-то неверно!

 
Alekseu Fedotov  спасиб
 

Почему?

#property indicator_color1 clrIndianRed;
#property indicator_color2 clrMagenta;
#property indicator_color3 clrRed;

extern color Cl1 = clrIndianRed;
extern color Cl2 = clrMagenta;
extern color Cl3 = clrRed;

color sColor[] = {indicator_color1,indicator_color2,indicator_color3}; // Так нормально
color sColor[] = {Cl1,Cl2,Cl3}; // Так ошибки 'Cl1' - constant expression required 

---

Каким способ собрать со строк input/extern массив?

 
Vitaly Muzichenko #:

Почему?

---

Каким способ собрать со строк input/extern массив?

Заведи цвета как строку в input и потом раздели строку в массив.

Павить код под цвета не хочу сейчас, сам разберёшься. У меня перечень символов вот так переносится в массив

  string s_arr[]; // В этом массиве будет перечень нужных символов
  if(StringSplit(slist, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return;
   }

Это список в input переменной.

 
Vitaly Muzichenko #:

Почему?

---

Каким способ собрать со строк input/extern массив?

Согласен с Алексеем

extern string Colors = "clrIndianRed/clrMagenta/clrRed";
color sColor[];
//+------------------------------------------------------------------+
int OnInit()
  {
   ushort sep  = StringGetCharacter("/",0);
   string tempLevel[];
   int sz1  = StringSplit(Colors,sep,tempLevel);
   ArrayResize(sColor,sz1);
   for(int i=0; i<sz1; i++)
   {
    sColor[i] = StringToColor(tempLevel[i]);Print(i," / ",sColor[i]);
   }
//---
   return(INIT_SUCCEEDED);
  }
 
Alexey Viktorov #:

Заведи цвета как строку в input и потом раздели строку в массив.

Павить код под цвета не хочу сейчас, сам разберёшься. У меня перечень символов вот так переносится в массив

Это список в input переменной.

Этот способ знаю, но так не пойдёт - нет возможности выбрать со списка


 

Сейчас цвета вот так, это не удобно, и не могу найти причину, почему не могу сменить цвет, после применения параметры меняются на стандартные


 
Vitaly Muzichenko #:

Сейчас цвета вот так, это не удобно, и не могу найти причину, почему не могу сменить цвет, после применения параметры меняются на стандартные


Тогда так

extern color Cl1 = clrIndianRed;
extern color Cl2 = clrMagenta;
extern color Cl3 = clrRed;
string Colors = ColorToString(Cl1)+"/"+ColorToString(Cl2)+"/"+ColorToString(Cl3);
color sColor[];
//+------------------------------------------------------------------+
int OnInit()
  {
   ushort sep  = StringGetCharacter("/",0);
   string tempLevel[];
   int sz1  = StringSplit(Colors,sep,tempLevel);
   ArrayResize(sColor,sz1);
   for(int i=0; i<sz1; i++)
   {
    sColor[i] = StringToColor(tempLevel[i]);Print(i," / ",sColor[i]);
   }
//---
   return(INIT_SUCCEEDED);
  }
 
MakarFX #:

Тогда так

Отлично, то что нужно!

Спасибо!

P.S. Нашёл причину, почему не сохранялись параметры, стояли точки с запятой в конце, попали при копировании с input - убрал и всё заработало. Невнимательность. 


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