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

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


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

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


Столкнулся с такой проблемой, если
if(Close[1]>High[2]) // if(iClose[(1.00001)]>High[(1.00001)])
{
------
}else
if(Close[1][(1.00001)][(1.00001)])
{
-------
}
Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?



вопрос точно такой что и ранее про стопы. и ты продолжаешь сравнивать даблы :d :d :d
бери разность и задавай точность сравнения, в примере Oll это идеально показано, только вместо Point можешь поставить свою цифру(точность исчисления)
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?

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

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


Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?


пропустил вопрос.
поддерживаю. это сферический форекс в вакууме, на реальном рынке таких ситуаций может одна или две в году))) идеальных Доджи не бывает.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Условия: выставляю отложенный ордер черт знает как далеко от рынка. Затем выставляю на минимальном расстояние ( величина стоп уровня ) SL и TP. В итоге после отправки запроса получаю ошибку не правильные стопы.
Причем ошибка в случаях:


  • Короткая позиция - ошибка когда расстояние от цены открытия до SL равна стоп уровню. При попытке выставить ТР размером стоп уровня все хорошо.

  • Длинная позиция - ошибка когда расстояние от цены открытия до TP равна стоп уровню. При попытке выставить SL размером стоп уровня все хорошо.


Все это возникает только на EURJPY брокер Roboforex (Проверял как на реальном счете так и на демо + на разных компьютерах).
Вопрос такой какого??? Или я чего то не понимаю?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Qj а если СЛ = стоплевел+1пипс то всё в порядке? Я к тому - в чём смысл установки СЛ = стоплевел? ну добавь 1,2, 5 пипс, ибо в момент активации отложки спред раздвинется и ордер сразу закроется - не вижу смысла, может у Вас есть хитрый план, вот его интересно почитать...
Конкретно по вопросу ничего сказать не могу - ни разу не приходилось ставить близкие стопы.
Ссылка на сообщение
Поделиться на другие сайты

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


Qj а если СЛ = стоплевел+1пипс то всё в порядке? Я к тому - в чём смысл установки СЛ = стоплевел? ну добавь 1,2, 5 пипс, ибо в момент активации отложки спред раздвинется и ордер сразу закроется - не вижу смысла, может у Вас есть хитрый план, вот его интересно почитать...
Конкретно по вопросу ничего сказать не могу - ни разу не приходилось ставить близкие стопы.


Да для коротких позиций так и есть. Все окай становится. Я просто для страховки ставлю, чтобы если нету интернета чтобы отложки закрылись.
Просто получается что вот эти данные не соответствуют действительности для Roboforex EURJPY, а если они не соответствуют то что вообще правильно то работает. Изменено пользователем Qj
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Шалом, Я хочу спросить: У меня есть машка, допустим настолько большого периода, что почти не двигается т.ч. по сути линия, вверх идет сетка SellStop ордеров, вниз BuyStop, если сработал первый ордер из какой-либо сетки, то вторую сетку надо закрыть.
Как это сделать проще всего? Проверять постоянно открылся ордер или нет(вообще возможно ли это с отложками)?

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
SVS696 вверх идёт сетка SellStop ордеров? может лимит? ну это не важно. При активации отложки у неё меняется тип с OP_BUYSTOP -> OP_BUY. Как это определить - зависит от задач совы. Если одновременное присутствие разнонаправленных рыночных не предусмотрено - то при появлении 1-го рыночного, отложки противоположного направления удаляются.
Если возможны локи с магиком совы, то надо запоминать тикеты 1-х ордеров в каждой сетке и отслеживать активацию через контроль типа первого ордера сетки ( ближайшего к цене ).
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


SVS696 вверх идёт сетка SellStop ордеров? может лимит? ну это не важно.


Ну это уже не я так придумал)

Вообще я примерно такие варианты и прикидывал, но подумал мало ли есть более простой подход.

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

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


Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43



Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.
Ссылка на сообщение
Поделиться на другие сайты

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



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

У меня все норм открывает и бай и селл даже мартин
Спойлер


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

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

Этот вариант исправленного мартина я получил в ответ на мой первый ругательный опус.




Спойлер



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

У меня все норм открывает и бай и селл даже мартин
Спойлер


Если вы прикрепите свой советник я бы посмотрел где у вас ошибки

Martin.mq4

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

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

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

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

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


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


Vasiliy Pupkin если много сигналов я делаю так.
if(сигнал1 && сигнал2 && сигнал3 && сигнал4)
{
tp = NormalizeDouble(Ask + TakeProfit * Point, Digits);
ticket = OrderSend(Symbol(), OP_BUY, LotsFor10000, Ask, Slippage, 0, tp, "", Magic, 0, Blue);
}

Добавлено: 20-06-2016 16:48:26

Спойлер


Этот вариант исправленного мартина я получил в ответ на мой первый ругательный опус.




Спойлер



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

mischkus у меня все норм открывает и бай и селл даже мартин
Спойлер


Если вы прикрепите свой советник я бы посмотрел где у вас ошибки


mischkus все работает верно. Допустим сигнал на sell советник открывает ордер на продажу, если цена идет не в нашу сторону то каждые n пунктов указанные в параметре step будет открываться ордер на продажу, независимо где сейчас цена выше или ниже линии МА 55. Прогоните д за период с 4.01.2016 по текущей день и установите параметры TP 60 Step 25 и 8.01.2016 откроется сделка на покупку. Изменено пользователем Foxonn
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Vasiliy Pupkin если сигналы должны приходить одновременно ( на одной свече ), то можно делать так, как написал Foxonn.
Если сигналы не одновременные или смешанные, то тут надо определиться с временным интервалом - сколько бар анализировать на наличие сигналов? Логика будет несколько сложнее - надо делать или в цикле или сохранять сигнал в переменной с неким временем жизни...
Ссылка на сообщение
Поделиться на другие сайты

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

Не могу понять, почему советник на ровном месте виснет...

Причем рандомным образом. Клин в функции Signal () в моменте когда мы ждем завершения часового бара. В качестве отладки добавил даже информер, но он не помогает, просто вижу в определенный момент зависание исполнения.


Добавлено: 22-06-2016 03:30:56

Хммм... Убрал while(true) и виснуть вроде перестало, но в данном случае внутри while true должен был работать информер с счетчиком, а он не работал Оо

Deviation.mq4

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

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


Не могу понять, почему советник на ровном месте виснет...

Причем рандомным образом. Клин в функции Signal () в моменте когда мы ждем завершения часового бара. В качестве отладки добавил даже информер, но он не помогает, просто вижу в определенный момент зависание исполнения.


Добавлено: 22-06-2016 03:30:56

Хммм... Убрал while(true) и виснуть вроде перестало, но в данном случае внутри while true должен был работать информер с счетчиком, а он не работал Оо


Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.
Ссылка на сообщение
Поделиться на другие сайты

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


Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.


...и пока не сработает return false/return/break
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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



Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.


...и пока не сработает return false/return/break

Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).

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

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


Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).
Из всего этого я сделал вывод, что для datetime необходимы тики, без них - зависон, да и iTime аналогично не берет новые значения с графика.


дело не в iTime и типе datetime, а в том что у тебя основной код варится в онтике, который срабатывает только по ткиу брокера, вот и вся заморочка. либо ты налажал с меcтом объявления двух сравниваемых datetime. то есть ошибка в алгоритме.

ну а так, вобщем, чтобы не страдать такой фигней как алко/наркозависимость от тиков брокера, я давным давно пишу код так:

добавляю в конце инита перед системным ретёрном условие
if (!IsTesting())
{
EventSetMilisecondTimer(50);
OnTimer();
}

дальше описываем и онтик и онтаймер:
void OnTick()
{
if (!IsTesting()) return;
Base();
}

void OnTimer()
{
if (IsTesting()) return;
Base();
}

ну и самый главный блок:
void Base()
{
if (!IsTradeAlowed()) return;
/////////// и пишу тут свою логику, как будто это ОнТик
}

для красоты кода следует еще прописать в ондеините EventKillTimer(), но по идее компилятор сам его туда добавляет если ты забыл это сделать.

для чего вся фишка так расписана: в тестере работает только блок онтик, онтаймер в нем не пашет. при этом чтобы не было глюков кода и параллельного исполнения или внезапного стектрейсоверфлоу я блочу онтик при торговле на реальном сервере(так как онтик и онтаймер будут пахать параллельно друг другу) и пускаю код только по онтаймеру. Изменено пользователем dermitay
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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


Спойлер


Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).
Из всего этого я сделал вывод, что для datetime необходимы тики, без них - зависон, да и iTime аналогично не берет новые значения с графика.


дело не в iTime и типе datetime, а в том что у тебя основной код варится в онтике, который срабатывает только по ткиу брокера, вот и вся заморочка. либо ты налажал с меcтом объявления двух сравниваемых datetime. то есть ошибка в алгоритме.

ну а так, вобщем, чтобы не страдать такой фигней как алко/наркозависимость от тиков брокера, я давным давно пишу код так:

добавляю в конце инита перед системным ретёрном условие
if (!IsTesting())
{
EventSetMilisecondTimer(50);
OnTimer();
}

дальше описываем и онтик и онтаймер:
void OnTick()
{
if (!IsTesting()) return;
Base();
}

void OnTimer()
{
if (IsTesting()) return;
Base();
}

ну и самый главный блок:
void Base()
{
if (!IsTradeAlowed()) return;
/////////// и пишу тут свою логику, как будто это ОнТик
}

для красоты кода следует еще прописать в ондеините EventKillTimer(), но по идее компилятор сам его туда добавляет если ты забыл это сделать.

для чего вся фишка так расписана: в тестере работает только блок онтик, онтаймер в нем не пашет. при этом чтобы не было глюков кода и параллельного исполнения или внезапного стектрейсоверфлоу я блочу онтик при торговле на реальном сервере(так как онтик и онтаймер будут пахать параллельно друг другу) и пускаю код только по онтаймеру.


Хм, возьму на заметку. А с циклами я проблему решил убрав их и немного подкорректировав алгоритм.
Ссылка на сообщение
Поделиться на другие сайты

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


Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43



Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d


Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.

2016-06-30_33.jpg

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

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


Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.



посыл заявки брокеру на открытие ордера делается функцией OrderSend(...), почитай мануал.
твой вопрос решается сменой мест строк 177 и 164, 157 и 170, но ты показал лишь часть кода, общая логика вобще не видна.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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



Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.



посыл заявки брокеру на открытие ордера делается функцией OrderSend(...), почитай мануал.
твой вопрос решается сменой мест строк 177 и 164, 157 и 170, но ты показал лишь часть кода, общая логика вобще не видна.


dermitay, радостно пробовать разные варианты. Аттачу мартина из уроков Сергея, задача та же: инвертировать покупки в продажи с закрытием одних по приходу других (управление МА).

Martin.mq4

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

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

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

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

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

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

Войти

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

Войти

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


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

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