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

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


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

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

//+------------------------------------------------------------------+
double FindLastPrice(int otype)
{
double oldopenprice;
int oldticket;

ticket = 0;

for(int i = OrdersTotal()-1; i>0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldopenprice = OrderOpenPrice();
ticket = oldticket;
}
}
}
}
return(oldopenprice);
}

В этом цикле ошибка. Должно быть i>=0.

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

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

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

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

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

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

Перейти

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

Перейти

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

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


//+------------------------------------------------------------------+
double FindLastPrice(int otype)
{
double oldopenprice;
int oldticket;

ticket = 0;

for(int i = OrdersTotal()-1; i>0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldopenprice = OrderOpenPrice();
ticket = oldticket;
}
}
}
}
return(oldopenprice);
}

В этом цикле ошибка. Должно быть i>=0.


Спасибо, подправил, но вот выскакивают постоянно ошибки:
2013.06.23 01:06:14 2011.11.09 23:36 Martin EURUSD,H1: invalid lots amount for OrderSend function
2013.06.23 01:06:14 2011.11.09 23:40 Martin EURUSD,H1: OrderSend error 4051
2013.06.23 01:06:15 2012.02.13 15:59 Martin EURUSD,H1: OrderModify error 1

Martin.ex4
Martin.mq4

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

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

Всем привет!

Считаю что было бы очень не плохо, перед началом следующего урока, разбирать домашнее задание предыдущего!

Как кто считает?

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

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


Спасибо, подправил, но вот выскакивают постоянно ошибки:
2013.06.23 01:06:14 2011.11.09 23:36 Martin EURUSD,H1: invalid lots amount for OrderSend function
2013.06.23 01:06:14 2011.11.09 23:40 Martin EURUSD,H1: OrderSend error 4051
2013.06.23 01:06:15 2012.02.13 15:59 Martin EURUSD,H1: OrderModify error 1


if(Bid {
lastlot = FindLastLots(OP_BUY);
if (lastlot lastlot = NormalizeDouble(lastlot * Multipler, 2);
Print("Last Lot = ", DoubleToStr(lastlot,2));
ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, Slippage, 0, 0, "", Magic,0, Red);
}
В этом условии должно быть (Bid >= price + Step*Point).
И проверку надо добавить такую
lastlot = FindLastLots(OP_BUY);
if (lastlot
Добавлено: 23-06-2013 15:13:20

Да и ещё в функции инициализации надо добавить проверку:
if(Digits == 3 || Digits == 5){

TakeProfit *= 10;
Step *= 10;
Slippage *= 10;
MaxLoss *= 10;
} Изменено пользователем Romhacker
Ссылка на сообщение
Поделиться на другие сайты

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

Большое спасибо за уроки, если можно сделайте еще урок по применению в советнике внешних индикаторов. Не совсем понятно как использовать стрелочные индикаторы или индикаторы меняющие цвет.

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

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


Подправил, уже лучше, но по-прежнему висит ошибка:
OrderModify error 1



Итак, я поправил функцию ModifyOrders следующим образом:
              if (NormalizeDouble(OrderTakeProfit(), Digits) != TP)
OrderModify(OrderTicket(), OrderOpenPrice(), 0, TP, 0, 0);


так мы избавились от ошибки OrderModify error 1

и поправил закрытие ордеров при убытке:
                       if (OrderType() == OP_BUY)  OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black);


так закрыли ошибки 4108
всё работает как часики, в целом молодец :)
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Dimasyok

Кстати, твой Мартин с данными исправлениями, очень хорошо себя показывает на тесте, а именно

пара EURUSD, таймфрейм М15

Попробуй сам!)

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

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


Dimasyok

Кстати, твой Мартин с данными исправлениями, очень хорошо себя показывает на тесте, а именно

пара EURUSD, таймфрейм М15

Попробуй сам!)



Тестил на Н1 за 2013 год, да в самом деле прибыль очееень хорошая
Ссылка на сообщение
Поделиться на другие сайты

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


На М15, за тот же период, тебе понравиться ещё больше!



Всё зависит от настроек... но я думаю наш диалог это уже оффтоп :)

Добавлено: 24-06-2013 15:02:33




xbms, добрый день

При частичном закрытии ордера, оставшийся ордер сохраняет magic исходного ордера?



Да, сохраняет...
Вы ведь закрываете только часть объёма этого ордера...


Добавлено: 04-06-2013 05:43:49

Кстати, а где домашние задания?
Кто-то вообще смотрит уроки?
Нужны они кому-то?


Конечно нужны, к 1 уроку дз не делал, вот ко второму сделал, а третье сейчас мучаю.

Добавлено: 15-06-2013 09:57:29

Вот закончил домашнее задание к 3 уроку. Но немогу пока прикрепить, потому-что больше 4-х вложений вставлять нельзя....


Вот кстати вспомнил, что не выкладывал к 3-му уроку д/з

Test3ДЗ.ex4
Test3ДЗ.mq4

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

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

Доброго времени суток всем, ребята нужна помощь такого плана.Сергей выкладывал уроки по программированию
на MQL4 если честно являюсь чайником в этом, хотя когда то начинал заниматься програмированием на Basic, но это было давно.Так что думал разберусь,но не тут то оказалось.В общем он написал советника по мартину, а до этого было видео о циклак ордерах и все такое.Я видать что то не понял,написал,точнее слизал буква в букву,коды отдельно друг от друга компилируются нормально без ошибок,а вот объеденить у меня мозгов не хватает.

Суть его работы должна быть такова,расмотрим вариант Buy. Анализирует два последних бара,если цена ХАЙ выше Лоу предыдущего бара,то окрывает позицию на пакупку. Цена уходит ниже на определенное количество пунктов открывает еще один ордер,с увеличенным лотом,Модифицирует и выставляет общий Тейк Профит для всех ордеров.
На продажу то же, только на оборот.Еще надо ограничить количество открываемых ордеров,то есть задать количество открываемых ордеров во внешних параметрах,как в BUY так и в Sell отдельно друг от друга.
Если кому интересно свяжитесь со мной. Есть еще идея что туда можно прикрутить,я так торгую на реале,довольно не плохо только отслеживать все ордера в ручную ,напрягает очень. Прикрепляю два исходника в архиве 7-Zip, какие я написал,один рабочий, другой нет.Очень жду ваших ответов,заранее благодарен за уделенное время.

Test.zip

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

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

Привет, Денис!

А почему не обсудить накопившиеся вопросы в теме уроков?
http://tlap.com/forum/ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034

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

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

Здрасте всем,ребята смотрел уроки написал сову, но что не учел и не как не пойму в чем ошибка.Давайте разберем ее ? Ото получилась не сова, а так набор бесполезных символов.

Tester_5.mq4

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

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


Здрасте всем,ребята смотрел уроки написал сову, но что не учел и не как не пойму в чем ошибка.Давайте разберем ее ? Ото получилась не сова, а так набор бесполезных символов.



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

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

Ну да,сейчас исправлюсь.


Добавлено: 26-06-2013 05:21:18

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

Tester_6.mq4

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

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

Денис, я посмотрел Ваш код...
Вам нужно вернуться к началу, т.е. пересмотреть уроки 1,2,3.
Вы сейчас даже не понимаете что Вы там пишете или пытаетесь скопировать из видео...
В этом нет никакого смысла, если нет понимания.
Поэтому рекомендую посмотреть первые части, прежде чем приступать к написанию советника такого плана.

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

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

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

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

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


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



Информация добавлена в первый пост...

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

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

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


Добавлено: 26-06-2013 07:23:10

Уважаемый xbms,а поправить мою писанину можно? Привести в надлежащий вид ?
Изменено пользователем denis77515
Ссылка на сообщение
Поделиться на другие сайты

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


Уважаемый xbms,а поправить мою писанину можно? Привести в надлежащий вид ?



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

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

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


Переменная time_2 down_ содержит в себе время свечи. Мне это время надо вставить в ObjectCreate();

время должно быть с префиксом D (пример D'2013.01.09 16:00')

переменная содержит дату в виде
2013.01.09 16:00

ObjectCreate ругается

пропись в виде = "D"+time_down_2;

ObjectCreate ругается

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


Заранее благодарен.

perebor_svechey2.mq4

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

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

Шамиль, дружище, пока не решишь домашние задания по предыдущим темам, даже не пытайся лететь впереди поезда...

И новый минимум поТдержки тебе не вставить в ObjectCreate :)


Добавлено: 26-06-2013 14:50:00

В помощь изучающим MQL :)

Rita Lasker тут прислала исходник своего нового советника...
Эксперт работает, используя сразу три индикатора: Stochastic, RSI, WPR.
Изучающим MQL должно быть интересно, прикладываю...

Stoch_EA-mm-V4.mq4

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

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

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

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

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

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

Войти

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

Войти

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


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

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