Execu 0 Share Posted November 13, 2008 To Execu: Ф-я double NormalizeDouble(double v, int n); работает везде. В Вашем случае нужно просто посмотреть на котировку инструмента и указывать n = количество символов после запятой. Извините, что с тем же вопросом, Программер, но что делать, если нужно добавить запятую, как в котировании нефти? Допустим, нужно показать разницу между значениями МА в 6.000 пунктов. С n=0 цена отображается без запятой, в виде 6000. Что делать, чтобы отображалось с запятой? Вроде надо бы написать n=3, но в таком виде появляются ненужные подробности: 6000.ХХХ Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 13, 2008 Разделите на 1000. Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 13, 2008 Честное слово, не понимаю в чём у Вас вопрос! Quote Link to post Share on other sites
rmax 2 Share Posted November 14, 2008 Плиз Программер посмотрите вот тут http://forum.alpari-idc.ru/showpost.php?p=1221020&postcount=4162 . Может все-таки сдеает его. Только два добавления: 1. Когда появляется противоположный сигнал предыдущая поза автоматически закрывается и открывается новая по сигналу. 2. Трейлинг стоп можно сделать так, чтобы при значении "0" он отключался? Заранее спасибо. Quote Шуруп забитый молотком держит лучше, чем гвоздь завинченный отверткой. Link to post Share on other sites
BidAsk 1,916 Share Posted November 14, 2008 Задача: Определить при прикреплении эксперта к графику наличие на графике горизонтальных линий и удалить их с графика, не удаляя возможно присутствующих других графических объектов. Решение задачи: int init() {InitLines(); return(0);} int deinit() {return(0);} int start() {return(0);} //---- void InitLines() { int lines; string object_name; lines=ObjectsTotal(OBJ_HLINE); if (UninitializeReason()!=3 && lines!=0) { for (int i=0; i<ObjectsTotal(); i++) { object_name=ObjectName(i); if (ObjectType(object_name)==OBJ_HLINE) ObjectDelete(object_name); } } return; } ------------------------------------------------------------------ Проблема: Ни советник, ни скрипт не удаляют горизонтальные линии с графика полностью del_obj.mq4 1 Quote ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий! Link to post Share on other sites
Programmer 33 Author Share Posted November 14, 2008 Задача:Определить при прикреплении эксперта к графику наличие на графике горизонтальных линий и удалить их с графика, не удаляя возможно присутствующих других графических объектов. Решение задачи: int init() {InitLines(); return(0);} int deinit() {return(0);} int start() {return(0);} //---- void InitLines() { int lines; string object_name; lines=ObjectsTotal(OBJ_HLINE); if (UninitializeReason()!=3 && lines!=0) { for (int i=0; i<ObjectsTotal(); i++) { object_name=ObjectName(i); if (ObjectType(object_name)==OBJ_HLINE) ObjectDelete(object_name); } } return; } ------------------------------------------------------------------ Проблема: Ни советник, ни скрипт не удаляют горизонтальные линии с графика полностью Стандартная ошибка перебора массива. Ошибка заключается в том, что когда в i-ой итерации цикла находится гор. линия и удаляется, все объекты с индексами бОльшими, чем i, сдвигаются в массиве объектов влево, т.е. появляется новый объект с индексом i, а Вы i на след. итерации увеличиваете, и этот объект выпадает из рассмотрения. Методы решения: 1. Либо начинать рассмотрение массива с конца. 2. Либо в случае удаления объекта перед след. итерацией делать декремент: i--; Quote Link to post Share on other sites
BidAsk 1,916 Share Posted November 14, 2008 точно, теперь работает спасибо большое сам бы я не додумал, обычно мелочь очень трудновыявима... 1 Quote ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий! Link to post Share on other sites
Shu 0 Share Posted November 15, 2008 точно, теперь работаетспасибо большое сам бы я не додумал, обычно мелочь очень трудновыявима... да, так оно и есть! отладка - рулит :wink: хотя, я в этом случае бы воспользовался функцией int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY) Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
BidAsk 1,916 Share Posted November 15, 2008 да, так оно и есть! отладка - рулит :wink: хотя, я в этом случае бы воспользовался функцией int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY) мне не нужно удалять все объекты, мне нужно удалить некоторые из всех 1 Quote ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий! Link to post Share on other sites
Programmer 33 Author Share Posted November 15, 2008 ObjectsDeleteAll(0, OBJ_HLINE); Quote Link to post Share on other sites
BidAsk 1,916 Share Posted November 15, 2008 о блин, точно, а я тут велосипед придумываю :-)))))) с другой стороны, не задумай я велосипеда, не узнал бы про стандартную ошибку перебора массива и она где-нибудь да вылезла бы и конечно в самом неподходящем невизуализируемом и скрытном месте ещё раз спасибо всем 1 Quote ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий! Link to post Share on other sites
Execu 0 Share Posted November 15, 2008 Разделите на 1000. Большое спасибо, теперь отображается правильно! Quote Link to post Share on other sites
Andrey50 0 Share Posted November 17, 2008 Я написал свой первый советник, прогнал его на тестере и робот торговал, но та же самая программа на демо-счете не работает, т.е. не делает никаких сделок. Подскажите, пожалуйста, возможные причины. В роботе стоит опция "Разрешить советнику торговать". Quote Link to post Share on other sites
~~SOM~~ 1 Share Posted November 17, 2008 Может, просто событий на открытие сделки еще не было. Quote Link to post Share on other sites
Andrey50 0 Share Posted November 17, 2008 Может, просто событий на открытие сделки еще не было. В том то и дело, что сделки по советнику должны открываться по таймеру каждые сутки, а прошла уже неделя. Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 17, 2008 Советники, наверное, не включены. Quote Link to post Share on other sites
Andrey50 0 Share Posted November 17, 2008 Советники, наверное, не включены. Что значит "не включены", если они работают на тестере и как их в таком случае включить? Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 17, 2008 В верхнем левом углу рожица улыбается? Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 17, 2008 Как включить - читайте в "Курс MQL4", где-то в уроках про советники. Там с картинками - всё подробно. Quote Link to post Share on other sites
Andrey50 0 Share Posted November 18, 2008 В верхнем левом углу рожица улыбается? Спасибо, разобрался. Quote Link to post Share on other sites
Ф.Ф.Карабасов 0 Share Posted November 18, 2008 Добрый день! в процессе работы экперт часто выдает "stack overflow" и останавливается. Не могу понять какие причины для возникновения данной ситуации ? Возникает только при только при торговле - при тестировании все нормально. Спасибо. Quote Link to post Share on other sites
Red-Nicolas 0 Share Posted November 18, 2008 подскажите что указать в функции return(), что бы часть int start() {} выполнялась только в первую минуту каждого часа? Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 18, 2008 To Ф.Ф.Карабасов: http://forum.mql4.com/ru/10757 Quote Link to post Share on other sites
Programmer 33 Author Share Posted November 18, 2008 To Red-Nicolas: подскажите что указать в функции return(), что бы часть int start() {} выполнялась только в первую минуту каждого часа? Поставленная целб достигается вовсе не так. Надо завести переменную-флаг и проверять её значение. Quote Link to post Share on other sites
Ф.Ф.Карабасов 0 Share Posted November 18, 2008 Спасибо. Буду пробовать Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.