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

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


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

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

Пиши в текстовый файл .csv набор нужных полей через разделитель ";"


Благодарю Вас за ответ!
То есть целесообразно по мэджику/паре создавать свой отдельный файл, а не мечтать об одном файле, но многостраничном с разбивкой по листам? ;)
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

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

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

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

Здраствуйте!

Подскажите пожалуйста - как можно реализовать проверку (и потом возвращать значение) результата прошлой сделки ... Т.е. был ли стоп или профит.

Спасибо.

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

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


Здраствуйте!

Подскажите пожалуйста - как можно реализовать проверку (и потом возвращать значение) результата прошлой сделки ... Т.е. был ли стоп или профит.

Спасибо.


держи готовый советник:

oppositnik.mq4

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

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

Подскажите пожалуйста - как можно реализовать проверку (и потом возвращать значение) результата прошлой сделки ... Т.е. был ли стоп или профит.

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

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

Считаем, что рабочий ордер выделен.
if ( MathAbs( Bid - OrderOpenPrice() ) > TargetDist * _Point && Bid


Здравствуйте нужно чтобы закрытие происходило именно выше Order OpenPrice на заданное кол-во пунктов.
А в Вашем примере кода ордер закрывается и ниже , и выше открытия.

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

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

закрытие происходило именно выше Order OpenPrice

Ну тогда так:
if ( OrderType() == OP_BUY && Bid - OrderOpenPrice() > TargetDist * _Point && Bid
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ну тогда так:
if ( OrderType() == OP_BUY && Bid - OrderOpenPrice() > TargetDist * _Point && Bid



Добрый день, а если мы закрываем ордер на продажу , то код будет выглядеть так
if ( OrderType() == OP_BUY && OrderOpenPrice() - Bid > TargetDist * _Point && Bid > High[1] ), если так то
код не работает, советник закрывает ордера и выше и ниже OrderOpenPrice и не соблюдает TargetDist .
Ссылка на сообщение
Поделиться на другие сайты

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

а если мы закрываем ордер на продажу

if ( OrderType() == OP_SELL && OrderOpenPrice() - Bid > TargetDist * _Point && Bid > High[1] )
Закрывать Бай будет, Селл не будет. Описывайте внимательнее. Удачи.
Ссылка на сообщение
Поделиться на другие сайты

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


Новый урок http://tradelikeapro.ru/mql4-sobiraem-tikovyie-dannyie/

мне кажется по этой теме нужно создать отдельную ветку в рубрике разработки форума!
Ссылка на сообщение
Поделиться на другие сайты

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

if ( OrderType() == OP_SELL && OrderOpenPrice() - Bid > TargetDist * _Point && Bid > High[1] )
Закрывать Бай будет, Селл не будет. Описывайте внимательнее. Удачи.



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

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

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

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

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

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



Ордера закрываются все , но неправильно , например ордер Buy должен закрыться выше OrderOpenPrice на 20 пунктов,
а в действительности он может закрыться и ниже открытия, или выше , но без соблюдения количества пунктов.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Roman 13 Нужно смотреть логи, нужно вставлять в код Print-ы в которых указывать какой ордер закрывается, причина закрытия, текущая цена и т.д. Потом читать лог и разбираться
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день!
Подскажите, как измерить в пунктах расстояние от , например Ma, до текущей цены?
Дошел до этого:
double Price = MathAbs(iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,0 )/Point);
if (Ask > Price)
{ punkt = Ask- Price
else punkt = Price-Ask

}

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

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

как измерить в пунктах расстояние от , например Ma, до текущей цены?

Лучше так: punkt = MathAbs ( Ask - iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,0 ) ) / Point;
Ссылка на сообщение
Поделиться на другие сайты

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

Спасибо а для села так?


d1w4m3, функция MathAbs() возвращает число по модулю, т. е. без знака. Используется здесь как раз для удобства, чтобы не задумываться что из чего вычесть и просто получить абсолютное расстояние. Поэтому можете вычитать хоть цену из средней, хоть среднюю из цены, число вернется одинаковое. А какую цену бид или аск использовать, то тут уже зависит от того, какое расстояние хотите найти: от средней до текущей бид, или от средней до текущей аск.
Ссылка на сообщение
Поделиться на другие сайты

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

Спасибо
Вот в чем загвоздка, принцип я понял, а вот так возможно?
uptr = MathAbs ( Ask - iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, n) ) / Point;
Когда у меня 2 буфера?
И потом я задаю условие,
/// extern int LevelPunkt = 50;
-------------------------------------
If (LevelPunkt*Point)>uptr //если кол-во заданных пунктов, больше кол-ва пунктов от Slope до Ask
то открываем
В чем я здесь не прав?

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

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

Всем доброго времени суток! Заранее извиняюсь за ломанное построение вопроса - немного новичок. Сам вопрос - Как вшить в советника способность торговать в определенные дни недели (выбранные дни отключить) ? Думаю просто скопировать код с советника Generic, но опасаюсь упустить какую-то переменную/функцию. На какие переменные стоит обращать внимание? Или может я ошибся немного веткой?
Заранее благодарен за ответ!

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

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

Всем доброго времени суток! Заранее извиняюсь за ломанное построение вопроса - немного новичок. Сам вопрос - Как вшить в советника способность торговать в определенные дни недели (выбранные дни отключить) ? Думаю просто скопировать код с советника Generic, но опасаюсь упустить какую-то переменную/функцию. На какие переменные стоит обращать внимание? Или может я ошибся немного веткой?
Заранее благодарен за ответ!



Здравствуйте! Самый простейший вариант выглядит примерно так:

//эту переменную объявляем во входных параметрах
extern int NonTradingDay=1;//Неторговый день(1-понедельник, 5-пятница)

//эту строчку пишем в самом верху внутри функции OnTick()
if(TimeDayOfWeek(TimeCurrent())==NonTradingDay)return;


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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
d1w4m3 если хотите, чтоб Бай открылся строго на линии, то для Бая нужно использовать Аск. Но имейте в виду, что при использовании функции MathAbs у Вас будет два сигнала - один выше линии и один ниже, если это имеет значение, то MathAbs не используйте!!!
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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