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

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


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

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

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

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

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

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

Перейти

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

Перейти

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

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

А помочь можешь? так быстрее было бы.
Я вложил файлы, diverg.mq4 это будет сова. Туда подключил через iCustom индикатор DiverStoch. Но я уверен что перенес не все, если будет у кого время, гляньте пожалуйста, очень надо.!

Кто поможет сделать, можно договориться о вознаграждении!

DiverStoch.mq4
diverg.mq4
diverg.ex4

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

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

Уважаемый Xbms и все кто в теме!
Подскажите пожалуйста, иногда надо сигнал индикатора в подокне, вывести в главное окно, чтобы удобней сигналы отследить. Я понимаю, что можно отдельный инди написать для главного окна, но бывает проще кусок кода вставить и глянуть по-быстрому.
Я нашёл такой код, чтобы добавить в конец главного цикла:
if (CCIBuffer > 0)
{
string Obj_Name = "CCI" + Time;
if (ObjectFind(Obj_Name) == -1)
ObjectCreate (Obj_Name, OBJ_TEXT, 0,0,0); // Создаём объект
ObjectSet (Obj_Name, OBJPROP_TIME1, Time); // Координата Х
ObjectSet (Obj_Name, OBJPROP_PRICE1, Low); // Координата Y
ObjectSetText(Obj_Name,"+",8,"Arial Black",Green); // Текстовое описание
WindowRedraw(); // Обновление
}
else if (CCIBuffer {
Obj_Name = "CCI" + Time;
if (ObjectFind(Obj_Name) == -1)
ObjectCreate (Obj_Name, OBJ_TEXT, 0,0,0); // Создаём объект
ObjectSet (Obj_Name, OBJPROP_TIME1, Time); // Координата Х
ObjectSet (Obj_Name, OBJPROP_PRICE1, High); // Координата Y
ObjectSetText(Obj_Name,"+",8,"Arial Black",Red); // Текстовое описание
WindowRedraw(); // Обновление
}
Но когда я меняю "Координату Y" на High, объект появляется не над High свечи, а ниже. Как его приподнять до "над High"? Добавляю иллюстрацию для визуальной обсервации и исключения ментальной обструкции :)

eurusdm15c.png

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

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

Здравствуйте, xbms! Большая просьба, подсказать где мне найти информацию по работе с нулевым баром. Это мне нужно для написания эксперта. Я понимаю, что он незакончен и потому требует иного к себе отношения. Любая информация пригодится, любые ссылки на информацию. В частности, как он формируется в момент открытия.
Еще раз формулирую вопрос:
1. в момент открытия нулевого бара с приходом его первого тика чему равно Open(0) Close(0) High(0) и Low(0)?
2. то же самое с приходом 2 3....тиков, т.е как меняются со временем характеристики нулевого бара с приходом тиков
3. теперь о тике - у каждого тика(группового в т.ч.) чему равно Open(0) Close(0) High(0) и Low(0)?
4. где это написано в документации(учебниках) по мкл4? ссылки желательно.
5. насколько отличаются Open(0) Close(0) High(0) и Low(0) у разных ДЦ и брокеров?
6. а для следующих баров 1,2,3.... ?
Заранее благодарю.

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

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

Привет iljagor!

ух... жесть какая... :)
специально для Вас во вложении набросал целый советник!
Посмотрите его на досуге...

bars.mq4

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

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

Я понял, что можно написать целую статью о поведении Open(0) Close(0) High(0) и Low(0) с практическими выводами о написании экспертов. Я бы с удовольствием прочитал такую статью.
Дело в том, что разбираясь в коде известных и прибыльных советников и индикаторов, я часто вижу использование Open(0) Close(0) и подозреваю, что их прибыльность связана вовсе не с этим, так как Open(0) Close(0) High(0) и Low(0) и Open(1) Close(1) на мой взгляд весьма искуственные образования в отличии от High(1) и Low(1) и и вкладывать в них какой-то смысл, а тем более строить алгоритм советника с их использованием просто неправильно.


Добавлено: 04-11-2013 13:07:19

За Ваш ответ спасибо. Он мне действительно помог - хотя и не в полной мере. Я это сразу написал, но часть моего текста куда-то пропала - нет опыта форумных переписок Изменено пользователем iljagor
Ссылка на сообщение
Поделиться на другие сайты

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


Я понял, что можно написать целую статью о поведении Open(0) Close(0) High(0) и Low(0) с практическими выводами о написании экспертов. Я бы с удовольствием прочитал такую статью.
Дело в том, что разбираясь в коде известных и прибыльных советников и индикаторов, я часто вижу использование Open(0) Close(0) и подозреваю, что их прибыльность связана вовсе не с этим, так как Open(0) Close(0) High(0) и Low(0) и Open(1) Close(1) на мой взгляд весьма искуственные образования в отличии от High(1) и Low(1) и и вкладывать в них какой-то смысл, а тем более строить алгоритм советника с их использованием просто неправильно.



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

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

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

Я хочу написать код советника, который будет прибыль приносить. Для этого мне никак недостаточно выучить все операторы языка, при этом не разобравшись, с чем именно они оперируют. Даже читая код чужого советника, мне нужно понимать не только что он делает, но и почему, и что получится в результате его действий. Поэтому, встречая в коде советника Open(0) Close(0) High(0) и Low(0) я думаю, что я чего то не знаю, либо автор не очень грамотно использует эти конструкции.
Еще раз вопрос - правильно ли использовать в советнике Open(0) Close(0) High(0) и Low(0) или гораздо правильнее писать Ask, Bid, спред?

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

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


Я хочу написать код советника, который будет прибыль приносить. Для этого мне никак недостаточно выучить все операторы языка, при этом не разобравшись, с чем именно они оперируют. Даже читая код чужого советника, мне нужно понимать не только что он делает, но и почему, и что получится в результате его действий. Поэтому, встречая в коде советника Open(0) Close(0) High(0) и Low(0) я думаю, что я чего то не знаю, либо автор не очень грамотно использует эти конструкции.
Еще раз вопрос - правильно ли использовать в советнике Open(0) Close(0) High(0) и Low(0) или гораздо правильнее писать Ask, Bid, спред?



даже не знаю как тебе ответить, дружище...
быть может всё-таки лучше прочитать справку об этих функциях?
Вкратце, Open[0] - это цена открытия текущей свечи, соответственно Close[0] - цена закрытия текущей свечи, High и Low - это экстремумы свечи

Надеюсь, что ты знаешь что такое Ask, Bid и спред...

P.S.: Задача в разработке советника, который будет приносить прибыль достаточно серьёзная, и считаю, что тебе следует уделить немного больше времени изучению базовых функций, нежели ты уделил ранее...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Получился бессмысленный цикл while(k=k)
попросил почитать теорию-сказали: чаво читать, смотри глазами
посмотрел, не все понял - так ты ж теории то не читал.
Я понимаю -High(1) -объективная хотя и случайная величина, будет почти одинаковой у всех ДЦ в данный момент и на данной паре.
Open(1) Close(1) абсолютно произвольные величины, которые и близко совпадать не будут у разных ДЦ в данный момент и на данной паре.
Сказку о том, как средневековые японцы торговали мешочками с рисом и как у них очень осмысленно и продуманно получался Open и Close дневного диапазона а также Ask и Bid мне очень красиво и за мои деньги навешали на уши на курсах по форексу. А также о том, что большинство индикаторов и много советников использует именно эти параметры. Но умолчали о том, что сегодняшняя электронная биржа(я уж не говорю о ДЦ) существенно отличается от средневековой группки японцев. Своими триллионами долларов в ежедневном обороте, сотнями тысяч участников, круглосуточной работой и отсутствием явного начала и конца дня. Какое открытие и закрытие может быть у 5мин, 15мин. 30мин. часового диапазона? Какие алгоритмы можно на этом построить? Я надеюсь, что программист меня поймет. А узконаправленный кодировщик вести такие курсы не будет...

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
iljagor, скажу честно, Вы меня немного заинтриговали...
вижу, Вы довольно неглупый человек, но "попавший не в те руки" :)

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

1. Функции всего-лишь отражают цены
2. Индикаторы следуют за ценой и отображают действительность, прошедшую...
3. Что-то, например, свою торговую систему на этом можно построить, если уловить какую-то закономерность...
4. Навыки программирования Вам помогут эту самую систему построить.

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

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


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

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

Доброй ночи!
При выполнении 4-го урока возникла проблема: ругается МетаЭдитор при компиляции файла!
Никак не могу найти ошибку... Помогите, пожалуйста!

З.Ы. Просьба тапками не кидать, я в этом деле новичок.

Leson_4.mq4
Leson4+log.rar

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

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


Я хочу написать код советника, который будет прибыль приносить. Для этого мне никак недостаточно выучить все операторы языка, при этом не разобравшись, с чем именно они оперируют. Даже читая код чужого советника, мне нужно понимать не только что он делает, но и почему, и что получится в результате его действий. Поэтому, встречая в коде советника Open(0) Close(0) High(0) и Low(0) я думаю, что я чего то не знаю, либо автор не очень грамотно использует эти конструкции.
Еще раз вопрос - правильно ли использовать в советнике Open(0) Close(0) High(0) и Low(0) или гораздо правильнее писать Ask, Bid, спред?




Здарова iljagor разреши пару слов!!! Может тебе станет яснее! Я смотрю ты написал что у тебя опыта в торговли нет, да и судя по твоим словам это можно заметить! Ты мне напомнил меня пару лет назад! Ну а короче вот что я могу тебе сказать:

1. Прибыльная торговля не зависит от кода, а зависит от твоего опыта на рынке!

2. Тебе надо забыть про код на годик хотя бы и набраться опыта в торговли и индикаторах, дабы код прибыли не приносит, а прибыль приносят условия которые ты описываешь в коде, и прибыльность этих условий зависит от твоего опыта!

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

4. С кодом проблем не будет после просмотра всех уроков мистера xbms в этом уверяю!!!

5. Удачи ;)
Ссылка на сообщение
Поделиться на другие сайты

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


Я понимаю -High(1) -объективная хотя и случайная величина, будет почти одинаковой у всех ДЦ в данный момент и на данной паре.
Open(1) Close(1) абсолютно произвольные величины, которые и близко совпадать не будут у разных ДЦ в данный момент и на данной паре.


Мне кажется Вы не правильно понимаете понятия Open() Close() High() Low(). Терминал принимает тики, но не сохраняет тиковую историю. На базе тиков строятся свечи(бары), минимальные это М1. То есть в истории терминала каждую минуту сохраняется 4 цены этй минуты, из минутных цен строятся цены М5 и так далее. Ну а затем индикаторы должны брать из истории именно эти цены, т.к. других цен в истории просто нет. Самые точные цены получаюся на М1 и самые точные тесты. Удачи. Изменено пользователем turu
Ссылка на сообщение
Поделиться на другие сайты

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


Доброй ночи!
При выполнении 4-го урока возникла проблема: ругается МетаЭдитор при компиляции файла!
Никак не могу найти ошибку... Помогите, пожалуйста!

З.Ы. Просьба тапками не кидать, я в этом деле новичок.




Вот держи прикрепливаю исправленный в низу!!! Пару скобок лишних , точки с запятой не хватало вот теперь работает!!! OrderSelect если хочеш проверь на false я прсто написал!!!
Начиная с
void ModifyOrders (int otype)


ОШИБКА
 if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)

напиши просто
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);

или
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

или
if (OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES) ==true)

а после OrderModify надо ;
OrderModify (OrderTicket (), OrderOpenPrice (), 0, TP, 0, CLR_NONE)


Добавлено: 05-11-2013 02:48:47



Я понимаю -High(1) -объективная хотя и случайная величина, будет почти одинаковой у всех ДЦ в данный момент и на данной паре.
Open(1) Close(1) абсолютно произвольные величины, которые и близко совпадать не будут у разных ДЦ в данный момент и на данной паре.


Мне кажется Вы не правильно понимаете понятия Open() Close() High() Low(). Терминал принимает тики, но не сохраняет тиковую историю. На базе тиков строятся свечи(бары), минимальные это М1. То есть в истории терминала каждую минуту сохраняется 4 цены этй минуты, из минутных цен строятся цены М5 и так далее. Ну а затем индикаторы должны брать из истории именно эти цены, т.к. других цен в истории просто нет. Самые точные цены получаюся на М1 и самые точные тесты. Удачи.


Вы наверное имеете в виду:
Open[1]

так-как Open(1) не существует!
Да это простой массив который содержит цены открытия всех баров в текущем чарте и всего лишь! И соответственно Close[]; High[]; и т.д. Допустим если тебе надо цена открытия прошедшего 10го бара то:
Comment(Open[10]);

Если кто-то пишет Close[1]; имеет ввиду цену закрытия первой свечи так как текущая Close[0];



Добавлено: 05-11-2013 04:21:11


Здравствуйте, xbms! Большая просьба, подсказать где мне найти информацию по работе с нулевым баром. Это мне нужно для написания эксперта. Я понимаю, что он незакончен и потому требует иного к себе отношения. Любая информация пригодится, любые ссылки на информацию. В частности, как он формируется в момент открытия.
Еще раз формулирую вопрос:
1. в момент открытия нулевого бара с приходом его первого тика чему равно Open(0) Close(0) High(0) и Low(0)?
2. то же самое с приходом 2 3....тиков, т.е как меняются со временем характеристики нулевого бара с приходом тиков
3. теперь о тике - у каждого тика(группового в т.ч.) чему равно Open(0) Close(0) High(0) и Low(0)?
4. где это написано в документации(учебниках) по мкл4? ссылки желательно.
5. насколько отличаются Open(0) Close(0) High(0) и Low(0) у разных ДЦ и брокеров?
6. а для следующих баров 1,2,3.... ?
Заранее благодарю.



Open[0]; - цена по которой открылся текущий ещё не закрытый бар она не меняется!
Close[0]; - етой цены ещё нет так как бар текущий, то есть это сама цена которая пляшет туда сюда!
High[0] и Low[0] - текущие то есть могут переписаться в любой момент! С каждым тиком они могут и не меняться, High[0] перепишется только если цена прыгнет выше его последнего значения а пока она ниже значение не поменяется!

if(Open[0]
Обычно больше ориентируются на уже закрытые свечи значения которых уже не изменятся Close[1]

Leson_4.mq4

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

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

Для желающих продолжать изучение MQL написан мега прибыльный индикаторный советник:

http://tlap.com/forum/laboratoriya-profitfx/24/open-source-sovetnik-na-indikatorah-heiken-ashi-williams-percent-range/5454

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

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


Очень-очень прошу, подскажите пожалуйста, как сделать, что бы значение stoploss бралось из standart deviation * 2 ?



а что сие значит?
Standart deviation - всего-лишь осцилятор, как Вы хотите получить StopLoss?
Ссылка на сообщение
Поделиться на другие сайты

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



Очень-очень прошу, подскажите пожалуйста, как сделать, что бы значение stoploss бралось из standart deviation * 2 ?



а что сие значит?
Standart deviation - всего-лишь осцилятор, как Вы хотите получить StopLoss?


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


Планирую написать функцию аля - getstoploss(int param1,int param2), которая в зависимости от входящего параметра будет выдавать размер стоп лосс по запрограммированым в нее методам. Т.е будет достаточно просто вставить эту функцию в OrderSend и быстро оптимизировать стоп лосс любой торговой стратегии/советника.

Планируемые методы реализации для стоп лосса:

1. Процент от общего размера депозита.
StopLoss = Сумма счета*Процент/100;

2. Отклонение от текущей цены в %.
StopLoss = Price - (Price ∗ (( 100 — percent(%))/100));

3. Срабатывание стопа по касанию средней ценой.
Указываем размер стоплосса в пунктах, но срабатывает он только тогда когда MA(period) касается цены.

4. По ATR.
StopLoss = ATR(value);

5. По Standard Deviation
StopLoss = StdDev (value);



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

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




Очень-очень прошу, подскажите пожалуйста, как сделать, что бы значение stoploss бралось из standart deviation * 2 ?



а что сие значит?
Standart deviation - всего-лишь осцилятор, как Вы хотите получить StopLoss?


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


Планирую написать функцию аля - getstoploss(int param1,int param2), которая в зависимости от входящего параметра будет выдавать размер стоп лосс по запрограммированым в нее методам. Т.е будет достаточно просто вставить эту функцию в OrderSend и быстро оптимизировать стоп лосс любой торговой стратегии/советника.

Планируемые методы реализации для стоп лосса:

1. Процент от общего размера депозита.
StopLoss = Сумма счета*Процент/100;

2. Отклонение от текущей цены в %.
StopLoss = Price - (Price ∗ (( 100 — percent(%))/100));

3. Срабатывание стопа по касанию средней ценой.
Указываем размер стоплосса в пунктах, но срабатывает он только тогда когда MA(period) касается цены.

4. По ATR.
StopLoss = ATR(value);

5. По Standard Deviation
StopLoss = StdDev (value);





Ну тогда, вероятно, как-то так нужно делать:
double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);
StopLoss = Price - (Price ∗ ((100 — val)/100));

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

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





Очень-очень прошу, подскажите пожалуйста, как сделать, что бы значение stoploss бралось из standart deviation * 2 ?



а что сие значит?
Standart deviation - всего-лишь осцилятор, как Вы хотите получить StopLoss?


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


Планирую написать функцию аля - getstoploss(int param1,int param2), которая в зависимости от входящего параметра будет выдавать размер стоп лосс по запрограммированым в нее методам. Т.е будет достаточно просто вставить эту функцию в OrderSend и быстро оптимизировать стоп лосс любой торговой стратегии/советника.

Планируемые методы реализации для стоп лосса:

1. Процент от общего размера депозита.
StopLoss = Сумма счета*Процент/100;

2. Отклонение от текущей цены в %.
StopLoss = Price - (Price ∗ (( 100 — percent(%))/100));

3. Срабатывание стопа по касанию средней ценой.
Указываем размер стоплосса в пунктах, но срабатывает он только тогда когда MA(period) касается цены.

4. По ATR.
StopLoss = ATR(value);

5. По Standard Deviation
StopLoss = StdDev (value);





Ну тогда, вероятно, как-то так нужно делать:
double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);
StopLoss = Price - (Price ∗ ((100 — val)/100));

разумеется, +/- зависит от направления ордера


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

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

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

Спойлер


if(OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-2,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-3,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-4,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-5,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-6,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-7,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-8,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
sell();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}


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

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


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

Спойлер


if(OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-2,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-3,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-4,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-5,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-6,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-7,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
if(OrderSelect(HistoryTotal()-8,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit() {
sell();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}


Как можно сделать более лаконично?


рекомендую посмотреть урок №2
http://tradelikeapro.ru/izuchaem-mql-urok-n-2-tsiklyi-funktsii-i-ordera-v-sovetnike/

после просмотра моментально сможете уложиться в 5 строк кода вместо этого монстра... :)

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

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

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

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

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

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

Войти

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

Войти

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


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

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