string Mon(int num) { if(TerminalInfoString(TERMINAL_LANGUAGE) != "Russian") switch(num) { case 1: return "Jan"; case 2: return "Feb"; case 3: return "Mar"; case 4: return "Apr";
Есть массивы.
Вау, кто то не поленился посмотреть код!!! Круто!
Да, есть массивы. Но это было написано давно, а скопипастить всё же проще чем писать массивы. Да и на скорость не влияет. Наверное.
Вот это очень крутая вещь!!! Странно, что она не присутствует в стандартном MT5 из коробки!!! Ведь именно так и должны работать курсор и шкалы. У кого проблемы со зрением - обязательно оценят данный индикатор! Огромная благодарность автору!!!
Правда, может я что-то не так делаю, но после нескольких секунд использования индикатор наглухо зависает (( Не подскажете с чем это связано, можно поправить (уточню - смотрю его в субботу, когда котировки не идут в терминал - может быть с этим связано?) Большая просьба - не забрасывать код, а по возможности ещё и ускорить его, потому что всё-таки видно подтормаживает немного. Но главное - пожалуйста уберите зависание! (МТ5 у меня)
Супер нужная вещь!!! Благодарю автора !!!
Вот это очень крутая вещь!!! Странно, что она не присутствует в стандартном MT5 из коробки!!! Ведь именно так и должны работать курсор и шкалы. У кого проблемы со зрением - обязательно оценят данный индикатор! Огромная благодарность автору!!!
Правда, может я что-то не так делаю, но после нескольких секунд использования индикатор наглухо зависает (( Не подскажете с чем это связано, можно поправить (уточню - смотрю его в субботу, когда котировки не идут в терминал - может быть с этим связано?) Большая просьба - не забрасывать код, а по возможности ещё и ускорить его, потому что всё-таки видно подтормаживает немного. Но главное - пожалуйста уберите зависание! (МТ5 у меня)
Супер нужная вещь!!! Благодарю автора !!!
Добрый день.
К сожалению, я не знаю, что могло вызвать зависание индикатора в вашем терминале.
Прежде чем опубликовать код, его активно тестировали кроме меня ещё два человека. Поэтому могу предположить, что ошибки на вашей стороне.
Пробуйте отключить всё, что отключается в индикаторе, а потом по одному включать. Так вы узнаете, что вызывает зависание.
По итогам этого эксперимента, напишите здесь, что получилось. Вместе подумаем, что делать.
Добрый день.
К сожалению, я не знаю, что могло вызвать зависание индикатора в вашем терминале.
Прежде чем опубликовать код, его активно тестировали кроме меня ещё два человека. Поэтому могу предположить, что ошибки на вашей стороне.
Пробуйте отключить всё, что отключается в индикаторе, а потом по одному включать. Так вы узнаете, что вызывает зависание.
По итогам этого эксперимента, напишите здесь, что получилось. Вместе подумаем, что делать.
подгрузка истории могла сделать такую гадость. Грузиться фрагментами, и часто вызывает OnCalculate с prev_calc=0 (ещё внутри iTime может провоцировать подгрузку). То есть это не глухое зависание, а дикие тормоза.
стоит разорвать неявный цикл событий - в OnCalculate только ставить флаг "грузится история", а рисовать всё в таймере (или следующим тиком, событием чарта, что из них раньше придёт).
PS/ ещё у нас любят ChartSetperiod как способ обновления/эмуляции_тика/перевычисления - его использование в соседнем индикаторе вызовет такое "зависание"подгрузка истории могла сделать такую гадость. Грузиться фрагментами, и часто вызывает OnCalculate с prev_calc=0 (ещё внутри iTime может провоцировать подгрузку). То есть это не глухое зависание, а дикие тормоза.
стоит разорвать неявный цикл событий - в OnCalculate только ставить флаг "грузится история", а рисовать всё в таймере (или следующим тиком, событием чарта, что из них раньше придёт).
PS/ ещё у нас любят ChartSetperiod как способ обновления/эмуляции_тика/перевычисления - его использование в соседнем индикаторе вызовет такое "зависание"Историю индикатор не грузит никакую, совсем, поэтому отсюда тормозов быть не может.
iTime используется, но в пределах видимой части графика, это также не может вызывать тормоза.
Единственное, что возможно может вызывать тормоза, это массовая рассылка графикам пользовательского события.
Хорошо бы не отправлять пользовательские события не видимым окнам графиков, но я не знаю как определить видимость графика.
Если знаете как определить видимость окна графика, подскажите.
ЗЫ. Не путать видимость окна с активным окном CHART_BRING_TO_TOP .
Историю индикатор не грузит никакую, совсем, поэтому отсюда тормозов быть не может.
iTime используется, но в пределах видимой части графика, это также не может вызывать тормоза.
Единственное, что возможно может вызывать тормоза, это массовая рассылка графикам пользовательского события.
Хорошо бы не отправлять пользовательские события не видимым окнам графиков, но я не знаю как определить видимость графика.
Если знаете как определить видимость окна графика, подскажите.
ЗЫ. Не путать видимость окна с активным окном CHART_BRING_TO_TOP .
я просто подобные вещи делал, поэтому слегка понимаю что там у пользователя случилось что всё втормозило.
у него почти со 100% вероятностью - именно подгрузка истории и ChartSetSymbolPeriod. Он открывает новый график в субботу, истории нет и она начинает пачками подгружаться, и вполне возможно что рядом ещё что-то вызывает SetSymbolPeriod ("эмулярует тики"). Визуально - всё подвисает.
у себя (а у меня подобное про шкалы есть) чтобы подобного избегать (реакций на многократный подряд рассчёт OnCalc) я тщательно выносил ChartSet/Get ObjectGet/Set из OnCalculate. Они асинхронные и могут на ровном месте втормозить. Там только ставил флаги, а вся отрисовка в OnTimer, OnChartEvent
PS/ в плане обмена опытом: синхронизацию между графиками (не там-же но в других поделках) пришёл к выводу что лучше через переменные терминала чем через multicast рассылки. Заводить GlobalVariables, ставить им признак что temporary и кому надо тот сам по ним среагирует.
я просто подобные вещи делал, поэтому слегка понимаю что там у пользователя случилось что всё втормозило.
у него почти со 100% вероятностью - именно подгрузка истории и ChartSetSymbolPeriod. Он открывает новый график в субботу, истории нет и она начинает пачками подгружаться, и вполне возможно что рядом ещё что-то вызывает SetSymbolPeriod ("эмулярует тики"). Визуально - всё подвисает.
у себя (а у меня подобное про шкалы есть) чтобы подобного избегать (реакций на многократный подряд рассчёт OnCalc) я тщательно выносил ChartSet/Get ObjectGet/Set из OnCalculate. Они асинхронные и могут на ровном месте втормозить. Там только ставил флаги, а вся отрисовка в OnTimer, OnChartEvent
PS/ в плане обмена опытом: синхронизацию между графиками (не там-же но в других поделках) пришёл к выводу что лучше через переменные терминала чем через multicast рассылки. Заводить GlobalVariables, ставить им признак что temporary и кому надо тот сам по ним среагирует.
Хорошо, понял, приму к сведению, спасибо.
Поначалу думал сделать через GlobalVariables, ног потом решил, что через пользовательские события будет красивее. Возможно это было ошибкой.
доброго времени! спасибо за работу, а можно ввести переменную со смещением времени? у меня не +3 а плюс 4, заранее спасибо
Не уверен, что это может понадобится кому то ещё, поэтому прикрепляю файл здесь.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Price Time Scale:
Пользовательская шкала времени и цены.
Автор: Aleksandr Slavskii