Субботник по наполнению FAQ (часто встречающиеся вопросы). Поможем товарищам! - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
обещался, начну с самого простого)
Вопрос: MQL неправильно производит арифметические операции? Почему при делении одного числа на другое получается 0?
Ответ:
Скорее всего, вы написали выражение вида
объявив при этом переменные a и b как целочисленные:
int a,b;
В этом случае компилятор языка MQL интерпретирует значок "косая черта" как операцию "целочисленное деление". Таким образом, даже если до появления в коде выражения (1) переменным a и b присваиваются какие-либо значения, пусть даже нецелые, в переменную c все равно будет записан ответ "число b умещается в числе a столько-то целых раз". А это, в свою очередь значит, что если до вычисления выражения (1) a было меньше, чем b, то его результат будет равен нулю, причем независимо от типа переменной c (она в приведенном примере может быть и double).
Описанная ошибка довольно часто является причиной случаев "неправильного" поведения программы в терминале - "неизвестно откуда берущегося" сообщения divide by zero в логах экспертов, неотображения одной или нескольких линий индикатора в окне терминала и др.
Решение проблемы:
исправить в объявлении переменных тип данных на тот, который соответствует планируемым к использованию операциям:
double a,b;
Ответ: Числа 3 и 2 в этом выражении представляют собой целые числа. Целое число не делиться без остатка. Для того, чтобы получить результат 1.5 необходимо указать, что делимое является числом с плавающей точкой:
* * *
Вопрос: Почему выражение вычисляется неправильно?
Ответ: У переменных с плавающей точкой ограниченное количество знаков после запятой. Из-за этого, в процессе вычисления, значения могут незначительно искажаться. После вычисления выражения, перед сравнением чисел с плавающей точкой, их необходимо нормализовать до уровня требуемой точности:
* * *
Вопрос: Как в советнике получить значение пользовательского индикатора?
Ответ: Для этого имеется функция iCustom().
* * *
Вопрос: С чего начать изучение MQL4?
Ответ: В редактор MetaEditor встроено очень подробное справочное руководство (Открыть MetaEditor - Главное меню - Вид - Навигатор - Словарь).
В комплект терминала входит два советника MACD Sample и Moving Average, практическую работу можно начать с анализа их кода.
Кроме того, на mql4.com имеется учебник, большое количество статей и всякого разного кода.
Ответ: Функциями Print() и Alert() выводится только четыре знака после зяпятой. Если нужно больше, нужно преобразовать число double в string функцией DoubleToStr().
Вопрос: Советник выводит функцией Print() большое количество сообщений, но в тестере больше половины сообщений куда-то пропадает.
Ответ: При тестировании, при большой частоте вывода в журнал, часть сообщений не выводится во вкладку "Журнал", но все сообщения можно увидеть в лог файле тестера после тестирования. Файл находится в папке tester/logs.
Соберу в FAQ только вечером, когда приеду.
Предложение к модераторам, и желающим оказать минимальную помощь.
Согласитесь, что возможностей форума недостаточно для структурированной подачи информации, её обработки и поиска. Вижу единственный выход - создание наиполнейшего CHM мануала, на базе которого потом можно будет создать целый раздел на форуме.
Для начала я создал структуру справки.
Она поделена на 3 больших раздела.
1) КАК. в этом разделе описываются упреждающие ответы на возможные вопросы. Например как получить данные индикатора, как закрыть все ордера, и т.д. также в этом разделе находится большая систематизированная база функций (аналоги функций Кима). И главное - прмеры готовых выполненных примитивных ТЗ с подробным объяснением кода и коментариями. Это очень сложный раздел, так как требует повышенной систематизации знаний и анализа. Будет наполнятся в последнюю очередь.
2) ПОЧЕМУ. в этом разделе описываются появившиеся частые вопросы новичков (их примеры красиво продемонстрировал alsu и integer в этой ветке)
3) ГДЕ. в этом разделе находится в основном ссылки на то, где что искать или лежит. Описывать не буду в общем смотрите сами.
Архив готовой chm-структуры прикладываю (скачайте внизу поста)
1. Структура мануала
2. Демонстрации возможностей - перейдите по ссылке "Где: Полезные ссылки -> Учебник MQL4"
Дальнейшие действия видятся следующие:
1. Нужны участники-фрилансеры для наполнения подразделов. То есть по сути от них необходимы продуманные вопросы и детальные ответы с подробным пояснением, набором перекрестных ссылок и т.д. (по тому шаблону поста который предложен на первой странице темы FAQ).
2. Все созданые вопросы для подраздела собирает куратор по данному подразделу (1-2 человека). Они обрабатывают их, приводят в общий стиль и формируют перекрестные ссылки по необходимости Это позволит иметь у каждого подраздела своего хозяина, и не будет каши в базе, будет один стиль и шаблон ответа.
Например раздел "Где" поделен на 4 подраздела: Вопросы по тестеру, терминалу, форуму, полезные ссылки. На каждый подраздел достаточно по 1 человеку. Они полностью займутся сортировкой приходящей базы знаний от фрилансеров, которую посчитают нужной, а также все предложения, которые возможно будут поступать от других участников соседних разделов. Ну и конечно они сами должны принимать активное участие в наполнение базы и создания вопросов.
3. По мере заполнения подразделов - они передаются сборщику (например мне). Необходимо собирать их в один файл chm и держать все в одном стиле. Создавать дополнительные перекрестные ссылки, индексировать, добавлять ключевые слова для поисковых запросов.
Подразделы могут быть пересортированы или расширены по предложению куратора и согласованию новой структуры со сборщиком.
Итог:
Участникам: Милости прошу к нашему шалашу. :) желающие на должность куратора подраздела и те, у кого уже есть что создать - скидывайте свои посты-ответы сюда.
Модераторам: Материала будет много. Прошу не допускать обсуждения и отвлеченных, пустых постов в данной ветке. Также необходимо будет после переноса поста в общую базу - удалять посты участников для облегчения работы секции.
Кураторам: Файл справки создаётся в WinCHM 4.17 (кому надо пишите в личку). Требования к именам и расположению файлов:
- структура папок должна в точности повторять структуру справки
- все имена файлов/папок должны даваться только на английском языке в осмысленных фразах
- пример текущей базы, которую "компилирует" WinCHM в архиве
sergeev:
...1) КАК. в этом разделе описываются упреждающие ответы на возможные вопросы. Например как получить данные индикатора, как закрыть все ордера, и т.д. также в этом разделе находится большая систематизированная база функций (Кима и т.д.). И главное - прмеры готовых выполненных примитивных ТЗ с подробным объяснением кода и коментариями. Это очень сложный раздел, так как требует повышенной систематизации знаний и анализа. Будет наполнятся в последнюю очередь.
...
Алексей, все функции Кима по работе с ордера очень сомнительны по надежности и точности своей работы. Вы тоже на них советников клепаете?
Алексей, все функции Кима по работе с ордера очень сомнительны по надежности и точности своей работы. Вы тоже на них советников клепаете?
Если честно, то кимовские практически не видел нигде кроме как в рекомендациях на этом форуме. В описании раздела я их привел только для примера, чтоб понимали о чем речь. И не уверен, что кимовские войдут в мануал в своем коде. Будет взята только идея и отработана в общий стиль.
Раздел КАК вообще самый серьезный. Им должны заняться максимум 2-3 человека, так как все разделы КАК - это подведение к последнему разделу - "Примеры ТЗ и их реализация", в котором будут показаны все возможные варианты и использование комбинаций всех предыдущих функций разделов.
Вопрос: Как сравнить два действительных числа тип "double" ?
Ответ: