Уроки по программированию на языке MQL4 от eevviill

ale002

::: __,,,^._.^,,,__ :::
Нажмите в терминале Ctrl + B, посмотрите в поле "Имя" - там будет "name", а не lime_100 или lime_200. Потому что у вас в коде написано name в кавычках, т.е. не переменная, а строковое значение. И каждый вызов функции создаёт объект с одним и тем же именем "name", поэтому он всегда будет только один. Уберите кавычки
 

Genadi22

Новичок форума
Добрый день...
Никак не могу справится вроде как бы и не сложной задачей...
А именно, - есть советник - который в оригинале - следит за открытыми ордерами и на каждый открытый выставляет отложенные лимитные ордера,- мне нужно что бы вместо лимитных ордеров открывал стоповые,- то есть вместо - BUYLIMIT - BUYSTOP,- в место SELLLIMIT - SELLSTOP,- я поменял лимитные ордера на стоповые,- но советник их не открывает...- при этом при компиляции не выдаёт ошибок - иными словами всё нормально,- но ордера не выставляет...- Помогите решить эту проблему или посоветуйте как её исправить...- Спасибо...
 

Вложения

  • LockFX.rar
    1,7 КБ · Просмотры: 39

Dobryj

Почетный гражданин
Добрый день...
Никак не могу справится вроде как бы и не сложной задачей...
А именно, - есть советник - который в оригинале - следит за открытыми ордерами и на каждый открытый выставляет отложенные лимитные ордера,- мне нужно что бы вместо лимитных ордеров открывал стоповые,- то есть вместо - BUYLIMIT - BUYSTOP,- в место SELLLIMIT - SELLSTOP,- я поменял лимитные ордера на стоповые,- но советник их не открывает...- при этом при компиляции не выдаёт ошибок - иными словами всё нормально,- но ордера не выставляет...- Помогите решить эту проблему или посоветуйте как её исправить...- Спасибо...

посмотри в журнал ошибок.
Почитай чем отличается стоповый ордер от лимитного :)
 

Genadi22

Новичок форума
посмотри в журнал ошибок.
Почитай чем отличается стоповый ордер от лимитного :)

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

при компиляции ошибок не пишет - всё по - 0,- и предупреждений тоже нет...
 
Последнее редактирование:

Genadi22

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

ниже отрезок кода:

if (TotalPositions == 0) return (0);
if (TotalPositions == 1) {
if (gi_320 >= 1 && gi_328 + gi_352 == 0 && gi_312 == TRUE) OrderSend(Symbol(), OP_BUYSTOP, Lots1, NormalizeDouble(Ask, Digits) - Distance1 * gd_260, gd_268, 0, 0, Comments, MagicNumber1, 0, Green);
if (gi_324 >= 1 && gi_332 + gi_356 == 0 && gi_316 == TRUE) OrderSend(Symbol(), OP_SELLSTOP, Lots1, NormalizeDouble(Bid, Digits) + Distance1 * gd_260, gd_268, 0, 0, Comments, MagicNumber1, 0, Red);
}
 
Последнее редактирование:

ale002

::: __,,,^._.^,,,__ :::
если в коде выставить лимитные ордера то открывает, если стоповые - то нет

Дак всё просто - если gd_260 положительное число, то вы пытаетесь фтыкать стоповую отложку НА ПОКУПКУ ниже текущей цены, а на продажу - выше. Просто вместе с типом ордера меняйте знак перед Distance1
 

Genadi22

Новичок форума
Дак всё просто - если gd_260 положительное число, то вы пытаетесь фтыкать стоповую отложку НА ПОКУПКУ ниже текущей цены, а на продажу - выше. Просто вместе с типом ордера меняйте знак перед Distance1

Большое спасибо,- от души и сердца...- стоко дней заморачивался,- аж мозги раскалились...
Всё заработало...
Желаю всего наилучшего и удачи во всём...
 

Genadi22

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

Dobryj

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

Думаю гаджет нужно в языке посерьезней чем mql 4 писать:)
 

Genadi22

Новичок форума
Что то eеvviill не видно,- может в отпуске...
я вот прочитал его уроки в первых постах...- и решил всё таки попробовать,- почти уверен что ничего не получится, но практика - добавит опыта - это точно...

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

#property show_inputs
extern int shiftx = 1;
extern int shifty = 1;
extern color BoxColor = DarkGray;

int start() {
if
ObjectCreate(Box);
ObjectSetText(Box, BoxColor);
ObjectSet(Box, OBJPROP_XDISTANCE, shiftx);
ObjectSet(Box, OBJPROP_YDISTANCE, shifty);
ObjectSet(Box, OBJPROP_COLOR, BoxColor);
/+ а как прописать - длину и ширину...
- или "Box" подразумевает квадрат
и вместо него надо вписать - Border +/

return ("0");
}
 

Krashid

Активный участник
Помогите пожалуйста засунуть индикатор в советник
 

Genadi22

Новичок форума
Добрый день… - EEVVIILL
Хочу сразу,- поблагодарить за предоставленные уроки,- и за то что Вы решили поделится своими знаниями…
Я уже в течении полутора лет перманентно пытаюсь изучить язык mql4,- и делал несколько практических попыток,- все попытки заканчивались – отрицательным результатом…
И вот, я прочитал и изучил Ваш урок №7… - и вдруг я чётко и ясно увидел и осознал то что мне всё время не хватало,- я увидел структуру – советника и теперь даже не важно смогу ли я его написать или нет,- важно для меня то что я могу вложить в него частицу своей души – это значит что он будет действовать именно так как я хочу,- я буду не токо понимать его,- я буду чувствовать его,- буду знать его слабые стороны,- это буду я – токо в электронном виде…
У меня сразу возникло непреодолимое желание написать советник…
Но всё начинается не с написания,- а с создания образа… - именно это я и увидел в уроке №7
1). Вопрос. – Для чего нужен советник,- что он должен делать и как…- на этот – вопрос у меня есть – ответ – его единственная задача – открыть позицию в нужное время - в нужном месте…
2). Вопрос, - Как и с помощью чего он должен определять это самое – нужное время и нужное место…
ответ – с помощью инструмента…
Дальнейшие мои действия – надо создать конфигурацию – советника…
конфигурация – советника…
1). – инструменты,- для генерации сигнала…
2). – обработка сгенерированных сигналов…
3). – Команда для выполнения сгенерированного сигнала…
теперь я имею чёткое представление – что делать…
Важным моментом советника является – адаптация…
есть два вида адаптации:
1) – Подстройка времени под брокера
ответ – советник должен иметь функцию – регулирования по GMT – цель компенсировать таким образом разницу часовых поясов у разных брокеров…
2) – Автоматическую подстройку под любое количество знаков после запятой,- иными словами на автомате должен определять 2-3-4 и 5 значные котировки…
3) – Таймер для включения/отключения советника
теперь собственно можно приступать к написанию советника…


//--------------------------- STELS -------------------------------
//----------------------- Внешние параметры ----------------------
#property show_inputs
extern int GMTHours = 0; // Подстройка времени под брокера
extern int Stels_Magic1 = 0;
extern bool Stels_Module1 = true; // если -"false" - модуль отключён
extern bool AllSymbols = true; // если -"false",- то токо перечисленные
extern string symbol = "EURUSD"; "GBPUSD";
extern int Stels_Magic2 = 0;
extern bool Stels_Module2 = false;
extern bool AllSymbols = false;
extern string symbol = "EURUSD"; "GBPUSD";
extern bool Stels_Module3 = false;
extern int CriticalStop = 0; // Критический убыток в % от портфеля

//------------------------ Запуск Модулей -------------------------
//---------------------------- STELS -------------------
//------------------- Внешние параметры модуля -------------------
 
Последнее редактирование:

Genadi22

Новичок форума
Учитель
В первом уроке - я думаю освоил работу с внешними параметрами,- если убрать строку "extern",- то это тоже будет внешний параметр - токо не будет отображаться в параметрах советника,- и будет считаться как внешний параметр - функции...

Урок №2,- и задание...

написать код :
- включение/отключение модуля
- корректирующий код GMT
- Таймер
- Распознавание 2-3-4-5 знаков после запятой...

У меня вопрос в связи с этим - вышеперечисленные параметры - всталяются до или после - int Start()


Если честно,- то я понятия не имею как это написать
поэтому я переберу и изучу коды из других источников так или иначе отвечающие за эти функции и постараюсь их написать...
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Что то eеvviill не видно,- может в отпуске...
я вот прочитал его уроки в первых постах...- и решил всё таки попробовать,- почти уверен что ничего не получится, но практика - добавит опыта - это точно...

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

#property show_inputs
extern int shiftx = 1;
extern int shifty = 1;
extern color BoxColor = DarkGray;

int start() {
if
ObjectCreate(Box);
ObjectSetText(Box, BoxColor);
ObjectSet(Box, OBJPROP_XDISTANCE, shiftx);
ObjectSet(Box, OBJPROP_YDISTANCE, shifty);
ObjectSet(Box, OBJPROP_COLOR, BoxColor);
/+ а как прописать - длину и ширину...
- или "Box" подразумевает квадрат
и вместо него надо вписать - Border +/

return ("0");
}
Гуннадий, всё это описано в справке, не копировать-же сюда из справаки. Ты выдели ObjectCreate и нажми F1 откроется справка по mql, там и почитай об этих функциях. Первая ошибка в том что ObjectCreate() должен содержать не 1 входящий параметр. Для прямоугольника (имя, тип, время1, цена1, время2, цена2). А свойство OBJPROP_XDISTANCE и OBJPROP_YDISTANCE применяется для объектов OBJ_LABEL
 

Genadi22

Новичок форума
выдели ObjectCreate и нажми F1 откроется справка по mql, там и почитай об этих функциях. Первая ошибка в том что ObjectCreate() должен содержать не 1 входящий параметр. Для прямоугольника (имя, тип, время1, цена1, время2, цена2). А свойство OBJPROP_XDISTANCE и OBJPROP_YDISTANCE применяется для объектов OBJ_LABEL

Да я переводил и читал,- и ещё пару-сотню других материалов по mql4,- но безуспешно,- прочитанное вчера,- затиралось прочитанным сегодня,- и у меня получалось - типа из пустого в порожнее,- всё таки нужны не токо теоретические знания,- а практика с пояснениями,- поэтому и хочу взять несколько уроков у EEVVIILL если конечно он согласится...
И ведь сам понимаеш - не может быть так что бы не ходить в школу и научится писать и читать,- а уж в институт тем более,- дело ученика пытаться,- но кто то более опытный должен обьяснять, наставлять и показывать...- во всяком случае у меня в жизни так было и инструктора были квалифицированные...
В любом случае спасибо за подсказку...
я тоже обратил внимания, на то что после названия обьекта,- шло перечисление,- я надеялся что учитель покажет и обьяснит...
а в оригинале - этот код выглядет таким:

ObjectCreate("Box", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSetText("Box", "g", 80, "Webdings", BoxColor);
ObjectSet("Box", OBJPROP_CORNER, WhatCorner);
ObjectSet("Box", OBJPROP_XDISTANCE, shiftx);
ObjectSet("Box", OBJPROP_YDISTANCE, shifty);
ObjectSet("Box", OBJPROP_COLOR, BoxColor);
ObjectSet("Box", OBJPROP_BACK, FALSE);

но его всё равно не удалось пока вывести на график - значит я что то ещё пропустил...
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Да я переводил и читал,
А переводить-то зачем???
В меню View->Langguages выбираешь Русский... перезапускаешь и переводить не надо.
Я ведь тоже учился по урокам, только не eevviill и так-же читал справку. Всё достаточно понятно.
А вот что касается школы... так достаточно много примеров когда дети в школу не ходят и читают лучше школьников. А когда-то говорили даже о таком который читать умел только вверх ногами. В детстве наблюдал за старшим братом и так научился...

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

Genadi22

Новичок форума
А переводить-то зачем???
В меню View->Langguages выбираешь Русский... перезапускаешь и переводить не надо.

Спасибо,- это я не знал,- а может просто не было необходимости,- я ведь в принципе не пытался и даже не думал писать,- но теперь когда угомонился и всё утряслось я просто сижу любуюсь графиком и выжидаю, на это уходит много времени которое я мог бы использовать в других целях,- и по этому работа на форекс начала приобретать рутинный характер,- и я всерьёз задумался над созданием советника...
Я общался с профессионалом программистом по этому поводу и в диалоге с ним я понял что его не понимаю,- значит написанный им советник будет для меня чужим и есть все основания полагать что на каком то этапе начнёт пороть отсебятину...
В случае с EEVVIILL сам видиш я его понял с полуслова...

Я не собираюсь вникать в тонкости и глубоко изучать mql4,- и писать программы - это не моё и я это знаю...- мне нужен токо один советник и в его разработке я хочу принять участие от начала до конца и причём писать всё своими руками,- а задача профессионала будет состоять в том что бы сделать код работоспособным и если вместо написанного мною у него будет своё готовое решение оно будет токо приветствоваться,- но только после моей проработки,- и в чью пользу будет аргумент тот код и будет использован в советнике,- сам понимаеш для этого я сам должен разбираться в коде...
 
Последнее редактирование:

_SERG_

Активный участник
Учитель
В первом уроке - я думаю освоил работу с внешними параметрами,- если убрать строку "extern",- то это тоже будет внешний параметр - токо не будет отображаться в параметрах советника,- и будет считаться как внешний параметр - функции...

Урок №2,- и задание...

написать код :
- включение/отключение модуля
- корректирующий код GMT
- Таймер
- Распознавание 2-3-4-5 знаков после запятой...

У меня вопрос в связи с этим - вышеперечисленные параметры - всталяются до или после - int Start()


Если честно,- то я понятия не имею как это написать
поэтому я переберу и изучу коды из других источников так или иначе отвечающие за эти функции и постараюсь их написать...

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

С распознаванием, там проблем нет, если помощь почитать, про MarketInfo(Symbol(),MODE_DIGITS), правда на тестере не всегда работает.

Ну в общем фантазию надо включать. Сколько людей столько и реализаций.:D
 
Верх