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

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


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

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

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

Sell_Buy_Scalper_agr_1.mq4

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

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

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

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

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

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

Перейти

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

Перейти

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

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

Заказывал написание советника на mql5.com по этой доработанной методике.
Отличия. В рынке только один ордер по одному инструменту.
Во вложении сам советник.
Мониторинг _http://www.myfxbook.com/members/mexicanoeso/weltrade/1062271
Первый ордер/колено открываю вручную, не рандомно.

Наблюдаю такие ошибки работы сова. Особенно когда первое колено открываю на продажу, если дошло до четвертого (последнего) колена, то часто оно на продажу, а должно быть на покупку.

На быстром рынке тоже бывают ошибки, а также из-за проскальзываний. Программист говорит что логика в советнике работает правильно, но я же вижу по факту в терминале неправильную работу сова. Хотя в журнале терминала никаких ошибок нет.
Может кто что подскажет?


Входные параметры:
TP1=50.0, // размер тейк профита для 1-го "колена" открытого вручную (в пунктах), если 0 - отключен

TP2=50.0, Lot2=0.02, // рамер тейк профита и лота для 2-го "колена"

TP3=50.0, Lot3=0.04, // рамер тейк профита и лота для 3-го "колена"

TP4=50.0, Lot4=0.08, // рамер тейк профита и лота для 4-го "колена"

z=50.0, // расстояние от открытого ордера до отложенного стоп ордера (в пунктах)

BE2=0.0, BE3=0.0, BE4=0.0; // безубыток (бу) для 2-4 "колен" (в пунктах), если 0 - бу для соответствующего "колена" отключен

mexicanoeso_ea.mq4

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

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

Глянул код. У автора есть опыт, решения не самые оптимальные, но рабочие, с его творениями ранее не встречался.
Что Вы хотите? - чтоб мы нашли почему иногда не в ту сторону 4-й ордер открывается? так для этого есть более простое решение - выслать логи Вашему программисту с указанием тех строк, где по-Вашему нарушена логика ( и соответственно Ваше ТЗ) ему проще в своей проге разобраться.

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

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

В том то и дело, что в журнале никаких ошибок.

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

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

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


В том то и дело, что в журнале никаких ошибок.

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

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

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

Подскажите пожалуйста, что прописать нужно в OrderModify(). так чтобы не открывшийся отложенный ордер перемещался (т.е менялась цена открытия) с изменением maxprice/minprice?


Добавлено: 03-11-2014 18:23:09

Серьезно помогите!!! вот код
if(maxprice>=Ask)
{
SL = minprice;
TP = NormalizeDouble (maxprice + TakeProfit*Point, Digits);
int tic=OrderSend(Symbol(), OP_BUYSTOP, Lots, maxprice, Slippage, 0, 0, NULL, Magic,0, Blue);
bool sel=OrderSelect(tic,SELECT_BY_TICKET);
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
} Изменено пользователем Бучацкий
Ссылка на сообщение
Поделиться на другие сайты

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


Серьезно помогите!!!

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

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

15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))

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

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


15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))



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

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

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



15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))



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

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


Ничего страшного!)) Сам порой могу выкинуть номер, над которым в итоге сам же и улыбаюсь)))

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

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

Ребят, что-то порылся тут-да-там и не нашёл конкретного пояснения по OrdersTotal. При применении цикла for, можно перебирать до обнуления, либо наоборот до максимума. Дак вот, насколько понимаю, эта функция имеет собственный подсчёт ордеров и нумерацию, но при этом всё равно ордера идут в особом порядке. Значит ли это что при раскладке номеров используется ещё и приоритет по номерам тикетов?

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

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
chistaia-rodina В ордерсТотал учитываются все ордера (включая отложенные) открытые на данном счете (к которому подключен МТ), даже если ко счёту подключено несколько МТ. Поэтому в сове, в цикле перебора делается сортировка свой/чужой.
Номера ордерам присваиваются по времени открытия (читал где-то, но это не официальная инфа), но любое действие с ордерами меняет их нумерацию.
Для анализа соседних ордеров я делал так:
- создаётся двумерный массив double с первым полем например дата/время (можно тикет или цену открытия)
- в цикле выбор ордера и записываешь в массив нужные для анализа значения (цена, объём)
- после выхода из цикла - сортировка (всегда по первому полю)
- ну, и собственно - анализ ордеров по записям из массива.
Этот вариант исключает возможные ошибки.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Здравствуйте Уважаемые. Мне не хотелось бы злоупотреблять Вашей отзывчивостью, но все же обратиться больше мне не к кому!
Ребята помогите пожалуйста приделать линии к индикатору, с возможностью выбора цвета и толщины. Довольно интересные результаты получаются)), Вы можете и сами посмотреть на графике. Линии по предыдущей (закрытой) свече старшего ТФ(выбранного в настройках индикатора). Линии по открытию/закрытию свечи и хай/лоу. Спасибо.

candles_m-Candles_m.mq4

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

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

3 раза перечитал, но так и не понял, что делать надо.
Вам нужно раскрасить те 4 горизонтальные линии? или какие-то другие нарисовать?

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

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

Здравствуйте. Эти 4-е линии нарисованы вручную(в paint), нужно автоматизировать процесс. Что бы индикатор сам рисовал их. С возможностью выбора цвета и толщины. Спасибо.

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

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

Примите мою искреннюю благодарность. Спасибо!


Добавлено: 07-11-2014 13:39:42

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


Добавлено: 07-11-2014 16:52:01

А можно как нибудь оставить только желтые линии, остальной код убрать? Изменено пользователем Strong-Tezis
Ссылка на сообщение
Поделиться на другие сайты

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


А можно как нибудь оставить только желтые линии, остальной код убрать?

Можно. Код закомментировал, если что - легко вернуть.
Те линии на скрине видимо от нового Н4 бара. Закинте индюк на график ещё раз. У меня всё рисуется корректно (хотя этот код я не трогал).

Candles_m2_0ll.mq4

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

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

Шикарно... просто шикарно. Огромная Благодарность Вам. Спасибо. Спасибо, что Вы всегда так бескорыстно выручаете! Удачи Вам во всех начинаниях!

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

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

Всем привет!
Пытаюсь разобрать один код:
for (int i = barsback; i >= 1; i--)
{
high_56 = High[Li_52]; - в данной строке присвоим переменной high_56 значение максимальной цены на i-ом баре
high_88 = High[Li_52 + 1]; - ПОМОГИТЕ РАЗОБРАТЬ что происходит здесь

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Crik1978
1. Цикл у Вас по i, а в внутри почему-то Li_52? - это так задумано?
2. high_88 = High[Li_52 + 1] - это хай предыдущего бара (который перед Li_52)
3. Надо что-то делать с этими хаями - иначе цикл не оправдан.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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