Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Искать все отложки как-то не подумал)

bool пишу, чтобы эдитор не выдавал предупреждения типа return value of "OrderSelect" should be checked
Смотрел урок по переносу на новые билды, но писать else Print"" (что-то такое) как-то не очень удобно.
Хотя, если эти предупреждения, думаю, можно игнорировать просто

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar, ну теперь понятно для чего вам нужны булевые переменные, а то когда просматриваешь код, интуитивно начинаешь искать к чему они ещё привязаны и в каких зависимостях ещё участвуют, к тому же нет уверенности, что перед тобой весь код. Насколько понимаю, то предупреждения игнорировать нельзя, потому как при компиляции не произойдёт сборка файла ex4.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Насколько понимаю, то предупреждения игнорировать нельзя, потому как при компиляции не произойдёт сборка файла ex4.

Предупреждения можно игнорировать. всё компилируется. неоднократно проверял.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Насколько понимаю, то предупреждения игнорировать нельзя, потому как при компиляции не произойдёт сборка файла ex4.

Предупреждения можно игнорировать. всё компилируется. неоднократно проверял.

Еще хороший способ добавить #property strict чтобы потенциально "слабые" места найти
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ну значит мне тогда показалось, просто видимо из-за того, что была попытка внести изменения в чужой код без правки предупреждений, тогда компилятор не хотел собирать код. Видимо это как бы защита авторских прав, но при этом, если скопировать полностью код и внести его в новый проект, то ни каких проблем.

nixxer, а можно поподробней, куда и как его добавить, а так же что это даст в итоге?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


nixxer, а можно поподробней, куда и как его добавить, а так же что это даст в итоге?

Я думаю Никсер не будет против. Почитай здесь.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
0ll, то есть я правильно понимаю, #property strict нужно прописать в самом начале, за пределами специальных функций и это позволит выявить при компиляции все возможные несоответствия, которые могут возникнуть в связи с последними изменениями в MQL4?

Ещё спрашивал уже, но мне так ни кто и не подсказал, в учебнике описано как-то не однозначно. Как всё же правильно объявить глобальную переменную? Вот пример из учебника, я так понял она должна быть отделена строчками, ну по сути как пользовательская функция, при этом не важно вверху или внизу, главное за пределами всех функций. Правило присвоенного типа, такое же как и с обычными переменными, в зависимости от того что нам нужно. Можно ли их тоже объявлять через запятую если нужно несколько или каждая должна иметь свой блок?

//--------------------------------------------------------------------
int Tick; // Глобальная переменная
//-------------------------------------------------------------------- Изменено пользователем chistaia-rodina
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


0ll, то есть я правильно понимаю, #property strict нужно прописать в самом начале, за пределами специальных функций и это позволит выявить при компиляции все возможные несоответствия, которые могут возникнуть в связи с последними изменениями в MQL4?

Да, сов. верно.

Правило присвоенного типа, такое же как и с обычными переменными, в зависимости от того что нам нужно. Можно ли их тоже объявлять через запятую если нужно несколько или каждая должна иметь свой блок?

Да точно также как и с локальными, можно через запятую и с присвоением начальных значений и массивы - всё до кучи и всё работает. Отделять не нужно, главное за пределами функций (когда Вы спрашивали - думал про переменные уровня терминала, поэтому не писал).
Пример из моей проги:
float C, H1, L1, HF=0, LF=0, prcExt, Pw, kf_Acu, Count[];
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Привет. Сегодня первый день изучаю "язык". Сергею - БОЛЬШОЕ Спасибо!!!
Писал "Martin" вслед за объяснениями, в конце получил 23!!!!! ошибки, проковырялся несколько часов и сдался. Прошу помощи у тех кто сам помнит как начинал)) в приложении картинка моего "блина". Спасибо.

Martin1.png

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Дмитрий_2008, ну Вы тогда хотя бы код выложите посмотреть. На вскидку, похоже проблемы с аккуратностью и внимательностью.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
chistaia-rodina оказался прав...
Дмитрий_2008 основная ошибка - невнимательность. Редактор не считает эквивалентными названия переменных, написанных на разных регистрах.
Поправил. Оставшиеся предупреждения можно игнорировать или исправить (получить или обработать возвращаемые функцией значения, например: bool res = OrderModify())

Martin.mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

А вы попробуйте вывести в Print или Alert TimeToString(OrderCloseTime()). Думаю вопросы отпадут.
Формат данных datetime включает в себя дату и время.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Всем привет! :-H

Передо мной такая задача: получить все значения с индикатора фракталов за предыдущий день. То есть советник должен знать ценовые значения всех максимумов и минимумов предыдущего дня, которые были отмечены индикатором фракталов. Индикатор беру не стандартный, wlxfractals называется, но думаю, это не суть, главное , понять принцип того, как эти фракталы искать и запоминать.
Или же можно находить экстремумы свечей, которые были отмечены индикатором, но для этого им, наверное, нужно присваивать какой-нибудь порядковый номер?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar
В индюке скорее всего 2 буфера - с миним. и макс., там как-раз значения экстремумов. Их нужно переписать в массив типа double или float. Чтоб подсказать оптимальное решение нужно знать что Вы дальше с этим планируете делать. Искать так:
- начало периода YstDay0 = iTime(NULL, PERIOD_D1, 1);
- конец периода YstDay1 = iTime(NULL, PERIOD_D1, 0);
- перебираешь бары на рабочем ТФ и проверяешь буфера индикатора
- если буфер имеет значение, то проверяешь дату текущего бара
- если попадает в рабочий период - пишем значение в массив (для этого ещё счетчик надо)
- всё

Кстати все свечи пронумерованы
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Цитата

Чтоб подсказать оптимальное решение нужно знать что Вы дальше с этим планируете делать.



Я хочу использовать эти значения в качестве уровней поддержки/сопротивления для следующего торгового дня, и в одном из условия открытия ордера проверять, находится ли цена в диапазоне такого уровня (диапазон +/- 5 пунктов, допустим, от значения цены на экстремуме свечи, которую индикатор отметил как фрактальную).
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar Ну, я так и думал. После заполнения массива его нужно отсортировать. Тут ещё такая тонкость есть - будут моменты, когда разные фракталы почти на одном уровне - надо это как-то отсортировывать. имхо более свежий уровень надо оставлять... Тема "как торговать уровни" слишком обширна для этого раздела...
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Цитата

перебираешь бары на рабочем ТФ и проверяешь буфера индикатора



не понимаю, как проверить буфер индикатора(

можно ли так получить значения low последних 30 баров? или надо по-другому начинать
for (int i =0, i{
double [ i ] = Low[ i ];
}
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


не понимаю, как проверить буфер индикатора(

У фрактального индюка в буфере либо "0" либо цена фрактала. т.е. если не "0" то значение буфера в массив (как-то так). Могут быть 2 буфера для верха и низа.


можно ли так получить значения low последних 30 баров? или надо по-другому начинать
for (int i =0, i{
double [ i ] = Low[ i ];
}

Вы массив опишите правильно (типа: double мой_массив[30]; ), потом мой_массив[ i ] = Low[ i ]; и будет работать. (только если Вам нужен лоу 0-бара) Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

В этом индикаторе два буфера : 0 и 1 - для нижних и для верхних фракталов, проблема в том, что я не знаю как записать буфер в массив и как проверить его значение, так как не совсем понимаю чем является буфер...

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Буфер это тот-же массив, только он находится в памяти индюка, а мы хотим получить его значения в сове...
значения этого массива следует получать через iCustom (если индюк не стандартный МТ) перебирая их в цикле, типа:
- сначала находим диапазон рабочих баров СтартБар и СтопБар (вчерашний день)
double МИ0, МИ1, массив[100];
int и, м=0;
фор (и = СтартБар; и МИ0 = iCustom(..., и, ... , 0);
МИ1 = iCustom(..., и, ... , 1);
если (МИ0 > 0 ) { массив[м] = МИ0; м++; }
если (МИ1 > 0 ) { массив[м] = МИ1; м++; }
}
Можно обрезать хвост массива по значению м. (через ArrayResize)
Потом сортировка ArraySort(массив);
всё.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ребят, подскажите как реализовать смещение по GMT, которое в дальнейшем во внешних параметрах задаётся.

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...