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

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


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

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

Я так и не понял как мне сделать то что я хочу , решил через стоповые и лимитные ордера сделать открытие позиций.
Мне понятно как их посчитать =)

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

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

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

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

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

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

Перейти

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

Перейти

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

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

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

может есть какие грубые ошибки, так работает как часики! спасибо за внимание!

line_Orders.mq4

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

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


serpent989, попробуй два цикла. один вложен в другой. главный перебирает окна открытых графиков, а второй перебирает подокна выбранного графика. и почитай про вот эту функцию

https://docs.mql4.com/ru/chart_operations/windowfind

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

Гриб, я, конечно, понимаю что не бывает глупых вопросов, бывают глупые ответы. но я десять раз перечитал твои посты и так и не понял собстно а что тебе надо и чего не устраивает в тобой же приведенном коде. тебе надо функцию для селл чтоли расписать код? :))



dermitay, "если тебе надо кидать вместе с совой и индикатор на этот же график" - да именно, система работает по индикатору, хотелось бы , чтобы с совой на графике появлялся и этот индикатор с параметрами указанными в сове. Но подгружать уже готовый темплейт не подходит, так как тогда придётся этот файл с темплейтом закидывать во все терминалы, где сов будет использоваться. А хотелось одним файлом. Ну короче, так сделать нельзя, я вроде как норм погуглил.
А Гриб походу имел ввиду, что если у него, к примеру, два ордера BUY открыты по разной цене, то как ему их различить, т.е. выбрать нужный.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
serpent989 чтобы у тебя это было одним файлом и все корректно отрисовывалось - тебе нужно полностью переносить логику индикатора в сову, и не через iCustom а полностью логику практически с нуля переписывать.

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

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

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


Запустите этот код как эксперта (сейчас рынок закрыт - алерта не будет - тика нет, но параметры увидите):

input double ddd = 10;
void OnTick() { Alert("Hello World! ddd =",ddd); }


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

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



Запустите этот код как эксперта (сейчас рынок закрыт - алерта не будет - тика нет, но параметры увидите):

input double ddd = 10;
void OnTick() { Alert("Hello World! ddd =",ddd); }


Тики появились, а алерт глух

У вас там эксперт не вылетел? Я конечно не уверен правильно ли вы используете Alert, но попробуйте лучше

input double ddd = 10;
void OnTick() { Alert(StringFormat("Hello world! ddd = %f", ddd)); }
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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




Запустите этот код как эксперта (сейчас рынок закрыт - алерта не будет - тика нет, но параметры увидите):

input double ddd = 10;
void OnTick() { Alert("Hello World! ddd =",ddd); }


Тики появились, а алерт глух

У вас там эксперт не вылетел? Я конечно не уверен правильно ли вы используете Alert, но попробуйте лучше

input double ddd = 10;
void OnTick() { Alert(StringFormat("Hello world! ddd = %f", ddd)); }


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

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

Помогите пожалуйста, сам не осилю,не хватает знаний. Например на таймфреме 30м есть бычья материнская свеча, сдвиг 9 на скрине, и например текущая свеча закрывается выше материнской. Как зделать чтоб теперь она стала материнской свечой? и как обозначать материнскую свечу - например int Mat_Bars =iBars(Symbol(), PERIOD_M30) ?

eurusd-m30-alpari-limited-2.png

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

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

Большое спасибо. Результат не заставил себя ждать. Только вот с трейлингстопом проблема - пишет что возвращаемое значение должно быть проверено.

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

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


Большое спасибо. Результат не заставил себя ждать. Только вот с трейлингстопом проблема - пишет что возвращаемое значение должно быть проверено.

ну так проверьте! самое простое: bool res = ...

Добавлено: 22-02-2016 20:16:19


Как зделать чтоб теперь она стала материнской свечой? и как обозначать материнскую свечу - например int Mat_Bars =iBars(Symbol(), PERIOD_M30) ?

Вы ведёте некие расчёты от параметров бара (материнской свечи), так? если ДА, то надо сохранять те параметры, которые нужны. например объявляем структуру:
struct BARS
{
int dir, HL, OC;
double h,l,c,o;
datetime time;
}
потом регистрируем переменную-структуру:
BARS matBar;

потом в коде совы, когда находите свечу, заполняете структуру:
matBar.h = High[1]; matBar.HL = ( int ) ( ( High[1] - Low[1] ) / _Point ) ; и т.далее...

потом находится другая свеча, Вы проверяете выход из диапазона пред. матер.свечи:
if ( Open[1] > matBar.c ) ну или как там Вы определяете...
и потом переписываете структуру matBar новыми значениями. вроде всё. Изменено пользователем 0ll
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Большое спасибо за помощь. Будем изучать. Все просто и сложно одновремено!
У автора топика сергея в видео есть отдельный "документация mql4" где он вбивая слово в указатель получает исчепывающую информацию о неких предопределенных функциях. Я такой искал по инету, не нашел, только на сайте mql4 в разделе документация mql4, но он неудобный и слово не вбить, только через пойсковик. А можно ли такой найти где нить как у xbms, :|, спасибо!

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

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

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

Пишу вспомогательный советник, точнее трейлинг. Закономерно осознал такую проблему: Задается диапазон и шаг трейлинга, если шаг слишком мал, то запросы на модификацию будут сыпать на ДЦ сервер на каждом тике в направлении прибыли. Отсюда вопрос первый - Как относится ДЦ к таким клиентам, от терминала которых исходит такой поток заявок?

Далее, возможна ситуация когда советник пытается модифицировать стоп на слишком близком уровне от цены, ближе чем размер спреда, такое возможно, если трал работает по барам. Допустим производится продажа на пике нулевого бара, в работу включается трейлинг и ищет из тайм серии самый высокий бар, достаточно вероятно, что именно нулевой бар и окажется самым высоким из глубины поиска, в таком случае ДЦ не даст выставить стоп слишком близко к текущей цене, а советник будет упорото долбить OrderModify. Тут назревает второй вопрос - Стоит ли предусматривать в советнике некий минимальный диапазон, в целях - выдерживать минимально допустимый отступ от текущей цены, каким размером должен быть этот диапазон? Может быть это размер спреда + n пунктов * Point?

Если принять меры для корректного исполнения и модификации ордеров, взяв в учет разумные отступы от текущей котировки, такой советник не подойдет для скальпинга, при торговле на M1, поскольку в код советника придется вшить некий фиксированный уровень отступа.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Al.exe.in, можно просто проверять разницу между текущей ценой(в зависимости от ордера - бид или аск) и ценой стоплосса-тралинга перед модификацией с MarketInfo(Symbol(),MODE_STOPLEVEL), который как раз и показывает уровни стопов брокера по данной паре. Изменено пользователем dermitay
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Я так и не понял как мне сделать то что я хочу , решил через стоповые и лимитные ордера сделать открытие позиций.
Мне понятно как их посчитать =)



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

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


Большое спасибо за помощь. Будем изучать. Все просто и сложно одновремено!
У автора топика сергея в видео есть отдельный "документация mql4" где он вбивая слово в указатель получает исчепывающую информацию о неких предопределенных функциях. Я такой искал по инету, не нашел, только на сайте mql4 в разделе документация mql4, но он неудобный и слово не вбить, только через пойсковик. А можно ли такой найти где нить как у xbms, :|, спасибо!



День добрый!

Это встроенный в MetaEditor справочник.
Пишем функцию, например OrderSend, становимся на неё курсором и нажимаем "F1".
Далее читаем справку и наслаждаемся полнотой информации :)
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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

Урок по внедрению трейлинг-стопа был обновлен под новые билды:
http://tradelikeapro.ru/izuchaem-mql-treyling-stop/

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

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

Здравствуйте уважаемые трейдеры. Возникла проблема. Советник позиции SELL открывает, а по Buy не работает. Посмотрите пожалуйста, буду очень признателен.

ToMuv.mq4

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

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

Клешни?

Спойлер

input int    StopZerro=10; //Стоп нулевого ордера
input int FollowStop=17; //Стоп основных ордеров (естественно расчет идет от BID при покупке и ASK при продаже)
input int Distance=20; //Каждые сколько пунктов открывать новый ордер (Расчет идет от ASK при покупке и BID при продаже)
input int MiddleSpread=2; //Его мы приплюсовываем к дистанции

//начинаем инициализировать переменные связанные с пунктами, т.к. константы которые вводит пользователь менять нельзя, то к каждому имени нужной переменной добавим"1"
int StopZerro1=StopZerro;
int FollowStop1=FollowStop;
int Distance1=Distance;
int MiddleSpread1=MiddleSpread;

***
Спойлер

if(Broker5x){ // Если правда, то домножаем все, что связано с пунктами на 10
StopZerro1=StopZerro*10;
FollowStop1=FollowStop*10;
Distance1=Distance*10;
MiddleSpread1=MiddleSpread*10;
}
Изменено пользователем Pavel888
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
SVS696, во-первых переменные должны быть double, во-вторых для приведения пунктов из настроек к пунктам пары надо умножать на Point или MarketInfo(Symbol(), MODE_POINT).
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


SVS696, во-первых переменные должны быть double, во-вторых для приведения пунктов из настроек к пунктам пары надо умножать на Point или MarketInfo(Symbol(), MODE_POINT).


Т.е. если 4 знака, то point =1?
Ссылка на сообщение
Поделиться на другие сайты

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



SVS696, во-первых переменные должны быть double, во-вторых для приведения пунктов из настроек к пунктам пары надо умножать на Point или MarketInfo(Symbol(), MODE_POINT).


Т.е. если 4 знака, то point =1?


Point'у пофигу на все эти пятизнаки/четырехзнаки. Это по сути десять в минусовой степени. он приводит твою цифру к удобоваримой для конкретной запрашиваемой пары.
например 10 пунктов. пара "А" имеет Bid 1,0001. для такой пары +10пп будет равно Bid+10*Point = 1.0011.
пара "Б" имеет Bid 170.001. для такой пары + 10пп будет равно Bid+ 10*Point = 170.011.
пара "С" имеет Bid 10000.0. для такой пары + 10пп будет равно Bid+ 10*Point = 10010,0.

Чтобы постоянно не заморачиваться а сколько же там знаков и на какую цифру надо умножать и придуман Point. это предопределенная константа самого языка.

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

А вобще если так сильно озаботился такой задачей - спроси у Rever27. у него в коде в одной из его сов вроде как есть этот "автомат", но опять же, это по сути "справочник", заранее заполненный, в котором отражается сколько знаков после запятой у каждой пары, и прописаны правила что делать если после запятой 7 знаков, а что делать если 6. грубо говоря ты можешь сам его прописать, логику я уже тебе описал. Изменено пользователем dermitay
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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


Наверно придется все делать самому.((((((((


Сделайте вывод через Print переменных MAQ и MAL после чего смотрите возникает ли событие на открытие длинных позиций.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Скорее всего короткая машка возвращает 0 на 0-баре. трудно сказать ведь шифт

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

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


Скорее всего короткая машка возвращает 0 на 0-баре. трудно сказать ведь шифт


Думаете нужно проскальзывание? Но SELL позиции открывает ровно по сигналу.


Добавлено: 27-02-2016 12:14:00

Вот ошибки из журнала - 2016.02.27 13:37:36.189 TestGenerator: unmatched data error (low value 0.67050 at 2016.02.04 16:00 is not reached from the least timeframe, low price 0.67170 mismatches)

2016.02.27 13:37:36.144 TestGenerator: unmatched data error (high value 0.67420 at 2016.01.05 08:00 is not reached from the least timeframe, high price 0.67380 mismatches)

Только их значение я не понимаю. Было бы знать что исправлять - компилятор ошибок не выдает.
Изменено пользователем Surf32
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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