Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В Вашем коде, во-первых, идёт не просто эмуляция тика, а принудительное обновление графика с соответствующей подгрузкой истории на каждом тике. Вы хоть в лог журнала заглядываете иногда? Загляните на досуге и посмотрите что там творится. И прикиньте что там будет через денёк например. Особенно если запущено несколько копий индикатора. Я уж молчу про нагрузку системы и интернет-канала.
Если же в вашем коде вместо обновления графика сделать именно эмуляцию тика, то это приведёт к зацикливанию (т.е. индикатор будет запускаться без остановки), а соответственно к подвисанию терминала.
Зачем нужно обновление без подгрузки истории? Принудительное обновление графика и есть эммуляция тика.
Вот лог после 2500 тиков:
00:51:32 Check_UpdateChart EURUSD,M1: loaded successfully
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: removed
Зачем нужно обновление без подгрузки истории? Принудительное обновление графика и есть эммуляция тика.
Вот лог после 2500 тиков:
00:51:32 Check_UpdateChart EURUSD,M1: loaded successfully
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1
00:52:48 Check_UpdateChart EURUSD,M1: removed
Я же вроде ясно написал: "лог журнала". Так зачем вы мне показываете лог экспертов? Судя по всему я был прав, вы туда и не заглядываете никогда. Не удивлюсь, если у вас половина жёсткого диска уже забита этими логами :)
И не нужно подменять понятия. Обновление истории и эмуляция тика - это разные вещи. Приходящие тики с сервера ведь не обновляют историю (т.е. предыдущие бары). Если бы это происходило, то терминал бы жрал немеряно трафика и ресурсов.
Поэтому вот как-раз непонятно, зачем вам нужно обновление на каждом тике, которое кроме всего прочего обнуляет состояние IndicatorCounted(), а значит необходимо самому проверять всю историю на каждом тике. Это ж сколько ресурсов впустую расходуется.
Приходящие тики с сервера ведь не обновляют историю (т.е. предыдущие бары). Если бы это происходило, то терминал бы жрал немеряно трафика и ресурсов.
поставил после
в логе получил:23:39:01 test EURUSD,H1: loaded successfully
23:39:01 test EURUSD,H1: PostMsgAddr =1977398342
23:39:01 test EURUSD,H1: initialized
23:39:01 test EURUSD,H1: цикл завершен....
Да уж, непонятно, в чём же дело... Попробуйте тогда так: в разделе импорта #import "user32.dll" добавьте функцию:
CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);
А в конце функции SetMyTimer добавьте строчку: CallWindowProcA(code,0,0,0,0);
И каким нибудь параллельно запущенным индикатором проверьте, генерируется ли тик в этот момент.
А как быть если у меня к примеру 1 бар = 2 тика ))))) В моем случае тики обновляют историю ?
Я же вроде ясно написал: "лог журнала". Так зачем вы мне показываете лог экспертов? Судя по всему я был прав, вы туда и не заглядываете никогда. Не удивлюсь, если у вас половина жёсткого диска уже забита этими логами :)
И не нужно подменять понятия. Обновление истории и эмуляция тика - это разные вещи. Приходящие тики с сервера ведь не обновляют историю (т.е. предыдущие бары). Если бы это происходило, то терминал бы жрал немеряно трафика и ресурсов.
Поэтому вот как-раз непонятно, зачем вам нужно обновление на каждом тике, которое кроме всего прочего обнуляет состояние IndicatorCounted(), а значит необходимо самому проверять всю историю на каждом тике. Это ж сколько ресурсов впустую расходуется.
Лог журнала тоже пуст, но по другой причине. Чистилкой пользуюсь консольной после подкачки истории. У меня свой лог.
Меня лог МТ4 совсем не беспокоит. Метаквоты неоднокрано заявляли, что лог ведётся в последнюю очередь. Он не является приоритетом. Ресурсов не потребляет. Вовремя чистить надо и только.
По поводу IndicatorCounted()... Не пользую. Индикаторы у меня пустышки-подокна для вывода информации из эксперта. Считаю, вредно пользоваться индикаторами в МТ4. Интерфейсный поток тормозят и работают в 3 раза медленнее экспертов.
Выделенное, конечно, верно, но стоит ли так сильно заморачиваться разделением?
Вот лог журнала на 415 обновлений:
03:00:44 Custom indicator Check_UpdateChart EURUSD,M1: loaded successfully
03:00:46 HistoryCenter: synchronize 'EURUSD1'
03:00:46 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:47 HistoryCenter: synchronize 'EURUSD1'
03:00:47 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:47 HistoryCenter: synchronize 'EURUSD1'
03:00:47 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:48 HistoryCenter: synchronize 'EURUSD1'
03:00:48 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:48 HistoryCenter: synchronize 'EURUSD1'
03:00:49 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:49 HistoryCenter: synchronize 'EURUSD1'
03:00:49 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:50 HistoryCenter: synchronize 'EURUSD1'
03:00:50 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:51 HistoryCenter: synchronize 'EURUSD1'
03:00:51 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:51 HistoryCenter: synchronize 'EURUSD1'
03:00:52 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:52 HistoryCenter: synchronize 'EURUSD1'
03:00:55 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:55 HistoryCenter: synchronize 'EURUSD1'
03:00:55 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:55 HistoryCenter: synchronize 'EURUSD1'
03:00:55 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:55 HistoryCenter: synchronize 'EURUSD1'
03:00:56 HistoryCenter: 2 bars imported in 'EURUSD1'
03:00:56 HistoryCenter: synchronize 'EURUSD1'
03:00:57 Custom indicator Check_UpdateChart EURUSD,M1: removed
03:00:59 HistoryCenter: 2 bars imported in 'EURUSD1'
03:01:01 MetaTrader build 438 stopped
По моему, это не имеет значения для тестирования работоспособности индикатора в выходные. Лог можно вручную почистить после работы.
Но вставить одну строку кода в конец start(), всё же, проще, чем вставлять Ваш код. Нет смысла так усложнять.
У меня ХР - вроде работает - потом сворачивает терминал ....
что в коде индикатора - что в коде советника - что сам по себе - результ один - вылет терминала примерно через 15 - 50 секунд ...
так что что то там у Вас недодуМАТО ...
а так идея неплохая ...
А вот как-нибудь похоже для индикатора сделать можно?:
Просто, указывая курсором на тот момент времени, где я хочу увидеть показания индикатора (на тот момент)?
Zhunko, ну так если у вас всё нестандартное (свой лог, своя реализация индикаторов и т.д.), то к чему тогда вы затеяли весь этот разговор? Мы тут вообще-то обсуждаем работу конкретно с МТ4, а не со своими собственными разработками.
Я же в первом посте специально указал, что мой код будет полезен именно в том случае, если стоит задача обойтись без сторонних ДЛЛ, т.е. реализовать самодостаточный советник/индикатор, который использует лишь системные библиотеки. А если вы используете свои собственные разработки, то значит к вам это не относится.
И вообще я не понимаю, зачем "вручную чистить лог после работы", если легче просто не захламлять его. Ведь насколько я понял, вы свои разработки реализуете в ДЛЛ. Тогда что вам мешает установить там такой же таймер, как и я предложил здесь. Только там это займёт всего несколько строчек кода. Но вы почему-то предпочитаете всякие пляски с бубном и чисткой лога. Как-то не по программистки мыслите... Мой код вас видите-ли напрягает, а чистить ежеденевно логи вам не лень :)
У меня ХР - вроде работает - потом сворачивает терминал ....
что в коде индикатора - что в коде советника - что сам по себе - результ один - вылет терминала примерно через 15 - 50 секунд ...
так что что то там у Вас недодуМАТО ...
а так идея неплохая ...
Да, возможно не додумано. Я в ассемблере не большой знаток, так что не судите строго :) Попробую разобраться в чём проблема.