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

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


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

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

Доброе время суток. Возник еще один вопросик. К примеру мы запустили эксперта на оптимизацию, при каждой ли итерации ( в смысле прохода с новыми входными параметрами ) вызывается метод OnInit бот каждый раз переинициализируется?

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

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

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

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

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

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

Перейти

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

Перейти

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

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано
Qj по идее инит должен отрабатывать. можно проверить косвенно с помощью ММ - в Ините менять существенно лот в зависимости от одного оптимизируемого параметра, например если больше 5, то лот*10.
Если бот не сильно сливной, то данные прогоны должны сгруппироваться.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Уважаемые программисты, можете скинуть наглядный код того как узнать значение 2го хая, вершины ZigZag. Не второго экстремума, а 2й вершины?!

ScreenShot.png

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

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

Дык, они же идут по-очереди (вершины и низины), если Вы узнали 1-ю вершину ищите через один экстремум.

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

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

У Вас должен быть цикл по барам в поисках значения цены в буфере инд. Зиг-Заг. а в цикле считаете экстремумы - Вам нужен 0 и 2 экстремум, если счётчик = 0 , то это 1-я вершина, если счётчик = 2, то вторая...
Счетчик описывается так: int cn = 0;
Далее в цикле по барам:
for (.....)
{
if (ZigZag > 0) // нашли экстремум
{
if (cn == 0) // первая вершина
if (cn == 2) // вторая вершина
// Вам только надо разбираться вершина или низина, если последняя - низина, а нужны вершины, то счетчик нужно уменьшать на 1.
cn++;
}
}

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

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

на сколько я понял, таким образом мы узнаем значение перелома 3го зигзага, где на скрине отображена первая фиолетовая горизонтальная линия, но она ниже первой вершины, как и следующий зигзаг, а как по счетчику добраться до второй вершины, которая будет хоть чуть больше первой вершины, и пропускать счетчик будет значения переломов, которые меньше первой вершины?

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

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

Тогда счётчик не нужен. записываем цену первой вершины и в цикле ищем большее значение, это и есть то, что Вам нужно..

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

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

я поэтому и создал тему, что бы узнать код счетчика, или цикла, или массива, смотря что в данном случае правильней будет.
Если есть какой то шаблонный вариант - можете скинуть?

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

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


Шаблонов нет. Давайте Ваш код добавим туда проверку.


попробуйте пожалуйста, скрипт

zzsl.mq4

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

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

что бы ставил стоп лосс на значении этой второй вершины,
или хотя бы выдавал алерт с этим значением второй вершины , к стоп лоссу я уже прикручу,
а если вершины рядом за кокой то период, или свеч, или дней, не будет, выдавал алерт, что за данный период второй вершины нет.

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

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

Нету у меня ни какого int start, есть int onInit, есть int OnDeinit, есть void OnDeInit, void ontick, void ontimer, double ontester, void onchartEver; а int start нет @-)

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

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


Нету у меня ни какого int start, есть int onInit, есть int OnDeinit, есть void OnDeInit, void ontick, void ontimer, double ontester, void onchartEver; а int start нет @-)


http://docs.mql4.com/ru/mql4changes - первая табличка и первая строчка.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Перезаписан под актуальные билды первый урок курса "MQL программирование":
http://tradelikeapro.ru/mql-nachalo/

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

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

Кто-нибудь пробовал реализовать делегаты или хотя бы знает как в MQL сделать указатель на функцию?

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

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


Перезаписан под актуальные билды первый урок курса "MQL программирование":
http://tradelikeapro.ru/mql-nachalo/



Спасибо. Смотрел старые уроки и сожалел, что есть расхождение с новыми билдами. Сейчас как-раз самое время изучить MQL.
Выполнил ДЗ к первому уроку.

test.mq4

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

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

Подскажите, можно ли как то привязать лейбл к шкале времени не по левому краю (началу текста), а по правому?
Устанавливаю лейбл рядом с линией на расстояние, равное 7 свечам от этой линии - вписывается нормально


Но при уменьшении zoom'а на графике она, естественно, смещается на линию:


Как можно обойти данную проблему с целью улучшения "красоты" отображения графических фигур? :d


UPD
Разобрался )
Угол привязки определяется с помощью функции OBJPROP_ANCHOR: ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_RIGHT);

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

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

Добрый день.
Помогите пожалуйста с функцией поиска нового бара и ограничения открытия позиций на одном определённом символе и таймфрейме. С обычным советником всё понятно. Можно использовать стандартную функцию из учебника

Цитата

bool New_Bar=false;
bool Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
bool New_Bar=false; // Нового бара нет
if (New_Time != Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
return(New_Bar);
}
bool IsNewBar(){
static datetime _timeLastBar = 0;
if(_timeLastBar == (datetime)0) //первый запуск
_timeLastBar = Time[0];
if(Time[0] > _timeLastBar){
_timeLastBar = Time[0];
return true;
}
return false;
}
if (Fun_New_Bar()==true)
{}



А как эту функцию приспособить к мультивалютному эксперту?
Ссылка на сообщение
Поделиться на другие сайты

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

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


Soldat так и применяйте - новый бар от на всех инструментах. правда тики не синхронно приходят, но с этим придётся жить...



Да это понятно. Не понятно как её использовать при мультивалютности и различных таймфреймах. Допустим у меня 10 пар и 4 таймфрейма. Мне получается через цикл for 40 вариантов прописывать? Или через оператор if? Может есть иной, более компактный способ?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Soldat у Вас 1 эксперт торгует по 10 парам - это понятно, при этом использует для поиска сигнала 4 ТФ - это можно понять, но в чём вопрос и сложность - не понятно...
Ваш эксперт будет стоять и получать тики с одного графика (пары), узнать котировку по другой паре можно только специально через запрос, т.е. Вы можете отследить закрытие бара (любого ТФ) только на основной паре, а теперь, как говориться, следите за руками: тик пришел и сова поняла, что по основной паре открылся новый бар, а по другой паре (XXXYYY) тика ещё не было, вопрос что Вам вернёт функция iClose(XXXYYY, 0, 1)?
Если Вы знаете ответ - то Вам должно быть вообще все понятно.
Я точного ответа не знаю, но могу предположить, что эта функция вернёт Вам не то, что Вы ожидали, скажу даже больше, эта функция вернёт Вам не то, даже если Вы сделаете запрос по текущей паре, но с другого ТФ.

Это я к тому, что отслеживать закрытие баров на 4 ТФ надо по той паре, где стоит сова, потом в цикле делать расчёты сигналов по всем парам (предполагая, что и там бары закрыты, или проверяя время открытия 1 бара на основной паре и рабочей паре).
Ссылка на сообщение
Поделиться на другие сайты

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

Выполнил задание по первому уроку. Очень рад, что попал в новую волну обучения. Огромное спасибо. Жду продолжения... .

Zadanie_№1.mq4

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

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

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

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

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

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

Войти

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

Войти

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


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

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