Форум » Синтаксис языка » Поиск объектов .... » Ответить

Поиск объектов ....

voldemar227: Привет ! вопрос в следующем как программно найти объект на графике или скопированный с другого объекта ... То есть есть линия или фигура , через контр + мышь сделал параллельную копию ... Как найти этот объект или узнать его имя ???

Ответов - 27, стр: 1 2 3 All

voldemar227: Ок спасибо за оперативность !

voldemar227: for(int oo=1;oo <= Mas_old[0][0]; oo++) { for (int ii=1;i <= Mas_tek[0][0];ii++) { if (Mas_tek[ii][1] == Mas_old[oo][1]) { Print("profit totge"); } if (Mas_tek[ii][2] == Mas_old[oo][2]) { Print("stop totge"); } } } массивы типа string но почему то компилятор пишет что не верны сравниваемые типы

voldemar227: Scriptong пишет: а удаленный объект вычеркивается из массива отслеживаемых объектов. Вот тут тоже проблема ... Линия удалена но функция comment(); пишет что в ячейке имя осталось .... Я пробовал делать что если обьектфинд не находит линию то перезаписывать ячейку пустотой "" , но тоже результата не дало ...


Scriptong: voldemar227 пишет: массивы типа string но почему то компилятор пишет что не верны сравниваемые типы Массивы Mas_tek и Mas_old объявлены как string? Тогда ничего удивительного нет: компилятор правильно указывает на тот факт, что значение переменной типа int (переменная цикла) не может сравниваться со значением строковой переменной. voldemar227 пишет: Вот тут тоже проблема ... Линия удалена но функция comment(); пишет что в ячейке имя осталось .... Я пробовал делать что если обьектфинд не находит линию то перезаписывать ячейку пустотой "" , но тоже результата не дало ... Нужно смотреть весь код, как составлен алгоритм, как происходит запись данных и их сравнение между собой.

voldemar227: string ordertiket=""; //---------------------------------------------------------------------------// string Mas_tek[31][3],Mas_old [31][3]; //---------------------------------------------------------------------------// int start() { while(!IsStopped()) { string name; //---------------------------------------------------------------------------// ArrayCopy(Mas_tek, Mas_old);//сохраняем историю int Kol=0; //колличество ордеров ArrayInitialize(Mas_tek,0); //обнуляем массив //---------------------------------------------------------------------------// for (int i=0; i<OrdersTotal(); i++) { if((OrderSelect(i, SELECT_BY_POS)==true) && (OrderSymbol()==Symbol())) {ordertiket=DoubleToStr(OrderTicket(),0); Kol++; //----------------------------------------------------------------------------------------------// if (ObjectFind(ordertiket)==-1) { ObjectCreate (ordertiket,OBJ_HLINE,0,0,OrderOpenPrice()); ObjectSetText(ordertiket,ordertiket); } if (OrderType()==OP_BUY) { for (int x=0;x<=ObjectsTotal()-1;x++) { name=ObjectName(x); if (ObjectType(name)== OBJ_HLINE) { if (ObjectFind(name)==0&&name==ordertiket) { Mas_tek[Kol][1] = ordertiket; //по открытию } if (ObjectDescription(name)==ordertiket&&OrderOpenPrice()<ObjectGet(name,OBJPROP_PRICE1)&&ObjectGet(name,OBJPROP_PRICE1)>0) { Mas_tek[Kol][2] =name; //по профиту } if (ObjectDescription(name)==ordertiket&&OrderOpenPrice()>ObjectGet(name,OBJPROP_PRICE1)&&ObjectGet(name,OBJPROP_PRICE1)>0) { Mas_tek[Kol][3] =name; //по стопу } } } } //----------------------------------------------------------------------------------------------// } } /* for(int oo=1;oo <= StrToInteger(Mas_old[0][0]); oo++) { for (int ii=1;i <= StrToInteger(Mas_tek[0][0]);ii++) { if (Mas_tek[ii][1] == Mas_old[oo][1]) { Print("profit totge"); } else { Mas_tek[ii][1] = "нет линии";} if (Mas_tek[ii][2] == Mas_old[oo][2]) { Print("stop totge"); } else{Mas_tek[ii][2] = "нет линии";} } } */ Comment( " Цена открытия = ",Mas_tek[1][1], "\n"," Цена профита = ",Mas_tek[1][2], "\n"," Цена стопа = ",Mas_tek[1][3], "\n"," Тикет = ",ordertiket, "\n"," Обьекты = ",x); Sleep(50); } } //+------------------------------------------------------------------+ Это весь код

SK: На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу?

Scriptong: voldemar227 пишет: Это весь код Слишком вольное программирование: 1. Какой смысл копировать один массив в другой, если массив, в который производилось копирование, очищается практически в следующей строке кода после копирования? 2. Функция ArrayInitialize не может применена к строковому массиву. Уточните этот момент в справке. Там явно указано, что массив должен быть числовой. 3. Массив Mas_tek во втором измерении содержит три элемента, но в коде используется четвертый элемент, что недопустимо (индекс последнего элемента в таких массивах - 2): Mas_tek[Kol][3] =name; //по стопу 4. Что подразумевалось получить в конструкции такого типа, если в этом элементе массива ничего не записано? StrToInteger(Mas_old[0][0])

voldemar227: Scriptong пишет: 4. Что подразумевалось получить в конструкции такого типа, если в этом элементе массива ничего не записано?  цитата: StrToInteger(Mas_old[0][0]) Я хотел запустить цикл для сравнения старого массива и нового У меня цель сделать модернизацию ордеров как в аг 4 установление линий тейк профита и модернизация и удаление по линиям с массивами раньше не работал по этому представление имею слабое

voldemar227: SK пишет: На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу? У меня есть сайт (с вашим он не сравница так как мой сайт слабоват ) на котором я выкладываю советников по партнерской программе ... Дополнительный пассивный доход... По мимо торгов на форексе , нет такой психологической нагрузки когда понимаешь что яйца лежат по разным карманам ... И есть программка тестер trading-go называется посмотреть можно тут http://trading-go.ru/index.php которая как и афтограф 4 выставляет ордера с графика .... Но модернизация ордеров в ней очень плохо построена ... Я не хочу нагружать программу разными фишками и возможностями .... программа останется такой какая она сейчас есть . Я хочу переработать модернизацию ордеров .... и ни чего больше ... Вы оказали большую помощь мне не только по поводу данной проблемы но и по поводу других моих вопросов .... В знак благодарности я сделаю ссылку на ваш сайт с выражением оной . И также создам пост посвященный аг4 или чему вы пожелаете... По поводу вашего вопроса На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу? я буду с вами честен : За 7 лет работы на форексе я не встречал людей использующих аг4 , на вопрос какой тестер я мог бы посоветовать для тестирования тактик я всегда говорил аг4 так как лучше я ничего не видел ... и через короткое время слышал отзыв : да программа крутая , неужели это все на мкл4 написано, но сложная, в ней пока разберешься пока сделаешь то что хочешь можно депо слить ... Мое мнение ( может оно ничего и не стоит ) не стоит делать одну такую сложную программу .... Лучше сделать несколько которые делают разные вещи и чем проще тем лучше ..... может можно все включить в одну программу но отключать блоки ...... Например мне не нужно установка своих торговых тактик, меня полностью устраивал аг 1 , мне не нужны все эти модификации с обьектами .... только открытие и модификация ордеров так как я торгую в основном руками .... Вобщем основной негативный отзыв сложно, запутанно , 95 % фишек только мешают, и не всегда работает ....... Может есть смысл сделать лайт нормал и про версии......

voldemar227: Моя логика такова voldemar227 пишет: string ordertiket=""; // текстовая переменная на глоб уровне //---------------------------------------------------------------------------// string Mas_tek[31][3],Mas_old [31][3]; // обьявление стрингового массива для 31 ордера по три ячейки для каждого //---------------------------------------------------------------------------// int start() { while(!IsStopped()) //цикл для быстроты работы { string name; // переменная для имен линий //---------------------------------------------------------------------------// ArrayCopy(Mas_tek, Mas_old);//сохраняем историю int Kol=0; //колличество ордеров //---------------------------------------------------------------------------// for (int i=0; i<OrdersTotal(); i++) // цикл по ордерам { if((OrderSelect(i, SELECT_BY_POS)==true) && (OrderSymbol()==Symbol())) {ordertiket=DoubleToStr(OrderTicket(),0); // переводим интовское значение тикета в тип стринг Kol++; //----------------------------------------------------------------------------------------------// if (ObjectFind(ordertiket)==-1) если центральной линии нет создать линию с именем тикета { ObjectCreate (ordertiket,OBJ_HLINE,0,0,OrderOpenPrice()); ObjectSetText(ordertiket,ordertiket); // сделать описание именем тикета } if (OrderType()==OP_BUY) // если ордер бай { for (int x=0;x<=ObjectsTotal()-1;x++) // цикл по перебору и поиску новых обьектов { name=ObjectName(x); // вернули имя обьекта if (ObjectType(name)== OBJ_HLINE) //если горизонтальная линия { if (ObjectFind(name)==0&&name==ordertiket) // если есть линия с именем тикета и описанием тикита значит это центральная линия { Mas_tek[Kol][1] = ordertiket; //запомнить имя в ячейку 1 первого ордера } if (ObjectDescription(name)==ordertiket&&OrderOpenPrice()<ObjectGet(name,OBJPROP_PRICE1)&&ObjectGet(name,OBJPROP_PRICE1)>0) // если есть обьект с описанием тикета и обьект выше цены открытия значит это новая линия для тейк профита { Mas_tek[Kol][2] =name; //запомним ее имя во вторую ячейку первого ордера } if (ObjectDescription(name)==ordertiket&&OrderOpenPrice()>ObjectGet(name,OBJPROP_PRICE1)&&ObjectGet(name,OBJPROP_PRICE1)>0) // если есть обьект с описанием тикета и обьект нгиже цены открытия значит это новая линия для стоп лосса { Mas_tek[Kol][3] =name; //запомним ее имя в третью ячейку первого ордера } } } } //----------------------------------------------------------------------------------------------// } } // с циклом сравнения вообще ничего не получилось так как пишет что не верны типеы сравниваемых данных // в документации я так и не нашол как сравнить массивы типа стринг /* for(int oo=1;oo <= StrToInteger(Mas_old[0][0]); oo++) { for (int ii=1;i <= StrToInteger(Mas_tek[0][0]);ii++) { if (Mas_tek[ii][1] == Mas_old[oo][1]) { Print("profit totge"); } else { Mas_tek[ii][1] = "нет линии";} if (Mas_tek[ii][2] == Mas_old[oo][2]) { Print("stop totge"); } else{Mas_tek[ii][2] = "нет линии";} } } */ Comment( " Цена открытия = ",Mas_tek[1][1], "\n"," Цена профита = ",Mas_tek[1][2], "\n"," Цена стопа = ",Mas_tek[1][3], "\n"," Тикет = ",ordertiket, "\n"," Обьекты = ",x); Sleep(50); } }



полная версия страницы