Бета версия онлайновой книги по программированию на MQL4 - автор Сергей Ковалев (SK.) - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Неделю назад впервые установил и попробовал в работе Meta Trader. Оказалось что этот терминал намного удобнее ранее использованных мной (Румус и Форекс Трейдер). Еще года два назад, когда я узнал про форекс и открыл свой первый демосчёт, меня мучал вопрос, как это всё автоматизировать. Тут открыв терминал, я увидел в разделе почта сообщение Автотрейдинг. И вот я тут))) Интенсивно читаю книгу и надеюсь, что в ближайшее время я напишу свой первый эксперт по своей сложившейся стратегии. Раньше с программированием абсолютно никак не был связан, даже тяжело было представить, что я когда-либо буду изучать программирование))) По ходу чтения возникали вопросы, но они так же исчезали по ходу. Вопрос появился, посмотрел наперёд и остался доволен, т. к. через пару разделов я увидел ответ, вернулся назад чтоб по порядку всё прочитать. Особенно меня привлекла возможность тестирования стратегии на исторических данных и в результате корректировать стратегию.
Вобщем большое спасибо за книгу.
Замечательно. Вы - новый пользователь МТ. И на текущий момент практически ничего не знаете о программировании.
Разрешите Вам предложить: сообщать хотя бы 2 - 3 раза в месяц как у Вас продвигаются дела (а по желанию можно и чаще). Это было бы чрезвычайно интересно.
А пока, если позволите, у меня вопрос. Вот, Вы говорите, что возник вопрос, на который Вы нашли ответ в следующих разделах. Я старался составить текст так, чтобы не допускать такой ситуации. Не могли бы Вы прояснить, о каком вопросе идёт речь?
Неделю назад впервые установил и попробовал в работе Meta Trader. Оказалось что этот терминал намного удобнее ранее использованных мной (Румус и Форекс Трейдер). Еще года два назад, когда я узнал про форекс и открыл свой первый демосчёт, меня мучал вопрос, как это всё автоматизировать. Тут открыв терминал, я увидел в разделе почта сообщение Автотрейдинг. И вот я тут))) Интенсивно читаю книгу и надеюсь, что в ближайшее время я напишу свой первый эксперт по своей сложившейся стратегии. Раньше с программированием абсолютно никак не был связан, даже тяжело было представить, что я когда-либо буду изучать программирование))) По ходу чтения возникали вопросы, но они так же исчезали по ходу. Вопрос появился, посмотрел наперёд и остался доволен, т. к. через пару разделов я увидел ответ, вернулся назад чтоб по порядку всё прочитать. Особенно меня привлекла возможность тестирования стратегии на исторических данных и в результате корректировать стратегию.
Вобщем большое спасибо за книгу.
Замечательно. Вы - новый пользователь МТ. И на текущий момент практически ничего не знаете о программировании.
Разрешите Вам предложить: сообщать хотя бы 2 - 3 раза в месяц как у Вас продвигаются дела (а по желанию можно и чаще). Это было бы чрезвычайно интересно.
А пока, если позволите, у меня вопрос. Вот, Вы говорите, что возник вопрос, на который Вы нашли ответ в следующих разделах. Я старался составить текст так, чтобы не допускать такой ситуации. Не могли бы Вы прояснить, о каком вопросе идёт речь?
Сообщать продвижение дел конечно буду, как в моём положении и без общения)) Надеюсь на конструктивное общение.
Спасибо за внимание.
Пожалуйста, разбивайте текст следующих сообщений на абзацы, т.к. возникают затруднения понять смысл написанного.
Но начав читать книгу меня немного смутила структура построения программы и потом функция int start (), которая повторяется при каждом тике, при этом если во время её выполнения я узнал цену bid, то она записывается в переменную и хранится в ней всё время выполнения, тогда как я узнаю когда цена изменилась и программа может выполнять какие-либо другие действия, основанные на новой цене? Я думал что цену у меня в программе будет обновлять код какого-то цикла, постоянно её запрашивая.
Вы правильно заметили, что для самой возможности работы программы в режиме реального времени нужно периодически получать сведения о факте появления новой цены и саму эту цену.
Действительно, существует 2 способа:
1й способ состоит в том, чтобы запустить в бесконечном цикле какую-то функцию и из неё периодически запрашивать цену.
Но такой способ имеет недостатки:
- если запросы делать часто, то в результате сильно перегружается канал связи и тратятся ресурсы ПК;
- если запросы делать редко, то есть верочтность пропустить новую цену между запросами.
2й способ (принят как основной в MQ-технологии) принципиально отличается тем, что инициатива запуска нужного кода принадлежит терминалу. Терминал получает сведения от сервера, понимает, что пришёл новый тик (факт новой цены и сама цена), и на этом основании терминал запускает функцию start(). Всё это изложено в разделе Программа на MQL4.
Теперь у меня возник вопрос такого плана: я понял что при исполнении функции init у меня будет вызываться функция подсчёта устраиваемой меня цены открытия ордера, а также подсчёт размера лота, исходя из данных балланса на счёте; после её завершения начнётся исполнение ф-ции start..
Неправильно. init() и start() - это специальные функции. Они вызываются клиентским терминалом в соответствии со своими собственными свойствами (а проще говоря в соответствии с правилами, условиями, при которых они вызываются для исполнения). Об этом написано в параграфе Специальные функции . Функция init() исполняется один раз, при загрузке программы в окно. А start() вызывается на каждом тике. Это очень удобно. Пришёл тик, принёс новую цену = терминал запускает на исполнение start(), которая и исполняется пока не исполнится. Вот в неё и надо вставить все расчёты - и вычисление количества лотов, и условия открытия/закрытия ордеров и всё другое.
далее самое для меня пока загадочное, это где мне писать код ожидания цены "закрытия" ордера и возврат к началу, т. е. опять подсчёт устраиваемой цены для открытия, ожидание этой цены и т. д. Заглянул наперёд в разделы, вроде что-то увидел в названиях, т. е. вроде будет ответ на этот мой вопрос. Пока дочитываю читаю раздел Открытие и установка ордеров.
Судя по тому, какие вопросы у Вас возникают, Вам пока не надо писать программы и читать то, что Вы сейчас читаете, тоже не нужно. В этой ситуации настоятельно рекомендуется начать читать книгу сначала. Последовательно и без забегания вперёд. А по ходу дела все представленные примеры собственноручно набирать в МЕ и исполнять на своём ПК. И не переходить к следующему разделу до тех пор, пока не будет достигнута полная ясность по каждой букве кода. Помотрите понятия Тик, Управление, Функция, Специальная функция, Оператор и вообще время от времени заглядывайте в Словарь терминов.
Сообщать продвижение дел конечно буду, как в моём положении и без общения)) Надеюсь на конструктивное общение.
Спасибо за внимание.
Надеюсь, что Вы правильно воспримете совет и последуете ему.
далее самое для меня пока загадочное, это где мне писать код ожидания цены "закрытия" ордера и возврат к началу, т. е. опять подсчёт устраиваемой цены для открытия, ожидание этой цены и т. д. Заглянул наперёд в разделы, вроде что-то увидел в названиях, т. е. вроде будет ответ на этот мой вопрос. Пока дочитываю читаю раздел Открытие и установка ордеров.
Судя по тому, какие вопросы у Вас возникают, Вам пока не надо писать программы и читать то, что Вы сейчас читаете, тоже не нужно.
Быстро накрапал в ворде, вот:
Init
Start
Устанавливаю максимальное количество открытых ордеров = 1;
проверяю сколько открыто ордеров;
если 1 открыт, то вызываю функцию закрытия ордера,
если не открыто ни одного, вызываю функцию «расчёт цены и кол-во лотов»
--------------------------
Необходимые расчеты выгодной цены покупки и продажи и расчет количества лотов;
--------------------------
запрос текущей цены;
если текущая >= выгодной цене для продажи,
то открыть ордер продажи равный количеству уже определённых лотов;
если нет, то сравнить текущую с выгодной ценой покупки;
ели текущая <= выгодной цене покупки,
то соответственно открыть ордер покупки;
--------------------------
вызов функции закрытия ордера;
return
deinit
Правильно понял?Правильно понял?
Ну, в целом правильно:) Поздравляю Вас. Это всегда приятно - ещё что-то понять.
Всё же, последуйте моему совету: необходимо вернуться к началу. И идти от начала без пропусков и перескакиваний, методично исполняя на своём ПК все предлагаемые в учебнике коды.
В книге приводится интересный индикатор ROC - индикатор скорости изменения цены (https://book.mql4.com/ru/samples/iroc). Я понимаю, что эта книга - учебник, и автор не обязан давать ни полу-, ни даже четверть-граальные исходники, но идея индикатора уж больно хороша, и я слегка подшаманил, чтобы запаздывание было ещё слабее.
Два раза пропущен (исчез при создании ХТМЛ файла?) символ деления.
Подлинкованный в тексте файл индикатора нормальный.
Ну, в целом правильно:) Поздравляю Вас. Это всегда приятно - ещё что-то понять.
Всё же, последуйте моему совету: необходимо вернуться к началу. И идти от начала без пропусков и перескакиваний, методично исполняя на своём ПК все предлагаемые в учебнике коды.
Да, согласен, очень важно видеть и чувствовать любой результат прочитанного, именно тогда он фиксируется в долговременной памяти, тем более под воздействием эмоционального наполнения, появляется больше одной ассоциации:) Кстати, хотел еще подчеркнуть, чтобы подстегнуть интерес, требуется возвращатся или использовать те главы которые наиболее важны, далее интерес сам приведет к цели и расширению круга познаний. Самое сложное в нашем положении, понять, что именно интересно по ходу, выработать порядок, который будет наиболее эфективен, так как мы видим эфективность всего, чем владеем. Я бы соотнес работу ассоциативной памяти с управляемой памятью, где распределенный участок существует до тех пор, пока есть хотя бы одна ссылка(ассоциация) на него, чем больше связей, тем больше вероятность, что участок не будет высвобожден, гарантируя тем самым его использование и последующую пользу. В связи с этим для закрепления прочитанного, требуется постоянно пополнять запас ассоциаций.
P.S.: Извините, если перегнул палку:)
Два раза пропущен (исчез при создании ХТМЛ файла?) символ деления.
Подлинкованный в тексте файл индикатора нормальный.
Да, есть такое. В исходных кодах пока ошибок не выявлено, а текстовые коды почему-то местами порченные. Будем разбраться.
P.S.: Извините, если перегнул палку:)
Мне и так туговато циклы давались (буду ещё не раз к этим разделам возвращаться), а тут ещё и овцы эти.
Просто на мой взгляд, если рассмотрен конкретный пример из трейдерства (почти рейдерства:)), ладно, трейдинга, то если читающий встретит пример похожий на какую-либо его идею (которую он пока не знает как реализовать), он будет с огромным интересом рассматривать этот пример и думать как его видоизменить и подстроить для реализации своей идеи (думаю понятно о чём я говорю).
У меня такой пример был, меня интересовало каким образом мне открыть ордер на сумму 1/3 от балланса. Вы не представляете какие математические операции были у меня в голове, для того чтоб преобразовать 1/3 в долларах так, чтоб в итоге у меня вышла цифра в лотах (0.1 или 3.5 лотов...). И как же я был рад, когда увидел пример openbuy.mq4, открывающий ордер Buy, стоимостью 35% от суммы свободных средств, с некоторыми заданными значениями стоп-приказов. Я его переглядел вдоль и поперёк, вник в каждую строчку, что, почему, куда. Посмотрел что за стандартные функции в нём используются ( MathFloor, MarketInfo. ....).