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

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


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

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


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


После того, как первый ордер достиг определенного уровня прибыли - открываете встречный ордер такого же лота.

Думаете, для этого нужен специальный урок?

Во-первых, надо думать.
Прежде чем пытаться что-то кодировать, сначала надо понять что вам надо.
Когда поймете "что" вам надо, "как" сделать "что" вам надо обычно становится понятно самому.

Во-вторых, в инете море программ в открытом коде.
Изучайте их до буквы, пытайтесь сделать лучше - и вы начнете расти ударными темпами.


А вот "кина" лучше не надо.
Программирование интеллектуальная деятельность: надо читать - думать - и писать.
"Кина" не оставляет время на думать.
Удивляюсь, млять, почему ещё мультики по программированию снимать не начали...
  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Подскажите, как привязать Lable строго к середине экрана?
Если с привязкой текста по датам еще можно что то придумать, то как быть с Лейблом, у которого есть только настройки Угла, X и Y? )

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

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


Подскажите, как привязать Lable строго к середине экрана?
Если с привязкой текста по датам еще можно что то придумать, то как быть с Лейблом, у которого есть только настройки Угла, X и Y? )

Я не большой знаток графических функций, но спрошу: а разве размер окна в пикс узнать нельзя? - чтоб половину вычислить?
Ссылка на сообщение
Поделиться на другие сайты

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


Я не большой знаток графических функций, но спрошу: а разве размер окна в пикс узнать нельзя? - чтоб половину вычислить?


Вот я и не нашел этой функции. Как узнать самую крайнюю цену по углам экрана - есть. Пикселей нету (
Ссылка на сообщение
Поделиться на другие сайты

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



Я не большой знаток графических функций, но спрошу: а разве размер окна в пикс узнать нельзя? - чтоб половину вычислить?


Вот я и не нашел этой функции. Как узнать самую крайнюю цену по углам экрана - есть. Пикселей нету (
Посмотри эти функции:
ChartGetInteger() CHART_WIDTH_IN_PIXELS
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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


Посмотри эти функции:
ChartGetInteger() CHART_WIDTH_IN_PIXELS


И куда я смотрел. Теперь все идеально ровно, спасибо! Только нужно не забыть изменить привязку этого объекта с левого угла на вверх
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_UPPER);
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


Думаете, для этого нужен специальный урок?


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

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



Думаете, для этого нужен специальный урок?


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


твой вопрос из разряда поиска линии БУ кучи ордеров с различными лотами и "смотрящих" в разные стороны.
скажем так - я убил неделю чтобы самому понять и вычислить формулу сего действа. и, думаю, "для новичка" подача такого материала будет сложна для понимания.

ну а "не новичок" и сам разберется, если ему это действительно нужно.
и опять же, я не понимаю, неужели вы не испытываете кайф от самого процесса решения задачи и того когда решил эту задачу САМ, своим потом и мозгами?
тебе же наоборот хорошо делают - рассказывают не ВСЕ чтобы ты в будущем сам через всё прошёл :d :))

ЗЫ: если суммарно лотность на бай не равно суммарной лотности на селл - то это уже не "замок".
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

наткнулся на ограничения iCustom. в официальной документации ничего про это не написано.
вобщем нюанс заключается в количестве передаваемых input'ов.
если не передавать ни один параметр - будут использоваться настройки по умолчанию, но если мне нужно изменить хотя бы один параметр, то мне надо передать все в требуемом порядке и с требуемым типом и изменить значение нужного(реальный пример - крайний выложенный индикатор от Silentspec, в нем играюсь периодом RSI, передаваемых в индюк параметров у него - 95).
вопрос знатокам - кто-нибудь знает до каких цифр метаквотовцы ограничивают количество передаваемых в iCustom параметров? при компиляции ошибка выдается просто wrong parametres count.

ЗЫ: с iCustom работать умею и мной написан уже не один и не два сова по работе с различными внешними индюками. просто впервые наткнулся на такой вот прикол.

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

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


наткнулся на ограничения iCustom. в официальной документации ничего про это не написано.
вобщем нюанс заключается в количестве передаваемых input'ов.
если не передавать ни один параметр - будут использоваться настройки по умолчанию, но если мне нужно изменить хотя бы один параметр, то мне надо передать все в требуемом порядке и с требуемым типом и изменить значение нужного(реальный пример - крайний выложенный индикатор от Silentspec, в нем играюсь периодом RSI, передаваемых в индюк параметров у него - 95).
вопрос знатокам - кто-нибудь знает до каких цифр метаквотовцы ограничивают количество передаваемых в iCustom параметров? при компиляции ошибка выдается просто wrong parametres count.

ЗЫ: с iCustom работать умею и мной написан уже не один и не два сова по работе с различными внешними индюками. просто впервые наткнулся на такой вот прикол.



До 50 параметров точно проходит.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


До 50 параметров точно проходит.



угу. выправил индюк(я ж оригинальный код Silentspec не трогаю - правлю индюк с другим именем и к нему обращаюсь), сократил количество инпутов(ну например нахрена мне в iCustom передавтаь цвета линий или стринговые "Настройки индикатора"), и вуаля - код iCustom с сокращенным списком переменных откомпилился \M/ >0 Изменено пользователем dermitay
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Доброго времени суток всем!

Искал простой сов сопровождения с частичным закрытием и моментальным тралом (чтобы не ждал профита, а уменьшал лосс вслед за ценой идущей к ТП). Протрейдер избыточен, ест ресурсы ВПСа и не рулит всеми парами (как я понял). Накопал пару простых сов, в первом не хватает частичного закрытия, во втором параметра вида: Profit Trailing = false.
Не поможете дописать или поделиться если такой есть?!

Заранее спасибо! ;) ;) ;)

TrailingStop.ex4
Sleep_Tight.ex4

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

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

держи, в нем все что тебе надо - есть.
описание функционала гугли.

milaneseAPTM_235a.mq4

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

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

Спасибо!!! \M/
Кстати узнал его по автору (Стив Хопвуд), брал с FF под другим именем.
Напрягло большое количество настроек jumping loss, instant loss и ещё куча всего.
Ну ничего, будем развиваться...

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

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

ну его использовал DENYA в своих старых сборках по соло Scalp.inc, я единственное что могу добавить:
1. сова мультивалютная
2. трал/частичное закрытие настраиваются как пипсам так и по АТР(не путать с АДР)
3. версия которую я выложил не особо глючная, как говорят все последующие сборки от автора после этой содержат глюки и баги.

так что по сути тебе надо разобраться с настройками АТР. я в нем не особо шарю.
но можешь юзать чисто пипсы.

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

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

всё-таки решил заморочиться над переносом полной логики индикатора Silentspec в сову. Это вам не iMA в коде вызывать и не шубу в трусы заправлять.
После долгих попыток воткнуть таки получилось, тысяча чертей!!! v:) :)) Теперь я постиг еще уровень просветления o:-)

Подумал, что материал, который я нарыл, будет полезен другим

Вот ссылки в порядке прочтения M/

1. https://www.mql5.com/ru/articles/1456
2. https://www.mql5.com/ru/articles/1457
3. https://www.mql5.com/ru/articles/1463


Добавлено: 30-01-2016 20:09:45

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



тоже самое уже в сове, но через iCustom()
Спойлер



а вот это через код с полной эмуляцией буферов
Спойлер



как видите, третий вариант наиболее точно всё рисует, в отличие от варианта с iCustom. почему наиболее точно - потомучто есть еще и сигнал 6го типа, который индюк просто не рисует почему-то, ну это не особо важно, мне этот сигнал не нужен.
вопрос прост - какого фига так оно как-то все криво работает?

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

вкратце как я реализовал вариант 3: полная "эмуляция буферов", то есть вместо индикаторных буферов созданы массивы- таймсерии, в которых запоминаются все расчеты/значения полностью копируя алгоритм индикатора.
самая главная проблема, на мой взгляд, это то что я хочу все это крутить-вертеть на 28 парах в одном коде. расчет прост. пар 28, буферов 14, итого мне нужно "держать в уме" 392 массива. реализовал это тоже очень просто, создана структура, в которую запихнуто все 14 динамических буферов + стринговая переменная для опознавания символа(пары).
далее при инициализации кода идет подсчет пар, по которым трейдер собирается торговать и создается по сути динамический массив вышеописанных структур размером = количество пар. то есть элементом такого массива есть вышеописанная структура, внутри которой 14 других массивов + перменная. :-b
код будет гоняться один единственный раз - при появлении новой свечи(так же по сути должен работать и индикатор, по крайней мере так задумано).

у меня вопрос простой - я прав в своих рассуждениях или нет насчет iCustom()?? насколько эффективна моя реализация или может есть более простой вариант? есть какие-то подводные камни? Изменено пользователем dermitay
  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

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

Может кому пригодится:

Т.к. OnChartEvent() не работает в тестере стратегий, простую обработку нажатия кнопок можно сделать следующим образом:

1. в OnTick() добавляем строчку вида:

if (IsTesting()) CheckButtons();

2. Ну и примерный текст CheckButtons():

void CheckButtons()
{
long stateBuy = ObjectGetInteger(0,BtnBuy.name,OBJPROP_STATE);
long stateSell = ObjectGetInteger(0,BtnSell.name,OBJPROP_STATE);

if (stateBuy == 1) // 0 - кнопка отжата, 1 - нажата
{
Print("Нажата кнопка BUY!!"); // Тут можно вставить OrderSend(Symbol(),OP_BUY...
ObjectSetInteger(0,BtnBuy.name,OBJPROP_STATE,0); // Отжимаем кнопку
}

if (stateSell == 1)
{
Print("Нажата кнопка SELL!!");
ObjectSetInteger(0,BtnSell.name,OBJPROP_STATE,0);
}
}

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

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

Приветствую всех!
Смотрел урок по написанию советника. Очень понравилось. Повторил за автором. Мое творение тоже заработало, но на мой взгляд не корректно. Ордера закрываются и сразу открываются в противоположную сторону. При пробое линии сопротивления/поддержки это катастрофично. Как написать код который будет говорить; если (if) цена открытия свечи выше (>) цены закрытия и (&&) Спасибо.

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

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


Приветствую всех!
Смотрел урок по написанию советника. Очень понравилось. Повторил за автором. Мое творение тоже заработало, но на мой взгляд не корректно. Ордера закрываются и сразу открываются в противоположную сторону. При пробое линии сопротивления/поддержки это катастрофично. Как написать код который будет говорить; если (if) цена открытия свечи выше (>) цены закрытия и (&&) Спасибо.


очень просто
Close[#номер бара#] - цена закрытия #номер бара#
Open[#номер бара#] - цена открытия #номер бара#

клоуз нулевого бара(текущего) конечно же будет равна NULL

а вобще вот
https://docs.mql4.com/ru/predefined/close
https://docs.mql4.com/ru/predefined/open
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Вроде бы проблем быть не должно. Всё, казалось бы, просто.

double ID;
ID = ChartOpen(Symbol(), Period());
ChartApplyTemplate(ID, "template1.tpl");
Но не работает. Чарт открывает, шаблон не применяет. Шаблон есть в "templates", вручную применяется. В чём проблема?

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

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

Не пойму зачем Вы открываете текущий чарт? - ID = ChartOpen(Symbol(), Period());
Пробуйте сразу ChartApplyTemplate( 0 , "template1.tpl");
Может быть ещё заморочка с расположением файла - читай справку по функции ChartApplyTemplate()

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

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

Ок, не совсем так:
double ID;
ID = ChartOpen(Sym, Per);
ChartApplyTemplate(ID, "template1.tpl");
Символ и период задаю - такой график и открывает. С местом шаблона уже голову сломал, куда я его только не совал x(

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

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

ты все перепробовал что вот здесь описано?
https://docs.mql4.com/ru/chart_operations/chartapplytemplate

какой код ошибки, и т.д. и т.п. без этой инфы это гадание на кофейной гуще.

это раз, а во-вторых ID должен быть ЛОНГОВЫМ(long) значением а не double

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

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

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

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

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

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

Войти

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

Войти

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


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

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