Скачать MetaTrader 5

Нужна помощь. Изучаю MQL возникают вопросы. - страница 3

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сергей
247
Сергей  
Я понимаю, что нужно сортировать, а как принципиально это сделать? Мне одну маленькую подсказку дайте.
Комбинатор
16173
Комбинатор  

Берете двумерный массив.

В первую размерность кладете правое(большее) время линии. (только нужных объектов ессно)

Во вторую имя объекта (только нужных объектов ессно)

Делаете ArraySort по убыванию.

Первые N элементов не трогаем, остальные удаляем.

Как-то так.

Сергей
247
Сергей  
Т.е. все таки массив. А я думал, что с массивом зря заморочился. Спос большой! Буду пробовать.
Сергей
247
Сергей  

Доброго всем дня!

Два дня изысканий. Освоил работу со строками и улучшил навыки работы с массивами.

К сожалению на сколько я успел понять (касательно последнего поста TheXpert) сортировка массива содержащего строковые данные функционалом МКЛ невозможна.

ArraySetAsSeries тоже не дал результата. В последний момент решил вообще уйти от работы с массивами, переписать функцию с 0 и сделать это поэтапно.

Попутно упростил ее код до невозможности. Заработало. В приведенном ниже варианте. Но не совсем.

Верхние линии удаляются с появлением новых, нижние линии удаляются сразу без отрисовки на графике же. Из-за чего?

//------ функция удаляющая ненужные линии

void dellline(string name_line_up, string name_line_down) 
{
string name_l;
int obj=ObjectsTotal(OBJ_TREND); // --- в этой версии интуитивно добавил свойство OBJ_TREND
for (int i=obj; i>=3 (//--- количество оставляемых линий на графике); i--)
{
name_l=ObjectName(i);
if(StringFind(name_l,name_line_up)!=-1)ObjectDelete(name_l);
if(StringFind(name_l,name_line_down)!=-1)ObjectDelete(name_l);
}}

Тут возникает дополнительный вопрос, почему функция не работала как нужно без добавления

OBJ_TREND, на мой взгляд она не несет в данном случае координальных изменений?

Далее было несколько экспериментов с именами линий в основном коде.

//-------------- первый вариант (рабочий)

string up_line = "upline_", down_line = "downline_";
 
     flatlineup(up_line+TimeToStr(Time[i]), y2,x2,y22,x2,Red,1);
     flatlinedown(down_line+TimeToStr(Time[i]), y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);

TimeToStr(Time[i]) указывал в имени тренд лайн в теле функции.

//--------------- второй вариант (нерабочий)

string up_line = "upline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()
string down_line = "downline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2,Red,1);
     flatlinedown(down_line, y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);

TimeToStr(Time[i]) указывал в переменной в основном коде.

Вопрос. Почему второй вариант оказался не рабочим (имеется ввиду то, что функция

dellline() в применении ко второму варианту не удаляла линии с именами присвоенными

переменным up_line и down_line?


И последний вопрос продублирую с предыдущего поста, он на скрине. Ответа на него найти не смог.

СПАСИБО!

Сергей
247
Сергей  

Коллеги программисты, отзовитесь!

Роман
7939
Роман  
Fox_RM:

Коллеги программисты, отзовитесь!


Нас здесь тысячи и все изучают..."Нужна помощь. Изучаю MQL возникают вопросы." Представьте, что будет с форумом, если каждый из нас создаст подобную для себя ветку... Где окажутся достойные к рассмотрению темы? ...

Бомбите свои ворпросы сюда (в специализированную ветку форума) - она для этого и создавалась, чтобы не забивать форум всяким индивидуальным "шлаком" - люди сориентируются и подскажут гораздо быстрее, ИМХО.

Victor Nikolaev
Модератор
14953
Victor Nikolaev  
Fox_RM:
!!!!

Может вместо поднятия ветки попробуете сформулировать свои вопросы на человеческом языке. Ну не все же код смотрят
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий