Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите, пожалуйста, как теперь запустить советник на выходных для отладки, т.е. как эмулировать событие NewTick? Раньше (в 509 билде) слал скриптом такое сообщение:
PostMessageA(WindowHandle(Symbol(), 0), RegisterWindowMessageA("MetaTrader4_Internal_Message"), 2, 1);
но теперь это не срабатывает.
Теперь в MT4 строки юникодные. Только очень ленивые об этом ещё не знают.
Используйте PostMessageW(..) и RegisterWindowMessageW(..)
Ответ ожидаемый, но неправильный. Про то, что строки теперь юникодные, я знаю, менял функции на "_W", событие от этого не появляется.
Кстати, с эмуляцией события calculate для индикаторов и ansi-функция справляется:
PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, NULL);
Ответ ожидаемый, но неправильный. Про то, что строки теперь юникодные, я знаю, менял функции на "_W", событие от этого не появляется.
Кстати, с эмуляцией события calculate для индикаторов и ansi-функция справляется:
PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, NULL);
Тады извиняюсс. Ну раз грамотный, могу присоветовать другую схему для работы на выходных - по таймеру.
Переносите весь код из OnTick() в другую функцию, её и вызывайте (в выходные из OnTimer, в торговые дни из OnTick() ).
ЗЫ. Сделал ещё раз - заработало. Млин... Каюсь, посыпаю голову пеплом.
Чего сделал-то? :) Ты колись давай до конца, потомкам пригодится. ;)
Что было не так и как исправил.
Дык ещё раз запустил юникодный SendMessage. Что делал не так до этого - теперь уже не узнать. ))) Да и не важно это, важно, что теперь работает. )
SendMessageW(WindowHandle(Symbol(), 0), RegisterWindowMessageW("MetaTrader4_Internal_Message"), 2, 1);
В новом билде(610) не которые функции не обрезают передаваемый текст, а просто его обнуляют
Если записывать текст в графический объект OBJ_LABEL, старой функцией ObjectSetText:
ObjectSetText("sNameObj", "Test test test test test test test test test test test test test test");
Данный текст по длине не обрежется, он не появится на экране вообще, и при этом даже ошибка не сгенерируется.
А вот новая функция ObjectSetString для mql4, текст обрежет нормально:
ObjectSetString(0, "sNameObj",OBJPROP_TEXT, "Test test test test test test test test test test test test test test");
Такие же проблемы обнаружены при записи комментария при открытии отложенных ордеров, - если комментарий длинный он не обрезается – он просто не записывается.
И неплохо бы к справочной информации указывать максимальный размер полезной длины строк передаваемых в такие функции. А то эти все размеры макс. длин строк приходится получать экспериментальным путем.
В новом билде(610) не которые функции не обрезают передаваемый текст, а просто его обнуляют
Если записывать текст в графический объект OBJ_LABEL, старой функцией ObjectSetText:
ObjectSetText("sNameObj", "Test test test test test test test test test test test test test test");
Данный текст по длине не обрежется, он не появится на экране вообще, и при этом даже ошибка не сгенерируется.
А вот новая функция ObjectSetString для mql4, текст обрежет нормально:
ObjectSetString(0, "sNameObj",OBJPROP_TEXT, "Test test test test test test test test test test test test test test");
Такие же проблемы обнаружены при записи комментария при открытии отложенных ордеров, - если комментарий длинный он не обрезается – он просто не записывается.
И неплохо бы к справочной информации указывать максимальный размер полезной длины строк передаваемых в такие функции. А то эти все размеры макс. длин строк приходится получать экспериментальным путем.
В старом языке позволялось писать return; в новом return должен содержать значение, даже если это значение никому не нужно. Правильно писать return(0); в коде это повторяется 12 раз.
Откуда у вас такие сведения, вот что написано в новом справочнике:
Откуда у вас такие сведения, вот что написано в новом справочнике:
От туда откуда Вы не полный текст представляете.
Все остальные варианты должны возвращать значение. В советнике из учебника именно этот вариант.