Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да уж, непонятно, в чём же дело... Попробуйте тогда так: в разделе импорта #import "user32.dll" добавьте функцию:
CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);
А в конце функции SetMyTimer добавьте строчку: CallWindowProcA(code,0,0,0,0);
И каким нибудь параллельно запущенным индикатором проверьте, генерируется ли тик в этот момент.
ну вроде что то изменилось, в логе теперь так:
10:42:52 test EURUSD,H1: loaded successfully
10:42:54 test EURUSD,H1: function 'CallWindowProcA' call from dll 'user32.dll' critical error c0000005 at 02C310A8.
10:42:54 test EURUSD,H1: initialize
а тики-то где? ;)
Zhunko, ну так если у вас всё нестандартное (свой лог, своя реализация индикаторов и т.д.), то к чему тогда вы затеяли весь этот разговор? Мы тут вообще-то обсуждаем работу конкретно с МТ4, а не со своими собственными разработками.
Я же в первом посте специально указал, что мой код будет полезен именно в том случае, если стоит задача обойтись без сторонних ДЛЛ, т.е. реализовать самодостаточный советник/индикатор, который использует лишь системные библиотеки. А если вы используете свои собственные разработки, то значит к вам это не относится.
И вообще я не понимаю, зачем "вручную чистить лог после работы", если легче просто не захламлять его. Ведь насколько я понял, вы свои разработки реализуете в ДЛЛ. Тогда что вам мешает установить там такой же таймер, как и я предложил здесь. Только там это займёт всего несколько строчек кода. Но вы почему-то предпочитаете всякие пляски с бубном и чисткой лога. Как-то не по программистки мыслите... Мой код вас видите-ли напрягает, а чистить ежеденевно логи вам не лень :)
Лог у меня забивается только после подкачки истории. Бывает это по средам и субботам. Забыл, что это такое из-за его автоматической чистки.
Автономное обновление графиков давно сделал. Реализовано здесь. Один раз функцию из любой программы запускаешь и больше ничего делать не надо. Даже при всех выгруженных программах MQL4 обновление продолжается, отслеживается открытие и закрытие графиков.
Альтернативу Вашему коду предложил не из-за того, что ей пользуюсь. Это простое решение этой проблемы, исходя из поставленной Вами задачи. Одна строка кода значительно проще, чем Ваш код. Каждый день чистить логи не надо. Только в выходные. В остальное время этот код не нужен. Это рационально. Лог, как не крути, чистить надо в любом случае. Так что, это не причина.
======================
Запустил Ваш код. Не работает на Window 7.
Может избавится от функции AddBytes()? Инициализировать массив так:
Покороче будет. Всё же, это один раз делается.Лог у меня забивается только после подкачки истории. Бывает это по средам и субботам. Забыл, что это такое из-за его автоматической чистки.
Автономное обновление графиков давно сделал. Реализовано здесь. Один раз функцию из любой программы запускаешь и больше ничего делать не надо. Даже при всех выгруженных программах MQL4 обновление продолжается, отслеживается открытие и закрытие графиков.
Альтернативу Вашему коду предложил не из-за того, что ей пользуюсь. Это простое решение этой проблемы, исходя из поставленной Вами задачи. Одна строка кода значительно проще, чем Ваш код. Каждый день чистить логи не надо. Только в выходные. В остальное время этот код не нужен. Это рационально. Лог, как не крути, чистить надо в любом случае. Так что, это не причина.
======================
Запустил Ваш код. Не работает на Window 7.
Может избавится от функции AddBytes()? Инициализировать массив так:
Покороче будет. Всё же, это один раз делается.Да, разумеется мой выложенный код - это просто исходник, чтоб был понятен смысл, а использовать его конечно удобней уже в упакованном виде ...если конечно не понадобится его потом редактировать :) Но как выясняется, компилировать его пока рано, т.к. у многих он почему-то не работает :) Хотя у меня он отлично работает и в XP, и в 7, ничего не вылетает, хотя гонял его на протяжении часа. Прям мистика какая-то...
Одна строка кода значительно проще, чем Ваш код. Каждый день чистить логи не надо. Только в выходные. В остальное время этот код не нужен. Это рационально.
Лично для вас может это и не критично, если у вас параллельно работает "чистилка логов". Т.е. у вас там своя кухня. Но мы то говорим об общем случае. Представьте обычного пользователя, который не занимается подобными танцами с бубнами. Тогда получается, что для нормальной полноценной работы с вашим индикатором ему понадобится ещё и "чистилка логов". Т.е. целый комплект из нескольких файлов. А это, согласитесь, уже гораздо больше, чем размер моего кода ;) Так что насчёт рациональности и лаконичности, я считаю, Вы не правы. Особенно если брать мой код уже в упакованном виде, типа как вы предложили. Это конечно не одна строчка, но зато к нему уже не требуются никакие прочие примочки, т.е. это уже законченный продукт.
Лог, как не крути, чистить надо в любом случае
С чего бы вдруг? Если у меня он ничем не засоряется, так от чего мне его очищать то?
Алексей, чистилка может быть не обязательно автоматической. Например, правой кнопкой мыши на папке и выбрать "очистить папку". Делать это после экспериментов по выходным.
За год накапливается 365 файлов в экспертах и журнале. Т.е. 730 файлов. Это чистить не надо? Странно такое слышать. Не засоряется у Вас из-за того, что Вы ничего не делаете. При ежедневной работе логи сильно растут в размере.
Алексей, чистилка может быть не обязательно автоматической. Например, правой кнопкой мыши на папке и выбрать "очистить папку". Делать это после экспериментов по выходным.
За год накапливается 365 файлов в экспертах и журнале. Т.е. 730 файлов. Это чистить не надо? Странно такое слышать. Не засоряется у Вас из-за того, что Вы ничего не делаете. При ежедневной работе логи сильно растут в размере.
Ну в приницпе да, согласен, что после экспериментов обычно их надо очищать. Но мы ж говорим не только об экспериментах. Индикатор ведь создаётся в конечном счёте для работы, а не для экспериментов. Так вот если уже отлаженный индикатор в процессе своей работы будет продолжать засорять логи, то это уже не правильно.
А вообще что касается удаления старых логов - это уже вопрос личных предпочтений. У меня например уже возникала необходимость отыскать какую-то инфу в логах годичной давности. Так что я их не удаляю. А особо старые (больше года) просто архивирую. Ну т.е. речь идёт о логах, связанных непосредственно с трейдингом, а не со всякими экспериментами.
Ну в приницпе да, согласен, что после экспериментов обычно их надо очищать. Но мы ж говорим не только об экспериментах. Индикатор ведь создаётся в конечном счёте для работы, а не для экспериментов. Так вот если уже отлаженный индикатор в процессе своей работы будет продолжать засорять логи, то это уже не правильно.
Ну вообще генерация тиков бывает необходима и в будние дни. Вы видимо рассматриваете советник/индикатор, который использует лишь котировки своего символа. Но в общем случае ведь анализируемых символов может быть несколько, и по всем ним нужно оперативно получать свежие данные. Конечно можно просто запустить его на каком-то ликвидном инструменте, например EURUSD, где тики приходят часто... но всё-же это не панацея, да и не очень удобно может быть.
В любом случае, когда хочется увидеть результат раньше, чем поступил тик.
Т.е., - в исследовательских целях.
Я понял, в чём была проблема. Массив то нужно объявлять на глобальном уровне, а не на локальном.
Выкладываю исправленный вариант. Я тут заодно сократил код. А тот вариант, который предложил Zhunko, хоть и короче этого на 3 строчки, но уж слишком закручен и неудобен для восприятия алгоритма, так с ходу и не поймёшь что делает тот код, вдруг там какой-то вирус :) Да и не гибок совершенно. Так что, думаю, не стоит впадать в крайности ради сокращения кода.
Ну вообще генерация тиков бывает необходима и в будние дни. Вы видимо рассматриваете советник/индикатор, который использует лишь котировки своего символа. Но в общем случае ведь анализируемых символов может быть несколько, и по всем ним нужно оперативно получать свежие данные. Конечно можно просто запустить его на каком-то ликвидном инструменте, например EURUSD, где тики приходят часто... но всё-же это не панацея, да и не очень удобно может быть.
Хоть один случай для примера?
Сколько пишу и пользую, ниразу не понадобилось, кроме выходных.
Эксперт + индикатор. Это решается зацикливанием эксперта. Результат тот же, что у Вас. Чтобы получать данные вовремя, достаточно реагировать на изменение времени сервера. Для этого WinAPI не нужно.
Единственный случай, когда это нужно, это запуск старта эксперта в выходные. Даже это можно реализовать той строкой, что привёл выше. Только для эксперта.