Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 894

 

Хотел написать простенький скрипт для создания на чарте отрезка (трендовой линии) с началом в месте, куда скрипт брошен (с этим никаких проблем) и окончанием в точке с координатами, где будет сделан левый клик мышкой... Вот тут то и споткнулся... В индикаторе или эксперте отловить это событие элементарно, А КАК ЭТО СДЕЛАТЬ В СКРИПТЕ??? Подскажите, кто знает, пожалуйста!

 
Batman:

Хотел написать простенький скрипт для создания на чарте отрезка (трендовой линии) с началом в месте, куда скрипт брошен (с этим никаких проблем) и окончанием в точке с координатами, где будет сделан левый клик мышкой... Вот тут то и споткнулся... В индикаторе или эксперте отловить это событие элементарно, А КАК ЭТО СДЕЛАТЬ В СКРИПТЕ??? Подскажите, кто знает, пожалуйста!

 

Зациклив скрипт.
 
tara:
Зациклив скрипт.

Пробовал, допустим, цикл в OnStart крутится  сам по себе, а OnChartEvent в это время уже не работает...

Есть практически работающий пример того, чтобы скрипт не завершал работу, пока не дождется события клика мышки? 

 
Batman:

Пробовал, допустим, цикл в OnStart крутится  сам по себе, а OnChartEvent в это время уже не работает...

Есть практически работающий пример того, чтобы скрипт не завершал работу, пока не дождется события клика мышки? 

А если зациклить через пользовательскую функцию, возврат которой зависит от OnChartEvent

Это экспромт. Не уверен что получится, но если-бы мне пришлось это делать, я пробовал-бы именно такое решение.


зы. Видимо поспешил с мнением. В скрптах кажется недоступно событие OnChartEvent
 
AlexeyVik:

А если зациклить через пользовательскую функцию, возврат которой зависит от OnChartEvent

Это экспромт. Не уверен что получится, но если-бы мне пришлось это делать, я пробовал-бы именно такое решение.

И как это будет выглядеть??))

Я почему-то подозреваю, что при организации любого цикла в скрипте, обработка событий уже не происходит... Если она вообще производится при выполнении скриптов - уже сомневаюсь в этом...

Неужели такая простая задача не имеет решения, во всяком случае, "без танцев с бубнами"??? 

 
Batman:

И как это будет выглядеть??))

Я почему-то подозреваю, что при организации любого цикла в скрипте, обработка событий уже не происходит... Если она вообще производится при выполнении скриптов - уже сомневаюсь в этом...

 Неужели такая простая задача не имеет решения, во всяком случае, "без танцев с бубнами"???

Ну цикл через пользовательскую функцию, это просто. Через цикл while вызывается эта функция и в зависимости от возвращённого значения повтор или break

А вот наличие OnChartEvent в скриптах... сомнительно.

Видимо надо понимать что возможно в скриптах, а что сувать туда себе дороже. Мне кажется результат может быть непредсказуем и зависит от пользователя, а не программиста. Представь что будет если в таком скрипте не нажать крыску...цикл не завершится. А дальше что может сделать пользователь??? Как обезьяна с гранатой.

 
AlexeyVik:

Ну цикл через пользовательскую функцию, это просто. Через цикл while вызывается эта функция и в зависимости от возвращённого значения повтор или break

А вот наличие OnChartEvent в скриптах... сомнительно.

Видимо надо понимать что возможно в скриптах, а что сувать туда себе дороже. Мне кажется результат может быть непредсказуем и зависит от пользователя, а не программиста. Представь что будет если в таком скрипте не нажать крыску...цикл не завершится. А дальше что может сделать пользователь??? Как обезьяна с гранатой.

Какой-то бред насчёт обезьяны с гранатой...))) Скрипт перетягивается на график МЫШКОЙ, затем вполне естественный клик в нужном месте графика (предполагается, что удалось неким образом организовать ожидание и перехват события...), создается графический обект, скрипт завершает работу. Для "забывчивых" можно завершить ожидание по истечении некоторого времени. Даже "зависший" кривой скрипт удаляется с графика нажатием правой кнопки мыши, "Удалить скрипт".

Вопрос - почему обработка событий нажатия кнопки или т.п. в скрипте  невозможна? Что тут запретного?

 
Batman:

Какой-то бред насчёт обезьяны с гранатой...))) Скрипт перетягивается на график МЫШКОЙ, затем вполне естественный клик в нужном месте графика (предполагается, что удалось неким образом организовать ожидание и перехват события...), создается графический обект, скрипт завершает работу. Для "забывчивых" можно завершить ожидание по истечении некоторого времени. Даже "зависший" кривой скрипт удаляется с графика нажатием правой кнопки мыши, "Удалить скрипт".

Вопрос - почему обработка событий нажатия кнопки или т.п. в скрипте  невозможна? Что тут запретного?

Ты не поверишь. Есть у меня один знакомый которому я говорю -"Закрой терминал"... Что ты думаешь он делает? СВОРАЧИВАЕТ... Это я и называю "Обезьяна с гранатой". Никогда не угадаешь куда она её бросит. Так-же никогда не угадаешь что такой юзер сделает с твоей программой.

Ну, а почему обработка события невозможна, это вопрос к MQ.

Попробуй решить это через советник в котором по завершении выполнения нужного действия советник удаляется с графика функцией ExpertRemove()

 
AlexeyVik:

Попробуй решить это через советник ...

В советнике работает, НО... возникает другая проблема - как избавиться от всплывающего окна с параметрами (которых нет...)???
 

Натолкнулся на неприятную особенность работы оптимизатора в тестере стратегий.

Вот код:

input int      value=1;

int OnInit()

{

    if (value == 3) return (INIT_FAILED);

    return(INIT_SUCCEEDED);

}

Запускаем в тестере на оптимизацию параметр value от 1 до 10. Результат - после 3 проходки все наборы параметров некорректны, хотя по логике дожна быть некорректной только третья проходка.

Прикладываю картинку того же кода, только с возвращаемым параметром INIT_PARAMETERS_INCORRECT 

Документация говорит:  

INIT_FAILED

Неудачная инициализация, тестирование нет смысла продолжать из-за неустранимых ошибок. Например, не удалось создать индикатор, необходимый для работы эксперта.

Возврат этого значения означает то же самое, что и возврат значения, отличного от нуля – инициализация эксперта в тестере прошла неудачно. Тестирование для данного набора параметров эксперта не будет выполняться, агент свободен для получения нового задания.

 

Дальше - больше. Если сделать вывод результатов в файл, то видно что после третьей проходки функция OnInit() вообще не запускается.

Кто-нибудь сталкивался с подобным? Как решить проблему?  

P. S. Тестировал на MT4 билд 765