не совсем :-) OnChartEvent худший кандидат для рассчётов
в OnChartEvent не контроллируется поток и события буферизуются. Какой нибудь индикатор выставит флаг MOUSE_MOVE и будет вал вызовов, на их фоне нажатие кнопки застрянет. В OnTick отправили синхронный приказ, ждали ответа 2 сек, за это время трижды нажата кнопка - OnChartEvent вызовется сразу три раза подряд.
и опять-же с ним - в нём часто обращения к чарту, а они долгие.
Посмотри такой подход, может наталкнёт на другие мысли и не использовать события графика. Цикл тут для примера ожидания. Если всё перенести в OnTimer, думаю будет работать так-как тебе надо.
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--------------------------------------------------------//бесконечный цикл распознавания нажатых кнопок клавиатурыwhile(!IsStopped())
{
//нажмите кнопку escape, чтобы выйти из программыif(TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE) != 0)
break;
//нажмите PageDown, чтобы сохранить изображение графикаif(TerminalInfoInteger(TERMINAL_KEYSTATE_PAGEDOWN) != 0)
{
string file_names[];
if(FileSelectDialog("Save Picture",NULL,"All files (*.*)|*.*",FSD_WRITE_FILE,file_names,"Image.png") < 1)
continue;
ChartScreenShot(0,file_names[0],GRAPH_X,GRAPH_Y);
}
Sleep(100);
}
}
Нужно делать расчеты по нажатию определенной клавиши/мыши и т.д.
Нужно исходить из того, что доступно )) Для клавиш есть некоторые предопределенные идентификаторы для функций, из которых можно делать комбинации.
Константа, это ведь некое число правильно? Можно проверить недокументированное использование. Попробовать в функцию передать константу соответствующей кнопки из MSDN. Или вообще передать константу нажатия мыши. Кто его знает, может сработает, я не проверял.
Без разницы, в какой On-функции делать расчеты.
не совсем :-) OnChartEvent худший кандидат для рассчётов
в OnChartEvent не контроллируется поток и события буферизуются. Какой нибудь индикатор выставит флаг MOUSE_MOVE и будет вал вызовов, на их фоне нажатие кнопки застрянет. В OnTick отправили синхронный приказ, ждали ответа 2 сек, за это время трижды нажата кнопка - OnChartEvent вызовется сразу три раза подряд.
и опять-же с ним - в нём часто обращения к чарту, а они долгие.
Да, по ваше подсказке вроде работает)))
Или я опять пёрднул в лужу?Интересное решение, спасибо.
Почему в тестере, при вызове перекрестия по средней клавиши мыши не показывается подсчет процента изменения цены, а только пункты?
Без разницы, в какой On-функции делать расчеты.
Посмотри такой подход, может наталкнёт на другие мысли и не использовать события графика.
Цикл тут для примера ожидания. Если всё перенести в OnTimer, думаю будет работать так-как тебе надо.
Если всё перенести в OnTimer, думаю будет работать так-как тебе надо.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2024.09.23 10:54
Без разницы, в какой On-функции делать расчеты.
Проблема в очереди.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Aleksandr Slavskii, 2024.09.23 10:42
Там проблема, что накапливается очередь событий и пока она последовательно не отработается, OnChartEvent не успокоится.
Несколько рабочих готовых решений были предложены в коде.
Проблема в очереди.
Несколько рабочих готовых решений были предложены в коде.
С учётом этого и был предложен код, без использования OnChartEvent.
С учётом этого и был предложен код, без использования OnChartEvent.
Нужно делать расчеты по нажатию определенной клавиши/мыши и т.д.
Нужно делать расчеты по нажатию определенной клавиши/мыши и т.д.
Нужно исходить из того, что доступно ))
Для клавиш есть некоторые предопределенные идентификаторы для функций, из которых можно делать комбинации.
Константа, это ведь некое число правильно? Можно проверить недокументированное использование.
Попробовать в функцию передать константу соответствующей кнопки из MSDN.
Или вообще передать константу нажатия мыши.
Кто его знает, может сработает, я не проверял.
Нужно исходить из того, что доступно ))
Допустим, по клавише Q вы открываете позицию.
Чтобы такого не происходило, были даны решения.
Задача об игнорировании случайных ChartEvent-событий. Она решена.
Задача об игнорировании случайных ChartEvent-событий. Она решена.
Это бы решение опубликовать в ветке особенностей. Если не сложно.