Форум » Алгоритмы » Сюда можно дать приб.. » Ответить

Сюда можно дать приб..

Azer: Сюда можно дать приблизительный алгоритм???

Ответов - 41, стр: 1 2 3 4 5 All

dhot: SK пишет: Главная особенность этой методики состоит в том, что основная прикладная программа (в статье скрипт, в вашем случае - эксперт) должна быть зациклена, т.е. обрабатывать управляющее воздействие пользователя постоянно. Статью непременно прочту. Вероятно она поможет мне справиться с надвигающейся, но еще не осознанной задачей. :))) В общем-то идея с зацикливанием понятна, но до сих пор бурной реакции на действия пользователя не требовалось. Скорее наоборот. Переменная Flag в приведенном ранее примере была призвана попридержать коней. :))))

SK: Дело не в том, востребована или не востребована предлагаемая технология. Дело в том, что это объясняет отсутствие реакции прикладной программы на смещение объекта.

dhot: SK пишет: Дело в том, что это объясняет отсутствие реакции прикладной программы на смещение объекта. М-м-да... Жаль, что не удалось посмотреть в работе представленный в статье комплекс. Результат компиляции эксперта: '' - unexpected end of program C:\Program Files\MetaTrader - UMIS\experts\include\Metsenat_exp.mq4 (26, 1) '' - unexpected end of program C:\Program Files\MetaTrader - UMIS\experts\include\Del_GV_exp.mq4 (19, 1) '' - unexpected end of program C:\Program Files\MetaTrader - UMIS\experts\include\Component_exp.mq4 (49, 1) '' - unexpected end of program C:\Program Files\MetaTrader - UMIS\experts\include\Component_uni.mq4 (33, 1) '' - unexpected end of program C:\Program Files\MetaTrader - UMIS\experts\Expert.mq4 (47, 1) С индикатором и скриптом аналогичная история. Это к вопросу об однозначности поведения продуктов от MetaQuotes.


SK: В конце каждого кода есть комбинация символов /* Удалите эти символы и компиляция будет успешной.

dhot: SK пишет: Дело в том, что это объясняет отсутствие реакции прикладной программы на смещение объекта. Я не говорил, что отсутствует реакция. Из цепочки событий, являющихся реакцией на манипуляции с меткой (изменение значения переменной - изменение текста в метке - возврат метки в исходное положение) выпадает лишь одно - изменение текста. Все остальное срабатывает. Идею с непрерывным опросом управляющих элементов я уловил сразу. Вот только разница между инициацией опроса новым витком цикла и новым тиком должна по идее заключаться лишь в скорости реакции программы, но уж ни как не в наличии или отсутствии этой реакции. Пусть тик придет через пять минут и реакция на действие пользователя произойдет через пять минут, но она ПРОИЗОЙДЕТ!!! Или я что-то не так понял, не учел? Вопрос же востребованности технологии не праздный. Каков бы ни был пользовательский интерфейс терминала, он все-таки предоставляет необходимые средства управления, а вот тестер стратегий не дает ни чего. И именно он в первую очередь нуждается в интерактивных элементах. То, что я сейчас собираю, заточено именно под тестер, а в нем, как вы понимаете, недостатка в тиках нет. Ну, а будет проводится опрос пять раз в секунду или пятьсот - я думаю, не столь критично. Во всяком случае, не на столько, что бы усложнять программу. :))

SK: dhot пишет: Я не говорил, что отсутствует реакция. Из цепочки событий, являющихся реакцией на манипуляции с меткой (изменение значения переменной - изменение текста в метке - возврат метки в исходное положение) выпадает лишь одно - изменение текста. Все остальное срабатывает. Идею с непрерывным опросом управляющих элементов я уловил сразу. Вот только разница между инициацией опроса новым витком цикла и новым тиком должна по идее заключаться лишь в скорости реакции программы, но уж ни как не в наличии или отсутствии этой реакции. Пусть тик придет через пять минут и реакция на действие пользователя произойдет через пять минут, но она ПРОИЗОЙДЕТ!!! Или я что-то не так понял, не учел? Конечно, реакция должна быть, если управление передаётся соотв. оператору или функции. Но в Вашем коде есть множество if-ов. Возможно, не срабатывают их условия, управление не паредаётся в тело оператора if(). Вопрос же востребованности технологии не праздный. Каков бы ни был пользовательский интерфейс терминала, он все-таки предоставляет необходимые средства управления, а вот тестер стратегий не дает ни чего. И именно он в первую очередь нуждается в интерактивных элементах. То, что я сейчас собираю, заточено именно под тестер, а в нем, как вы понимаете, недостатка в тиках нет. Ну, а будет проводится опрос пять раз в секунду или пятьсот - я думаю, не столь критично. Во всяком случае, не на столько, что бы усложнять программу. :)) Да, для тестера это не критично. В AG 4 различаются режимы. В тестовом режиме управляющие элементы опрашиваются 1 раз.

Scriptong: dhot пишет: Я отмечал, что мне нужна привязка к цене. :) Вообще-то у меня в полном варианте идет горизонтальная линия и привязанная к ней интерактивная метка. Ну, вернее текст. Из меток, само собой, я собрал панель инструментов и информационную панель... :) Так ведь никто не мешает вам преобразовывать цену в пиксели - http://codebase.mql4.com/ru/6346

dhot: SK пишет: В конце каждого кода есть комбинация символов /* Удалите эти символы Да-да, именно это я и сделал в первую очередь. (Так и не поняв, к чему такие сложности. :) ) Вот только в три часа ночи было уже трудно сообразить, что включаемые файлы надо не только отредактировать, но и сохранить. Стереотип уже сложился - отредактировал, скомпилировал. Да еще после повторной компиляции клик на ошибке выбрасывал курсор в произвольную строку уже открытого и отредактированного файла. Опять о неоднозначности. Впрочем, это я уже занудствую. :))))) Я все-таки хочу вернуться к первоначальному вопросу. Дело в том, что для меня, как человека пользовавшегося до сих пор объектно ориентированными средами программирования некоторые тонкости процедурного программирования могут быть далеко не очевидными. Ну вот, скажем, такой пример. В приведенном в самом начале коде я пытался реализовать функционал кнопки - нажали, получили действие, кнопка вернулась в исходное положение. Поскольку метка не кнопка и нажимать нечего, заменил нажатие смещением. А дальше по отработанной схеме - определил факт смещения, выполнил действия, прописал возврат метки. При этом совершенно не учел, что программирую не конкретное событие, а постоянно нахожусь в потоке событий. То есть, пока метка зацеплена мышью и перемещается (а следовательно находится не на месте) опрос ее состояния происходит не единожды и предписанное действие происходит не единожды. Для меня это было не очевидно и ошибку я обнаружил лишь получив некорректный результат. Изменил код так, что бы в следующий раз метка срабатывала только после того, как она фактически побывает в исходном положении. Теперь проблема состоит в том, что из назначенных на смещение кнопки действий одно выполняется не регулярно - изменение текста. Причем чем глубже оно находится во вложенных операторах if, тем нестабильнее работает. Может я что-то упускаю из виду? Ну, скажем, в той же последовательности событий?

dhot: SK пишет: Возможно, не срабатывают их условия, управление не паредаётся в тело оператора if(). В том-то и дело, что передается! В теле оператора две инструкции - одна меняет значение переменной, другая устанавливает свойство объекта. Так вот, переменная меняется, а свойство объекта нет. Я уже писал, программа не видит объект - ошибка 4202. Приходится выносить это в отдельную задачу - проверять состояние переменной и в соответствии с ним менять свойство объекта.

SK: Честно говоря, я не вижу в чём проблема. Вы сами всё хорошо понимаете. Обратите внимание также на необходимость перерисовки графиков после изменения свойств объектов (см. WindowRedraw() ).



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