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

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


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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Юлия-Julik, приведённый Вами пример (ld_8 * gd_100), намекает, что советник был декомпилирован до 600 билда терминала, т.е. очень старый и как он будет работать - неизвестно.
Предупреждения можно игнорировать - просто в 600++ билдах проверки результатов операций с ордерами стали обязательными.
Sell OrderModify Error 4109 - Торговля не разрешена. Попробуйте включить разрешение торговать в терминале. Есть кнопочка.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Здравствуйте!

делаю первые шаги в программировании на MQL4, пишу простой советник который отправляет Push notifications когда свеча закрылась выше/ниже средней, но загвоздка в том что после закрытия свечи Нотификейшн отправляется при каждом тике, а мне нужно один раз после закрытия, ну и если через некоторое время в тот же день появляется обратный сигнал тоже присылать только 1 уведомление. Помогите пожалуйста кто знает как это можно сделать (ну или поделитесь кусочком кода :"> )?

Заранее спасибо за помощь.

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

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

загвоздка в том что после закрытия свечи Нотификейшн отправляется при каждом тике

это распространённая логическая задача. решение:
- объявляем переменную на глобальном уровне int next_signal = -1; // направление следующего сигнала
- там где уведомления пишем:
if ( Close[1] > MA && next_signal != 1 ) { next_signal = 1; //уведомление: выше МА }
if ( Close[1] Первое уведомление придёт сразу, а потом как положено. Изменено пользователем 0ll
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день товарищи форумчане!
помогите пожалуйста с вроде бы простой технической задачей. Она от части перекликается с предыдущим вопросом.
я вычисляю сигнал к покупке, вычисляю я его при открытии каждого нового бара.
получил сигнал - ок. (с этим проблем нет. сигнал сохраняю.)
теперь проблема!
***
- Далее мне надо ждать 1-2 (N) свечей для подтверждения сигнала, далее+> ---- в этом и есть вопрос! как запустить функцию, при поступлении сигнала с задержкой на N баров, при том что бы после исполнения задержки и подтверждения сигнала, функции внутри (все дальнейшие, расчеты и выставление ордеров)выполнялись уже все, то есть без повторной проверки условий выше (без новых задержек). а только потом был выход на уровень обратно.
****

даль как обычно - после подтверждения вычислить (sl-pt и так валее) выставить ОТ ЛОЖНЫЙ ордер. и т.д.
Ну и дизактивировать сигнал после выставления ордера.


что опробовано- так это Sleep (N) и дальнейшая проверка на открытие нового бара - не работет.
Просто последовательные проверки открытия N баров. тоже не смог.

Помогите кто может кто может помогите=)

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

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

Добрый день. Подскажите, пожалуйста, такой момент. Советник пишет результаты торговли в txt файл, как сохранять изменения в файле не закрывая его каждый раз?

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

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

Подскажите, пожалуйста, такой момент. Советник пишет результаты торговли в txt файл, как сохранять изменения в файле не закрывая его каждый раз?

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

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

Уважаемые коллеги!
Подскажите пожалуйста, как правильно задать условие для советника:
Если предыдущий ордер закрылся по стопу, то открыть ордер в другую сторону ( то есть перевернуться) ?????

Если можно кусочек кода с комментариями..

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
a_universal
Пишем функцию поиска последнего закрытого рыночного ордера GetLastClosedOrder()

в коде совы пишем вызов:
GetLastClosedOrder(); // поиск и выбор последнего ордера

if ( OrderTicket() > 0 && OrderProfit() {
int newT = 1 - OrderType(); // тип нового ордера - обратный старому
double newL = OrderLots() * 2; // размер лота = 2* размер старого - это Вам решать
OrderSend( ... newT, newL ...);
}


Код функции:
void GetLastClosedOrder()
for ( int i = OrdersTotal()-1; i >= 0; i-- ) //ищем ордер в цикле среди закрытых
{
if ( OrderSelect ( i, SELECT_BY_POS, MODE_HISTORY ) )
{
if ( OrderSymbol() ==_Symbol && OrderMagicNumber()==Magic && OrderType() return; // нашли свой закрытый ордер - выходим
}
OrderSelect(-1, SELECT_BY_TICKET); // снимаем выделение
}


Пока код вставил - устал, что-то не так с редактором сообщений - надо-бы попроще... это-ж форум, а не заповедник графоманов.
Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

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

Всем привет!!!:-H
Помогите написать скрипт который будет считать среднее движение цены по зиг-загу за n-ое количество проходов.
Заранее спасибо!

ТЗ.png

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
lexa.shvetsoff_87 Думаю проще не скрипт писать, а допилить индикатор Зиг-Заг. Там при подтверждении вершины сразу считать среднее. У скрипта нет доступа к индюкам в окне, а вызывать индюк из кода скрипта это ещё тот костыль, имхо.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

lexa.shvetsoff_87 Думаю проще не скрипт писать, а допилить индикатор Зиг-Заг. Там при подтверждении вершины сразу считать среднее. У скрипта нет доступа к индюкам в окне, а вызывать индюк из кода скрипта это ещё тот костыль, имхо.


Не могли бы вы мне помочь в этом?... А то в программировании я пока слабоват(((
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
lexa.shvetsoff_87 ок, помогу. У нас ветка обучения, вот и будем Вас обучать.
Найдите код зиг-зага (который Вам нравится), напишите как хотите считать среднее, подумайте в каком виде это надо отображать, опишите что хотите получить и как использовать.
Ссылка на сообщение
Поделиться на другие сайты

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

Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.

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

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

Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.


ИльяРус, с наступлением нового дня, в цикле перебирайте все свечки по порядку от самой свежей, нулевой, к прошлым свечам. Смотрите время открытия каждой свечи. Как найдете свечу с нужным временем открытия, смотрите ее цену, а дальше уже по потребности с этой ценой работайте.

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

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


Здравствуйте, Коллеги! Помогите, пожалуйста!
Как можно цену свечи прошлых дней найти по времени и поместить в переменную, т.е. выставляю в настройках время(10 час) и сов. работает с ценой открытия 10-часовой свечи каждого прошлого дня.


ИльяРус, с наступлением нового дня, в цикле перебирайте все свечки по порядку от самой свежей, нулевой, к прошлым свечам. Смотрите время открытия каждой свечи. Как найдете свечу с нужным временем открытия, смотрите ее цену, а дальше уже по потребности с этой ценой работайте.

Спасибо! =b Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Спасибо! Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.


Не. iBarShift не подойдет для такой задачи. Там надо одним из аргументов передавать время в формате datetime, а Вы его не знаете. У Вас есть только искомый час, но этого не достаточно. Цикл самое верное.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Спасибо! Пробую сейчас через iBarShift, если не получится, то попробую по вашему методу.


Не. iBarShift не подойдет для такой задачи. Там надо одним из аргументов передавать время в формате datetime, а Вы его не знаете. У Вас есть только искомый час, но этого не достаточно. Цикл самое верное.

От себя добавлю, что встречаются выходные и праздничные дни, котировки имеют разный оффсет (кстати Ваши 10 часов с каким оффсетом?), так что предложение DreamWorks самое эффективное.СсылкаСсылкаСсылкаСсылкаСсылка Изменено пользователем 0ll
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Уважаемые начинающие и гуру кодеры!
мне не приходит на почту ссылка на видео указанное в топе...
подскажите где можно его скачать?

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

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


Здравствуйте!

Мой робот после перезапуска терминала или остановки Интернета перезапускается, удаляет текущие заказы и помещает новые. Как я могу заставить робота продолжить работу с того места, где он ушел?



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

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

Мой робот после перезапуска терминала или остановки Интернета перезапускается, удаляет текущие заказы и помещает новые. Как я могу заставить робота продолжить работу с того места, где он ушел?


Здравствуйте! Все роботы перезапускаются, при этом обязательно отрабатывает функция OnInit(). Вот в неё обычно пишут код, отвечающий за поиск ордеров, которые открыл советник - по паре и магику, заполняются все переменные, восстанавливаются значения индикаторов (если используются). В общем корректный перезапуск - творческий процесс, нужно знать логику робота.
НО, закрывать текущие заказы это слишком - такого быть не должно. Вы сами писали или на заказ?
Ссылка на сообщение
Поделиться на другие сайты

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

Сам писал. На основе мартин и мрежа с уроках. На них как можно добавить, чтобы продолжить работу после перерыва?

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

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

На основе мартин и мрежа с уроках


Прости, я не в курсе этого. Вы подробнее пишите что за заказы? рыночные или отложки. Удаление почему отрабатывает?
Ссылка на сообщение
Поделиться на другие сайты

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

Прости, я не в курсе этого. Вы подробнее пишите что за заказы? рыночные или отложки. Удаление почему отрабатывает?


Удаление работает, потому что значения переменных неверны после перезапуска. В начале комментариев есть курс, в котором есть уроки Мартингейла и Сети. Я думаю, что они подходят для примера перезагрузки после перезапуска. Мне нужно отложки. Если нет, я проверю на рыночные. Я не знал, где написать код восстановления. Я нашел, где получить значения ордера, и я думаю, что я это сделаю. Спасибо за помощь!
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Доброго дня, уважаемые! TMA_Fair TMA без перерисовки
Тема уже почти забыта)) Но всё же.. Не подскажите, почему данный индикатор не отображается на графике? Индюк взят из шапки и с последней страницы. Индикатор, естественно, закидываю куда нужно. Что с ним сделать?)
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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