Ошибки, баги, вопросы - страница 2189

 
Aleksey Vyazmikin:

Тогда как проверить её отработку?

По факту смещения.
 
Artyom Trishkin:
По факту смещения.

Понятно, т.е. предлагается ждать смещения, если его не произошло, то повторить команду на смещение, так?

 
Aleksey Vyazmikin:

Понятно, т.е. предлагается ждать смещения, если его не произошло, то повторить команду на смещение, так?

Обдумать нужно как отлавливать сработку асинхронной команды, и какие там могут быть подводные камни.

Допустим, есть у нас номер видимого бара перед подачей команды - запомнили. Пока номер не сменится - значит команда не отработала. Сменился - отработала.

А если не сменится? Когда принимать решение о том, что команда потерялась в очереди и повторять команду? А если после повтора команды, прошлая-таки сработала, а у нас ещё одна в очереди стоит - будет лишнее смещение.

В общем тут нужны эксперименты. Так вот сразу не придумаю...

 
Artyom Trishkin:

Обдумать нужно как отлавливать сработку асинхронной команды, и какие там могут быть подводные камни.

Допустим, есть у нас номер видимого бара перед подачей команды - запомнили. Пока номер не сменится - значит команда не отработала. Сменился - отработала.

А если не сменится? Когда принимать решение о том, что команда потерялась в очереди и повторять команду? А если после повтора команды, прошлая-таки сработала, а у нас ещё одна в очереди стоит - будет лишнее смещение.

В общем тут нужны эксперименты. Так вот сразу не придумаю...

Понял - тяжелый случай - буду думать, спасибо.

 
Aleksey Vyazmikin:

Понял - тяжелый случай - буду думать, спасибо.

Если полагаться лишь на факт смещения, то график ведь можно и руками сместить - вот и дырка в логике...

 
Artyom Trishkin:

Если полагаться лишь на факт смещения, то график ведь можно и руками сместить - вот и дырка в логике...

Через три минуты экспериментов, я пришёл к выводу, что смещение происходит от


а не от текущего положения.

 
Alexey Viktorov:

Через три минуты экспериментов, я пришёл к выводу, что смещение происходит от


а не от текущего положения.

И что? Номер видимых баров-то меняется. Лучше б проверил когда отрабатывает перемещение графика мышью. Её же можно отловить. А раз есть смещение графика с воздействием мышью, то это не отработка функции.
 
Artyom Trishkin:
И что? Номер видимых баров-то меняется. Лучше б проверил когда отрабатывает перемещение графика мышью. Её же можно отловить. А раз есть смещение графика с воздействием мышью, то это не отработка функции.

Я не говорил о проверке выполнения. Если руками сдвинуть график вправо на 100 баров, а потом скриптом попытаться сдвинуть ещё на 10 и тоже в право, то смещение будет установлено на 10 от метки указанной на снимке. Фактически, в этом примере, смещение произойдёт не вправо на 10, а влево на 90.

Что касается проверки... какой смысл проверять то что работает не так как ожидалось? Точней написано не так как хотелось. Чтобы неоднократно двигать график надо смещение делать от CHART_CURRENT_POS а в том примере CHART_END.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Aleksey Vyazmikin, 2018.04.12 15:43

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

   long handle=ChartID(); 
   if(handle>0) // если получилось, дополнительно настроим 
     { 
      ChartNavigate(handle,CHART_END,-2000); 
     } 

Отсюда вся проблема.

 
Alexey Viktorov:

Я не говорил о проверке выполнения. Если руками сдвинуть график вправо на 100 баров, а потом скриптом попытаться сдвинуть ещё на 10 и тоже в право, то смещение будет установлено на 10 от метки указанной на снимке. Фактически, в этом примере, смещение произойдёт не вправо на 10, а влево на 90.

Что касается проверки... какой смысл проверять то что работает не так как ожидалось? Точней написано не так как хотелось. Чтобы неоднократно двигать график надо смещение делать от CHART_CURRENT_POS а в том примере CHART_END.


Отсюда вся проблема.

Я не читал там код. Может ему так нужно.

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

Так вот, исходя из этого, я говорю про ловлю именно события исполнения команды смещения графика...

Было бы время на эксперименты... Но, увы...

 

В профайлере не видно сигнатуры функций, из-за не понимаешь сразу, какая из перегруженных функций имеется в виду


Т.е. список заполняет __FUNCTION__, а хотелось бы __FUNCSIG__.