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

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


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

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

Вы немножко не поняли - речь идет об обычном мартине - т.е. ордера сетки, открытые в рынке. Закрытие по общему ТП корзины. Просто пытаюсь реализовать разные варианты стоплосса сетки. Как один из вариантов, описанный выше - одинаковый сл (размер стоп-лосса, а не цена) для каждого ордера, при растягивании длинной сетки младшие (первые открытые) начинают закрываться по СЛ.

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

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

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

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

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

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

Перейти

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

Перейти

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

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


Нужен совет специалистов. Такой вопрос:

Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.
Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?
Может еще есть другие варианты?



Может завести ещё одну переменную ну,например static int A = 0;.
Дальше считаем открытые ордера.Если открытых ордеров 10, то А = 1; иначе А = 0
В условии на открытие добавляем если А = 0 то открываем ордер ,если А = 1 выходим.
Или что-то в этом роде.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
JR можно сделать флаг продолжения торговли bool flag = true. При 10 ордерах сбрасывать в фалс.
Но при перезагрузке терминала будет заново строится - надо пересчитывать (геморрой) или сделать ручное подтверждение...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Вы немножко не поняли - речь идет об обычном мартине - т.е. ордера сетки, открытые в рынке. Закрытие по общему ТП корзины. Просто пытаюсь реализовать разные варианты стоплосса сетки. Как один из вариантов, описанный выше - одинаковый сл (размер стоп-лосса, а не цена) для каждого ордера, при растягивании длинной сетки младшие (первые открытые) начинают закрываться по СЛ.



если я правильно понял, то у сетки ордеров у каждого свой сл и смысл, чтобы они закрывались от самого нижнего к самому верхнему для бай? И задача в том, чтобы при закрытии по сл, нижнего(для бай) новый не открывался. Так?

В глобальную пишем bool a=true;

Считаем кол-во ореров с нашим магиком на бай(например)
{
int b=кол-во;
if(bif(b=10)a=false;
}
В условие открытия-if(a){открываемся...}
...

хотя..не подойдет, будет держать всегда 10) Изменено пользователем mark4431
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

А кто решил задачу про обновление тэйкпрофита в уроке про построение сетки? Вот как выглядит условие задачи:"Представьте, что в процессе работы эксперта Вы вдруг решили изменить Take Profit у этого советника, но просто изменение этого параметра сейчас ничего не даст. Доработайте эксперт таким образом, чтобы любое Ваше изменение параметра Take Profit привело к автоматическому изменению TakeProfit рыночных ордеров." Ничего не смог придумать. Скажите хотя бы в общих чертах как эту функцию реализовать..

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

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


Может завести ещё одну переменную ну,например static int A = 0;.
Дальше считаем открытые ордера.Если открытых ордеров 10, то А = 1; иначе А = 0
В условии на открытие добавляем если А = 0 то открываем ордер ,если А = 1 выходим.
Или что-то в этом роде.


А если ордеров еще не 10 открыто, а допустим 8, потом бац - один по стоплоссу закрылся - в рынке остается 7, а нужно, чтобы счетчик выдавал 8 (общее количество закрытых и открытых ордеров сетки). Поэтому с глобальными переменными нужно просто отслеживать открываемые ордера и записывать их в виртуальный счетчик, ИМХО.


JR можно сделать флаг продолжения торговли bool flag = true. При 10 ордерах сбрасывать в фалс.
Но при перезагрузке терминала будет заново строится - надо пересчитывать (геморрой) или сделать ручное подтверждение...


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

Добавлено: 11-08-2015 14:41:36



если я правильно понял, то у сетки ордеров у каждого свой сл и смысл, чтобы они закрывались от самого нижнего к самому верхнему для бай? И задача в том, чтобы при закрытии по сл, нижнего(для бай) новый не открывался. Так?


Смысл чтобы сначала закрывались по сл первые ордера (с младшим лотом), я же написал. В случае бай это будут сначала самый верхний с лотом 0.01 и.т.д. Такая модель есть, если я не ошибаюсь в ForexWarrior.


А кто решил задачу про обновление тэйкпрофита в уроке про построение сетки? Вот как выглядит условие задачи:"Представьте, что в процессе работы эксперта Вы вдруг решили изменить Take Profit у этого советника, но просто изменение этого параметра сейчас ничего не даст. Доработайте эксперт таким образом, чтобы любое Ваше изменение параметра Take Profit привело к автоматическому изменению TakeProfit рыночных ордеров." Ничего не смог придумать. Скажите хотя бы в общих чертах как эту функцию реализовать..


Ну во-первых, если вы изменяете ТП в настройках, то правильно написанный сеточник пересчитает ТП корзины на следующем открытом ордере.
Плюс в своем сеточнике я сделал контроль ТП-СЛ сетки, который происходит примерно раз в минуту (или другой временной интервал) и если текущие параметры не соответствуют вычисляемым (в соответствии с текущими настройками) - то модифицируем ордера сетки. Но реализовать такое - не совсем просто, хотя интересно:) Изменено пользователем JR
Ссылка на сообщение
Поделиться на другие сайты

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

Я думаю,что на глобальных переменных понадежней будет.А вообще(в целях повышения образованности :)) ) какой у Вас стоп-лосс
будет(пунктов МИЛЛИОН), чтобы в него уместились ещё 9 ордеров со своими стопами?

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

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


Ну во-первых, если вы изменяете ТП в настройках, то правильно написанный сеточник пересчитает ТП корзины на следующем открытом ордере.
Плюс в своем сеточнике я сделал контроль ТП-СЛ сетки, который происходит примерно раз в минуту (или другой временной интервал) и если текущие параметры не соответствуют вычисляемым (в соответствии с текущими настройками) - то модифицируем ордера сетки. Но реализовать такое - не совсем просто, хотя интересно:)

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

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


Я думаю,что на глобальных переменных понадежней будет.А вообще(в целях повышения образованности :)) ) какой у Вас стоп-лосс
будет(пунктов МИЛЛИОН), чтобы в него уместились ещё 9 ордеров со своими стопами?


Да какая разница, какой стоплосс будет - какой пользователь захочет выставить, такой и будет. Бот должен максимально четко отрабатывать ситуацию, правильно?
Может вы не поняли модель описанную стоплоссов? Вот вам вполне конкретные настройки (реальные для рынка, указываю в 4-х знаке) шаг сетки 35пп, пусть максимум 12 ордеров - сетка тянется больше 300пп, стоплосс - 200пп, первые ордера начнет выбивать по стопу еще до открытия максимума ордеров сетки.

Дело в том, что я хочу реализовать три режима стоплосса сетки - без СЛ (хардкор), общий СЛ корзины (пересчитывается от последнего открытого ордера сетки) и индивидуальный СЛ для каждого ордера сетки, который собственно и обсуждаю. И каждую ситуацию бот должен корректно обрабатывать.

Добавлено: 11-08-2015 16:01:02


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



В общих чертах это выглядит так:
Есть функция, вычисляющая нужный ТП сетки в зависимости от настроек и рыночной ситуации (количество открытых ордеров), назовем ее GetTP().
Есть модуль модификации ордеров сетки, алгоритм которого выглядит так:
TP = GetTP;
for (стандартный цикл перебора ордеров нашей сетки, нужного типа)
if (OrderSelect(и так далее)) - выбрали ордер
if (OrderTakeProfit() != TP) если ТП ордера не соответствует нужному
OrderModify(TP) - модифицируем его
конец цикла.
Я очень упрощенно написал, схема, думаю понятна.
Такой модуль модификации ордеров сетки я вызываю после открытия нового ордера и раз в n-минут(секунд), для контроля.
Изменено пользователем JR
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Oll, похоже, что без твоего совете не обойтись... :| Подскажите, пожалуйста...
Почему отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...
Спасибо!

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Sany2912 это не вопрос программирования. Ордер хранится на сервере брокера и там исполняется. Бывает отложка скользит - не было цены и брокер исполнил по первой доступной. На этот процесс повлиять нельзя.

JR пересчёт в ините надёжнее. имхо. только там есть тонкие вопросы, например порядок сортировки ордеров в истории - по времени открытия, по времени закрытия или тикету? если прошёл гэпчик и зацепило 3 стопа - какой первый закроется? (это всё к тому, как в истории найти 1 ордер последней сетки) Может в коммент 1 ордера что-нибудь писать - для простого поиска...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
0ll, спасибо за подсказку с комментом первого ордера. Я думал попробовать искать по минимальному лоту в закрытых, но с комментом наверное проще будет. Буду пробовать, потому что я тоже склонялся к мысли, что все-таки нужно отслеживать текущую ситуацию, а не надеяться на сохраненные переменные, которые к примеру юзер может взять и.. очистить:)
Ссылка на сообщение
Поделиться на другие сайты

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

Всем добрый вечер , такой вопрос допустим советник прикреплён к графику GBPUSD , а сделку нужно совершить по EURUSD , что нужно прописать вместо Symbol()
OrderSend(Symbol(),OP_BUY, lot,NormalizeDouble(Ask,Digits),2,SL,TP,"простой советник",Magic,3)

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

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


Всем добрый вечер , такой вопрос допустим советник прикреплён к графику GBPUSD , а сделку нужно совершить по EURUSD , что нужно прописать вместо Symbol()
OrderSend(Symbol(),OP_BUY, lot,NormalizeDouble(Ask,Digits),2,SL,TP,"простой советник",Magic,3)



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

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

За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться?

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

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


За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться?


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

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Mezon по своему опыту скажу: я начал программировать в 1986 г. Просто был интерес. Учителей было значительно меньше чем сейчас, интернета не было и вместо видео и книжек была тех.документация. Так вот: открывай редактор и начинай писать программу, самую простую - вывод на экран сообщения (с торговых функций не начинай!), сделай скрипт калькулятора, вычисли разность между датами, отрепетируй ввод данных и их простую обработку и вывод на экран или в лог.
Когда поймешь, что получается и комп делает всё, что от него требуется - появится уверенность, вот тогда и приступай к простому торговому эксперту.
А насчёт видео и его пользы - Вы зря иронизируете, цель видео не в обучении, а в том, чтоб показать лёгкость и доступность процесса. Человек посмотрит и скажет - "вроде просто, надо попробовать" и пробует. Конечно у кого-то не получается, но по моим наблюдениям много народа пробовали и у половины точно получилось...
Удачи.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться?


Зря вы так по поводу видео! Заслуживает внимания, однозначно! Я учусь по данным урокам, если честно помогают!(напАру со справкой и учебником). Уже написал, первого советника!(не "передрал" у кого-то, а придумал и написал самостоятельно), хотя далек от программирования и никогда этим не занимался, чего и Вам желаю(научиться ;))! А первое впечатление от написания кода было примерно таким же, как у Вас..)) "ни чего не помогает, дурацкий сов. и т.д..." А основная проблема в том, чтобы четко сформулировать что вы хотите от советника, основную цель для себя! Например, попробуйте написать простенького вспомогательного сов-а, который будет подхватывать ваши положительные сделки и переводить их в Б/У.., дальше добавьте к вашемо сову, еще что-нибудь, и т.д. Не успеете оглянуться как у Вас уже готовый сов, написанный Вами!))

P.S. +Здесь ребята отзывчивые, если есть проблемы помогают! :d Изменено пользователем mark4431
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться?



Зря Вы так про видео!!!Лично я сам учился на видео уроках.Во многих из них достаточно подробно всё рассказывается!До этого
программированием вообще никогда не занимался.А при переходе со старого билда на новый просмотрел ещё и видео уроки
по С++ ,что-бы хоть маленько понять новый MQL4 (от старого сильно отличается).Учебник какой читали?Почитайте на форуме
хотя-бы Альпари хотя и у остальных такой курс есть " Курс MQL4 " .Там правда для старого билда,но суть поймёте.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Может баян и уже обсуждали: компилирую сову 765-м билдом - экзешник 25кб, а если 840-м - получается 50 кб! Есть еще подозрение (пока не проверил), что последним билдом скомпилированная сова еще и памяти жрет в 2 раза больше в терминале. Чего они там пихают??

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
JR самому интересно. жалуются "Азия" в 840 перестала работать... Вам лучше на МТ-шном форуме этот вопрос задать.
Ссылка на сообщение
Поделиться на другие сайты

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

А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется?

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

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

А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется?

Можно, но только для одного окна (для каждого инструмента запускаете свою панель). А на СИ одна панель для любого активного окна.
Тут была панель с открытым кодом.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется?

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

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

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

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

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

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

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

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

Войти

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

Войти

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


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

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