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

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


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

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


Что Вы хотите сказать 99% людей платят услугу VPS сервера? или держат свои компьютера включёнными неделями? хаха! не понял я твой ответ дружище! ну до ладно!!!


Именно так и есть, 99% держат VPS и платят 5$ в месяц, чтобы советник всегда мог быть в рынке и приносил прибыль. Поверьте 5$ не такая уж огромная сумма, чтобы жить комфортнее.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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



Что Вы хотите сказать 99% людей платят услугу VPS сервера? или держат свои компьютера включёнными неделями? хаха! не понял я твой ответ дружище! ну до ладно!!!


Именно так и есть, 99% держат VPS и платят 5$ в месяц, чтобы советник всегда мог быть в рынке и приносил прибыль. Поверьте 5$ не такая уж огромная сумма, чтобы жить комфортнее.


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

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


Оооо молодцы!!! Не знал! Ну да значит я исключение!!! То есть реальной проблемы нет да? То что я его вешаю и снимаю его функциональность не нарушит да? то есть он с ума не сойдёт, будет чётко продолжать работать при сбросе интернета допустим и его последующей перезагрузки нет проблем?


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

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

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



Оооо молодцы!!! Не знал! Ну да значит я исключение!!! То есть реальной проблемы нет да? То что я его вешаю и снимаю его функциональность не нарушит да? то есть он с ума не сойдёт, будет чётко продолжать работать при сбросе интернета допустим и его последующей перезагрузки нет проблем?


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

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


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

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


Помогите!!! Будьте добры, гляньте кто-то свежим взглядом, никак не найду одну ошибку.



А какой тип ошибки то? Что копилатор говорит чтоб знать боле менее в чём дело!
Ну а на первый взгляд для меня эта строчка странная

BlueLine ==0


Как это читается? Я думал это только для проверки условий if(....==....


Добавлено: 10-10-2013 21:04:08



Помогите!!! Будьте добры, гляньте кто-то свежим взглядом, никак не найду одну ошибку.



А какой тип ошибки то? Что компилятор говорит чтоб знать боле менее в чём дело!
Ну а на первый взгляд для меня эта строчка странная

BlueLine ==0


Как это читается? Я думал это только для проверки условий if(....==....
А иначе компилятор скажет '==' assignment expected

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

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

'\end_of_program' - unbalanced left parenthesis D:\Forex4you\experts\Naglaya_001 (1).mq4 (131, 1). Насколько я поняла, вариантов масса. BlueLine ==0 - попытка сделать синюю линию нулевой осью, что ли, пересечение с которой дает сигнал ко входу или к выходу из позиции.

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

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


'\end_of_program' - unbalanced left parenthesis D:\Forex4you\experts\Naglaya_001 (1).mq4 (131, 1). Насколько я поняла, вариантов масса. BlueLine ==0 - попытка сделать синюю линию нулевой осью, что ли, пересечение с которой дает сигнал ко входу или к выходу из позиции.



Первый раз вижу такую запись!!! I

А вообще очень странно написаны функции countbuy() y countsell() я там вижу точку с запятой сразу после цикла for(......); это для меня очень странно!!! И после if(); тоже первый раз вижу! Они там лишние!

Я думаю это всё не правильно посмотрите урок 2 на счёт функций CountBuy y CountSell они неправильно написаны у Вас! А на счёт BlueLine==0 не понятно вообще! Может BlueLine =0; тогда ясно! Изменено пользователем elruso
Ссылка на сообщение
Поделиться на другие сайты

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


Помогите!!! Будьте добры, гляньте кто-то свежим взглядом, никак не найду одну ошибку.





Во вложении исправлены синтаксические ошибки, логику Вам придётся проверить самостоятельно :)

Naglaya_001_1.mq4

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

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

Добрый день или вечер.

Давно подумывал о советники, который будет заниматься моими ордерами, и вот результат.
Написал модуль, который выполняет некоторые функции(пока только для бая)
1. подхватывает созданный ордер для выбранного инструмента.
2. ставит ему стоп.
3. при достижении 1 уровня БУ, переводит в БУ и закрывает часть прибыли(в % от начального лота(0.5 = 50%))
4. при достижении 2 уровня БУ, подтягивает стоп(можно выбрать на какой уровень) и закрывает выбранный % от начального лота.
5. 3 уровень - финальный тейкпрофит, закрывает остаток позы.

хотелось бы услышать критику и комментарии от более образованных людей)(что добавить, где убрать, и всё в таком духе)

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

п.п.с для села исправить всего лишь пару знаков, для меня не составит труда:)

breakeven.mq4

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

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



Помогите!!! Будьте добры, гляньте кто-то свежим взглядом, никак не найду одну ошибку.





Во вложении исправлены синтаксические ошибки, логику Вам придётся проверить самостоятельно :)


Спасибо Вам большое за помощь.
А по поводу
distance = (RedLine - BlueLine) > 0;
if (distance >= Diff)
я пыталась задать синюю линию за нулевую и, если красная поднимается над ней, открывается ордер buy, а если над ней поднимается зеленая, то sell. Видимо, мой способ неверен. Может быть как-то иначе задавать нужно?
Ссылка на сообщение
Поделиться на другие сайты

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

Ребята привет,я так понимаю господин XBMS выпустил урок 1,5. Просьба скиньте ссылку опоздавшему на поезд... :d :d :d


Добавлено: 11-10-2013 13:57:30

Спасибо,не беспакойтесь уже нашел на сайте,тупанул не много :)) :d :d :dв попыхах Изменено пользователем denis77515
Ссылка на сообщение
Поделиться на другие сайты

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


Ребята привет,я так понимаю господин XBMS выпустил урок 1,5. Просьба скиньте ссылку опоздавшему на поезд... :d :d :d


http://tradelikeapro.ru/category/uroki-po-mql/



А по поводу
distance = (RedLine - BlueLine) > 0;
if (distance >= Diff)
я пыталась задать синюю линию за нулевую и, если красная поднимается над ней, открывается ордер buy, а если над ней поднимается зеленая, то sell. Видимо, мой способ неверен. Может быть как-то иначе задавать нужно?



Вы присваиваете переменной distance значение, нельзя при этом ещё и сравнивать.
Математика: x = (2+2)*3
Что получится, если написать x = (2+2)*3 > 0... ?

Условия должны идти отдельно: если красная выше (больше) синей, значит делаем то-то.
if (RedLine - BlueLine > 0) OrderSend... например.

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

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




А по поводу
distance = (RedLine - BlueLine) > 0;
if (distance >= Diff)
я пыталась задать синюю линию за нулевую и, если красная поднимается над ней, открывается ордер buy, а если над ней поднимается зеленая, то sell. Видимо, мой способ неверен. Может быть как-то иначе задавать нужно?



Вы присваиваете переменной distance значение, нельзя при этом ещё и сравнивать.
Математика: x = (2+2)*3
Что получится, если написать x = (2+2)*3 > 0... ?

Условия должны идти отдельно: если красная выше (больше) синей, значит делаем то-то.
if (RedLine - BlueLine > 0) OrderSend... например.



Спасибо. Попробую исправить.

Добавлено: 11-10-2013 19:57:05





А по поводу
distance = (RedLine - BlueLine) > 0;
if (distance >= Diff)
я пыталась задать синюю линию за нулевую и, если красная поднимается над ней, открывается ордер buy, а если над ней поднимается зеленая, то sell. Видимо, мой способ неверен. Может быть как-то иначе задавать нужно?



Вы присваиваете переменной distance значение, нельзя при этом ещё и сравнивать.
Математика: x = (2+2)*3
Что получится, если написать x = (2+2)*3 > 0... ?

Условия должны идти отдельно: если красная выше (больше) синей, значит делаем то-то.
if (RedLine - BlueLine > 0) OrderSend... например.



Спасибо. Попробую исправить.

Вроде исправила, но не работает. Посмотрите?

Naglaya_001_1.mq4
KDJ.mq4

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

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


Добрый день или вечер....

уже нашел пару ошибок, со стоп лосом:)
видимо никому это не интересно рако-код смотреть :">

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

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


Добрый день или вечер....

уже нашел пару ошибок, со стоп лосом:)
видимо никому это не интересно рако-код смотреть :">



Привет!
Смотрел. Не понял зачем balance.
Здесь:
if(NormalizeDouble(Bid-OrderOpenPrice(), Digits)*balance*Point >= first_Take_Profit*Point)

Если обе части сравнения умножаются на Point, значит его можно вообще убрать...

Так же, после OrderSelect, лучше сначала проверить символ и тип, а потом уже считать и тикет присваивать (если ордер не наш, нечего процессор лишней работой нагружать :d)
Ссылка на сообщение
Поделиться на другие сайты

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


Привет!
Смотрел. Не понял зачем balance.



Чтобы найти кол-во пунктов между ценой и стопом(именно в пунктах), нужно домножить на эту переменную)
Ссылка на сообщение
Поделиться на другие сайты

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


Чтобы найти кол-во пунктов между ценой и стопом(именно в пунктах), нужно домножить на эту переменную)


(Bid - SL)/Point - получится цена в пунктах.
(1,3030 - 1,3000)/0,0001 = 30
(1,30300 - 1,30000)/0,00001 = 300
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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



Чтобы найти кол-во пунктов между ценой и стопом(именно в пунктах), нужно домножить на эту переменную)


(Bid - SL)/Point - получится цена в пунктах.
(1,3030 - 1,3000)/0,0001 = 30
(1,30300 - 1,30000)/0,00001 = 300

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

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




Чтобы найти кол-во пунктов между ценой и стопом(именно в пунктах), нужно домножить на эту переменную)


(Bid - SL)/Point - получится цена в пунктах.
(1,3030 - 1,3000)/0,0001 = 30
(1,30300 - 1,30000)/0,00001 = 300

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


я вот так пишу всем привет!!!


int //spr=MarketInfo(Symbol(), MODE_SPREAD);
int Loss = MathAbs(Ask-SL)/Point;
//int distance = Loss+spr;
Comment(Loss);


MathAbs поможет обсолютное вывести для отрицательного!
double MathAbs( double value)
Returns the absolute value (modulus) of the specified numeric value.
Parameters:
value - Numeric value.
Sample:
double dx=-3.141593, dy;
// calc MathAbs
dy=MathAbs(dx);
Print("The absolute value of ",dx," is ",dy);
// Output: The absolute value of -3.141593 is 3.141593

Screen_Shot_2013-10-11_at_6.48.42_PM.png

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

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


Спойлер




Чтобы найти кол-во пунктов между ценой и стопом(именно в пунктах), нужно домножить на эту переменную)


(Bid - SL)/Point - получится цена в пунктах.
(1,3030 - 1,3000)/0,0001 = 30
(1,30300 - 1,30000)/0,00001 = 300

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


я вот так пишу всем привет!!!


int //spr=MarketInfo(Symbol(), MODE_SPREAD);
int Loss = MathAbs(Ask-SL)/Point;
//int distance = Loss+spr;
Comment(Loss);


MathAbs поможет обсолютное вывести для отрицательного!
double MathAbs( double value)
Returns the absolute value (modulus) of the specified numeric value.
Parameters:
value - Numeric value.
Sample:
double dx=-3.141593, dy;
// calc MathAbs
dy=MathAbs(dx);
Print("The absolute value of ",dx," is ",dy);
// Output: The absolute value of -3.141593 is 3.141593



Не хочу пока забивать голову ещё и расчетом спреда, если честно)))

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

Критической разницы нет, хотя может это я её не вижу...
Всё ровно часть переменных надо прогонять через инит.

п.с. очень жажду комментариев.

new_BE.mq4
modify_BE.mq4

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

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

Всем привет!

mzk_3om6u, интересно написано :).
Снова о порядке условий... сначала OrderSymbol, потом OrderMagicNumber, потом OrderType, затем остальное.

В самом начале можно проверить на наличие ордеров, т.е., если ордеров нет, ничего и не делаем:

Спойлер

int start()
{
if(OrdersTotal() > 0) Result_BE_and_SL_and_TP();
return(0);
}

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

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


Всем привет!

mzk_3om6u, интересно написано :).

Спойлер

Снова о порядке условий... сначала OrderSymbol, потом OrderMagicNumber, потом OrderType, затем остальное.

В самом начале можно проверить на наличие ордеров, т.е., если ордеров нет, ничего и не делаем:

Спойлер

int start()
{
if(OrdersTotal() > 0) Result_BE_and_SL_and_TP();
return(0);
}



спасибо за коммент, я конечно понимаю в таких маленьких программках, не критична последовательность проверок(на 0.0000000000001) производительность замедлится, но правила хорошего тона, все дела)тоже самое в функции старт)))всё ровно понимаю, что надо рационализировать, если можно меньше ресурсов тратить, то зачем усложнять)))
исправлю эти недочеты:)
была опечатка с лотами, что вызывало ошибку 131, нашел и исправил:)
прикрутил эту штуку, к "советнику на ТМА" из обучения - работает)))

Добавлено: 13-10-2013 23:19:56

Доброе утро.

У меня возник вопрос, например:
Можно прикрепить в подвал RSI и на него по вешать уже MA, как в коде mql4 такой момент работает?
iMa не имеет нужной опции, значит единственный вариант в ручную пересчитывать нужную МА для RSI?
iMAOnArray() вот такая штука походу может доставать данные)))методом на коленке, получил данные, теперь осталось собрать в кучу...или есть альтернативы?)
Изменено пользователем mzk_3om6u
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Доброе утро.

У меня возник вопрос, например:
Можно прикрепить в подвал RSI и на него по вешать уже MA, как в коде mql4 такой момент работает?
iMa не имеет нужной опции, значит единственный вариант в ручную пересчитывать нужную МА для RSI?
iMAOnArray() вот такая штука походу может доставать данные)))методом на коленке, получил данные, теперь осталось собрать в кучу...или есть альтернативы?)



Тоже интересно!
Есть прикольный индикатор - RSI с наложенной машкой, + выводит на экран текущие значения обоих линий.
Можно вытаскивать значения из него.
(Попробую разобраться в коде :-b )



Добавлено: 14-10-2013 12:57:00

Ага, тоже дошло: iMAOnArray позволяет считать МА относительно буфера RSI. :d <:-p>RSI+MA+LABEL.mq4
Изменено пользователем Vorchunozavr
Ссылка на сообщение
Поделиться на другие сайты

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

у меня вопрос:

По каким причинам может быть проигнорирована функция OrderClose()?

{               
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + second_level_BE*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
Sleep(2000);

if(first_close_part_of_lot>0)
{
OrderClose(OrderTicket(), NormalizeDouble(OrderLots()/(1-first_close_part_of_lot/100),2)*second_close_part_of_lot/100, Bid, slippage, Black);
Sleep(2000);
}
else
{
OrderClose(OrderTicket(), NormalizeDouble(OrderLots()*second_close_part_of_lot/100,2), Bid, slippage, Black);
Sleep(2000);
}
}


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

И почему такие проблемы вообще возникают? Вроде всё по пунктам идёт... Изменено пользователем mzk_3om6u
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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