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

От xbms, 13 апреля, 2013 в Уголок Программиста

#51

//+------------------------------------------------------------------+
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.

#52


//+------------------------------------------------------------------+
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.ex427 скач.
Martin.mq463 скач.

#53

Всем привет!

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

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

Изменено 24 июня, 2013 пользователем larhange

#54


Спасибо, подправил, но вот выскакивают постоянно ошибки:
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;
}

Изменено 23 июня, 2013 пользователем Romhacker

#55

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

Martin.ex473 скач.
Martin.mq4241 скач.

#56

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

Автор#57


Подправил, уже лучше, но по-прежнему висит ошибка:
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
всё работает как часики, в целом молодец :)
#58

Спасибо, в самом деле как часики :)
#59

Dimasyok

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

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

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

#60


Dimasyok

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

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

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



Тестил на Н1 за 2013 год, да в самом деле прибыль очееень хорошая
#61

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

#62


На М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ДЗ.ex458 скач.
Test3ДЗ.mq4147 скач.

Изменено 24 июня, 2013 пользователем Dimasyok

#63

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

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

Test.zip25 скач.

Автор#64

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

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

#65

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

Tester_5.mq426 скач.

Автор#66


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



Ты может файлы попутал?
там у тебя всего две строчки...
#67

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


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

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

Tester_6.mq447 скач.

Изменено 26 июня, 2013 пользователем denis77515

Автор#68

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

#69

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

Автор#70


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



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

Изменено 26 июня, 2013 пользователем xbms

#71

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


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

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

Изменено 26 июня, 2013 пользователем denis77515

Автор#72
Цитата


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



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

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

#74

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


Переменная 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.mq423 скач.

Изменено 26 июня, 2013 пользователем Шамиль

Автор#75

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

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


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

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

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

Stoch_EA-mm-V4.mq4215 скач.

Изменено 26 июня, 2013 пользователем xbms

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

Перейти к списку тем
Форум · 2.0.20260627.0025