Скачать MetaTrader 5

Несколько переменных или массив в одной строке окна inputs

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
На MQL5.community есть возможность хранить исходные коды в MQL5 Storage. Попробуй сам!
Syzal
42
Syzal 2014.11.09 06:55 

Не бейте сильно ногами, это моя первая программа на mql4 (вернее ее модернизация).

В каком-то коммерческом индикаторе видел возможность ввода  валютных пар в в формате: "EURUSD AUDUSD EURJPY... ну и т.д" в окне inputs.

Выводит на экран индикатор только для пар, прописанных в переменной (или массиве).

У меня немного другая задача, нужно ввести int данные, и в зависимости от их значений и количества выводить в окне рассчитанную информацию. 

Как это можно реализовать? 

Syzal
42
Syzal 2014.11.09 06:56  
Пока писал, осенило... можно (наверно) через строковые функции реализовать... поиск пробела, запись массива и т.п.
Syzal
42
Syzal 2014.11.09 07:03  

Тогда есть еще пара вопросов... нужно реализовать запись имен в цикле

#property strict
#property script_show_inputs
...
for(int i=0, j=Coordinata_Y; i <= Kol_SL; i++, j=j+15)
{
   if(ObjectFind("Obj_Name_"+IntegerToString(i)==-1))                                 // Если объекта нет..
   {
      ObjectCreate("Obj_Name_"+IntegerToString(i),OBJ_LABEL,0,0,0);                     // Создаём новый объект 
      ObjectSet    ("Obj_Name_"+IntegerToString(i),OBJPROP_CORNER, Corner);              // Угол привязки            
      ObjectSet    ("Obj_Name_"+IntegerToString(i),OBJPROP_XDISTANCE, Coordinata_X);     // Координата Х
      ObjectSet    ("Obj_Name_"+IntegerToString(i),OBJPROP_YDISTANCE,Coordinata_Y+15);  // Координата Y
   }
}

 Компилятор выдает "implicit conversion from 'number' to 'string'"

Что я делаю не так? 

Yurij Kozhevnikov
4779
Yurij Kozhevnikov 2014.11.09 07:46  
Syzal:
Пока писал, осенило... можно (наверно) через строковые функции реализовать... поиск пробела, запись массива и т.п.

Это удобнее всего реализовать с помощью функции StringSplit.

Yurij Kozhevnikov
4779
Yurij Kozhevnikov 2014.11.09 07:58  
   if(ObjectFind("Obj_Name_"+IntegerToString(i))==-1)                                 // Если объекта нет..

По-моему, здесь скобка не на месте.

Syzal
42
Syzal 2014.11.09 07:59  
Y.A.K._:

Это удобнее всего реализовать с помощью функции StringSplit.


ОК, посмотрю. У меня сейчас затык с созданием объектов в цикле =(
Alexey Viktorov
6921
Alexey Viktorov 2014.11.09 08:01  
Syzal:

Тогда есть еще пара вопросов... нужно реализовать запись имен в цикле

 Компилятор выдает "implicit conversion from 'number' to 'string'"

Что я делаю не так? 

Наверное будет лучше так

ObjectCreate("Obj_Name_"+(string)i,OBJ_LABEL,0,0,0);
Syzal
42
Syzal 2014.11.09 08:05  
AlexeyVik:

Наверное будет лучше так

Спасибо, попробую

Yurij Kozhevnikov
4779
Yurij Kozhevnikov 2014.11.09 08:11  

Вообще я не складываю строковые переменные, только StringConcatenate использую, вроде читал где-то, что это оптимальнее.

А насчёт скобок повторю рядом, так заметнее будет (внимательность развивать надо):

   if(ObjectFind("Obj_Name_"+IntegerToString(i)==-1))                                 // Если объекта нет..
   if(ObjectFind("Obj_Name_"+IntegerToString(i))==-1)                                 // Если объекта нет..
Syzal
42
Syzal 2014.11.09 08:15  
AlexeyVik:

Наверное будет лучше так

Будете смеяться наверно... 

implicit conversion from 'number' to 'string'
Syzal
42
Syzal 2014.11.09 08:18  
Y.A.K._:

Вообще я не складываю строковые переменные, только StringConcatenate использую, вроде читал где-то, что это оптимальнее.

А насчёт скобок повторю рядом, так заметнее будет (внимательность развивать надо):

ОК, спасибо... я правда могу искать пару скобки полдня и не найти =)
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий