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

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


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

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


Буквально страницу назад об этом писали. Функции OrderSend() и OrderModify() возвращают булево значение true или false при успешной операции или неудачной. Предполагается, что вас интересует столь важное действие как открытие или модификация ордера и вы захотите это проверить.
В самом простом варианте пишите:
bool result = OrderModify() - и это предупреждение компиляции исчезнет.


Уточнение - про OrderModify() согласен,
а вот OrderSend() возвращает номер тикета (то есть целое число), который назначен ордеру торговым сервером или -1 в случае неудачи
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Да-да, спасибо за уточнение, все правильно, конечно же номер тикета (заработался :) ). Смысл в том, что эту операцию тоже нужно проверять.

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

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

Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov

Insaider_1.png
Insaider_2.gif
Insaider.rar

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься...
Ссылка на сообщение
Поделиться на другие сайты

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


F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься...



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

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

Здравствуйте! :)
Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?
Заранее благодарю!

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

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

:) если форум почитать: пост #305 http://tlap.com/forum/torgovye-sistemy/2/d1-supremacy/9346

http://tlap.com/forum/torgovye-sistemy/2/d1-supremacy/9346/?do=findComment&comment=203781

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

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

И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :)


Добавлено: 06-08-2015 17:12:26

F.Zhukov, вы все же напишите то или не то вы искали.

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

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

Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?

Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.
Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2)
Ссылка на сообщение
Поделиться на другие сайты

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


Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?

Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.
Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2)

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

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

Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();

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

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


Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);



Надо проверять возвращаемое значение.

for (int pos_16 = 0; pos_16 if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) функция возвращает true в случае удачного завершения, false - если не удалось выбрать ордер.
{
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();



Об этом было написано чуть выше, ; тут ни причём .Компилятор сообщает,что функция должна возвращать какое-то значение.
Ссылка на сообщение
Поделиться на другие сайты

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




Вы в этих функциях не поставили скобки(выделены).И советник стал тестироваться.
Только какие это экстремумы это просто хай или лоу предыдущей свечи!


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

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

Всем привет! Сразу извиняюсь, если пишу не в тот раздел форума!
Просьба не судить строго, т.к. я только учусь писать советники! :)
Итак, к делу: Идея, написать сов, открывающий 2а противоположных стоп-отложенника в определенное время(1раз в сут). Затем, после срабатывания одного из отложенников, 2й(противоположный, не сработавший) удаляется.
Принципиальна привязка к тикетам, ну или к мэджику, т.е. ,есть бай-стоп с тикетом 11111111 и селл-стоп с тикетом 22222222,
при срабатывании бай-стоп, получается бай с тикетом 1111111 в рынке, а селл-стоп с тикетом 2222222 удаляем.

Но, что-то я запутался, помогите плиз! :">

P.S. "Огромное спасибо за такие полезные и подробные уроки по mql!"

my_expert_stoporders.ex4

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
mark4431, во-первых, выкладывайте исходный код советника, если хотите, чтобы вам помогли.
Во-вторых, напишите универсальную функцию, считающую количество открытых ордеров определенного типа (она была в видеоуроках) - она вам пригодится в любом советнике, с ней ваша задача становится просто тривиальной.
У меня эта функция выглядит так:
int CountTrades(int otype) //Считаем количество ордеров нужного типа  
{
int Count = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderType() == otype && OrderMagicNumber() == Magic)
Count ++;
}
}
return (Count);
}


Далее, следуя логики вашего ТЗ, алгоритм примерно такой:
if (CountTrades(OP_BUYSTOP) == 0 && CountTrades(OP_SELLSTOP) == 0)
{
if (время_подходит)
{
открываем ордера
}
}
if (CountTrades(OP_BUY) > 0)
удаляем селлстоп
else if (CountTrades(OP_SELL) > 0)
удаляем байстоп

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

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


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


Пардон, не тот файл кинул, спасибо за отклик! :)
Вот, поправил, вроде работает без ошибок. Если не сложно, поправьте если где не так, может чего лишнего наворотил.. :">

my_expert_stoporders.mq4

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

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


И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :)


Добавлено: 06-08-2015 17:12:26

F.Zhukov, вы все же напишите то или не то вы искали.

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


Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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


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



Если ты про sell-ордера-выше, buy- ниже, в общем раньше)) это происходит из-за спреда, на сильных движениях особенно заметно это явление..)
Ссылка на сообщение
Поделиться на другие сайты

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


Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov




Добрый день. Моежет помочь реализовать вот такую идею?
Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе.



Здравствуйте.
Переделать тот советник что Вы предложили точно не получится, так как это компилированная версия.
Сделать парсинг информации с фх-бука возможно (как для проверки на истории, так и для онлайн работы).
MQL код является продуктом моей интеллектуальной деятельности по реализации Вашей идеи, индикатор для форума tradelikeapro будет представлен в компилированной версии.
Если вы изложите ТЗ на ваши идеи "(Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса)" то я постараюсь включить это в индикатор.
Единственная проблема это время. Постараюсь реализовать ТЗ, но не обещаю, что это будет быстро.
Спасибо Изменено пользователем Blohastik
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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


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

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



Привет, я конечно не спец, но может удастся, хотя бы чем-то помочь)) Условие закрытие сети какое? Может стоит исходить из инициирующего ордера? Пока он существует и сеть достигла 10-запрет на выставление новых отложек...И скорее всего, лучше писать в глоб. переменную, например bool a=true если кол-во отложек достигало 10, если инициирующий ордер закрылся- a=false; Изменено пользователем mark4431
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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