Автор | Сообщение |
|
| |
Пост N: 50
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 16.12.12 14:02. Заголовок: Поиск объектов ....
Привет ! вопрос в следующем как программно найти объект на графике или скопированный с другого объекта ... То есть есть линия или фигура , через контр + мышь сделал параллельную копию ... Как найти этот объект или узнать его имя ???
|
|
|
Ответов - 27
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Пост N: 58
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 17.12.12 21:46. Заголовок: Ок спасибо за операт..
Ок спасибо за оперативность !
|
|
|
|
| |
Пост N: 59
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 18.12.12 16:59. Заголовок: for(int oo=1;oo &..
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 но почему то компилятор пишет что не верны сравниваемые типы
|
|
|
|
| |
Пост N: 60
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 18.12.12 18:30. Заголовок: Scriptong пишет: а..
Scriptong пишет: цитата: | а удаленный объект вычеркивается из массива отслеживаемых объектов. |
| Вот тут тоже проблема ... Линия удалена но функция comment(); пишет что в ячейке имя осталось .... Я пробовал делать что если обьектфинд не находит линию то перезаписывать ячейку пустотой "" , но тоже результата не дало ...
|
|
|
|
| постоянный участник
|
Пост N: 559
Зарегистрирован: 03.09.09
|
|
Отправлено: 18.12.12 18:58. Заголовок: voldemar227 пишет: ..
voldemar227 пишет: цитата: | массивы типа string но почему то компилятор пишет что не верны сравниваемые типы |
| Массивы Mas_tek и Mas_old объявлены как string? Тогда ничего удивительного нет: компилятор правильно указывает на тот факт, что значение переменной типа int (переменная цикла) не может сравниваться со значением строковой переменной. voldemar227 пишет: цитата: | Вот тут тоже проблема ... Линия удалена но функция comment(); пишет что в ячейке имя осталось .... Я пробовал делать что если обьектфинд не находит линию то перезаписывать ячейку пустотой "" , но тоже результата не дало ... |
| Нужно смотреть весь код, как составлен алгоритм, как происходит запись данных и их сравнение между собой.
|
|
|
|
| |
Пост N: 61
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 18.12.12 20:09. Заголовок: string ordertiket=..
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); } } //+------------------------------------------------------------------+ Это весь код
|
|
|
|
Отправлено: 18.12.12 20:40. Заголовок: На этой стадии (у на..
На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу?
|
|
|
|
| постоянный участник
|
Пост N: 560
Зарегистрирован: 03.09.09
|
|
Отправлено: 18.12.12 20:43. Заголовок: voldemar227 пишет: ..
voldemar227 пишет: Слишком вольное программирование: 1. Какой смысл копировать один массив в другой, если массив, в который производилось копирование, очищается практически в следующей строке кода после копирования? 2. Функция ArrayInitialize не может применена к строковому массиву. Уточните этот момент в справке. Там явно указано, что массив должен быть числовой. 3. Массив Mas_tek во втором измерении содержит три элемента, но в коде используется четвертый элемент, что недопустимо (индекс последнего элемента в таких массивах - 2): цитата: | Mas_tek[Kol][3] =name; //по стопу |
| 4. Что подразумевалось получить в конструкции такого типа, если в этом элементе массива ничего не записано? цитата: | StrToInteger(Mas_old[0][0]) |
|
|
|
|
|
| |
Пост N: 62
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 18.12.12 21:25. Заголовок: Scriptong пишет: 4...
Scriptong пишет: цитата: | 4. Что подразумевалось получить в конструкции такого типа, если в этом элементе массива ничего не записано? цитата: StrToInteger(Mas_old[0][0]) |
| Я хотел запустить цикл для сравнения старого массива и нового У меня цель сделать модернизацию ордеров как в аг 4 установление линий тейк профита и модернизация и удаление по линиям с массивами раньше не работал по этому представление имею слабое
|
|
|
|
| |
Пост N: 63
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 18.12.12 21:43. Заголовок: SK пишет: На этой ..
SK пишет: цитата: | На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу? |
| У меня есть сайт (с вашим он не сравница так как мой сайт слабоват ) на котором я выкладываю советников по партнерской программе ... Дополнительный пассивный доход... По мимо торгов на форексе , нет такой психологической нагрузки когда понимаешь что яйца лежат по разным карманам ... И есть программка тестер trading-go называется посмотреть можно тут http://trading-go.ru/index.php которая как и афтограф 4 выставляет ордера с графика .... Но модернизация ордеров в ней очень плохо построена ... Я не хочу нагружать программу разными фишками и возможностями .... программа останется такой какая она сейчас есть . Я хочу переработать модернизацию ордеров .... и ни чего больше ... Вы оказали большую помощь мне не только по поводу данной проблемы но и по поводу других моих вопросов .... В знак благодарности я сделаю ссылку на ваш сайт с выражением оной . И также создам пост посвященный аг4 или чему вы пожелаете... По поводу вашего вопроса цитата: | На этой стадии (у нас) возникает естественный вопрос: правильно ли мы понимаем, что Вас чем-то не устраивает AG 4? Если это так, то опишите, пожалуйста, причины. Что Вы хотели бы улучшить? Возможно, что-то мешает (лишний функционал). Чего не хватает? Возможно, дело в условиях лицензирования или просто в желании иметь собственную программу? |
| я буду с вами честен : За 7 лет работы на форексе я не встречал людей использующих аг4 , на вопрос какой тестер я мог бы посоветовать для тестирования тактик я всегда говорил аг4 так как лучше я ничего не видел ... и через короткое время слышал отзыв : да программа крутая , неужели это все на мкл4 написано, но сложная, в ней пока разберешься пока сделаешь то что хочешь можно депо слить ... Мое мнение ( может оно ничего и не стоит ) не стоит делать одну такую сложную программу .... Лучше сделать несколько которые делают разные вещи и чем проще тем лучше ..... может можно все включить в одну программу но отключать блоки ...... Например мне не нужно установка своих торговых тактик, меня полностью устраивал аг 1 , мне не нужны все эти модификации с обьектами .... только открытие и модификация ордеров так как я торгую в основном руками .... Вобщем основной негативный отзыв сложно, запутанно , 95 % фишек только мешают, и не всегда работает ....... Может есть смысл сделать лайт нормал и про версии......
|
|
|
|
| |
Пост N: 64
Зарегистрирован: 19.11.10
Откуда: Россия, Новочеркасск
|
|
Отправлено: 19.12.12 09:39. Заголовок: Моя логика такова ..
Моя логика такова 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); } } |
|
|
|
|
Ответов - 27
, стр:
1
2
3
All
[только новые]
|
|