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

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


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

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



vitek01, я бы еще вот это Lot/2 нормализовал бы, иначе нарвешься на ошибку "неверный лот".



Что то я не нашел NormalizeLots, видать это уже старые функций, компилятор их не видит. уважаемый dermitay, а как правильно это делать, можете строчку строчной строкой настрочить?


лот ордера имеет тип double поэтому и юзать надо NormaliseDouble(... , 2)
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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


(BufferOC_CP = ( ( Open+Close ) / 2 + BufferOC_CP[i+1] * (x_period -1) ) / x_period ;)
не получается???увы

а к BufferOC_CP, Open и Close добавили [ i ] ? а что думали получить? я же задавал вопросы... Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

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

Всем привет.
Я написал советника по видео "Как написать форекс советник на мартингейле". Но он начинает открывать кучу ордеров в секунду, как будто он не проверяет что ордера уже открыты и циклично их открывает. У меня брокер Альпари, 5 знаков.
Помогите пожалуйста разобраться в чем дело, очень хочется освоить этот метод. (советник во вложении)

Мартин.mq4
Безымянный.jpg

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

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


Всем привет.
Я написал советника по видео "Как написать форекс советник на мартингейле". Но он начинает открывать кучу ордеров в секунду, как будто он не проверяет что ордера уже открыты и циклично их открывает. У меня брокер Альпари, 5 знаков.
Помогите пожалуйста разобраться в чем дело, очень хочется освоить этот метод. (советник во вложении)



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

Чем меньше тейк профит, тем он живуч. Поставил ТР=10 пунктов, шаг =50 пунктов, почти в два раза увеличил депо и слил все. Вывод; Такими стратегиями лучше подтиратся.

Мартин.mq4
StrategyTester.gif
ТЕЙК_ПРОФИТ_10_ПУНКТОВ.gif

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

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

господа гусары! категорически поздравляю всех с наступающим! \M/

вопрос по существу: занимаюсь оптимизацией кода. в частности, мне удалось перенести всю логику стандартного всем нам известного ТМА на лыжи советника. конечно же, скорость тестирования/оптимизации возросла эдак раз в 20-30. здесь я имею ввиду, что я не использую больше тормозной iCustom(), а эмулирую все 4 буфера(да, их там 4, а не 3, в исходном коде) стандартными динамическими массивами. к тому де, в оригинале создатель индикатора зачем-то делает зацикленный вызов сам себя, перезаписывая все массивы-буферы, когда это можно сделать тупо тем же самым перезаписыванием значений элементов массива. логика абсолютно та же, зато скорость исполнения падает огого как.

а кто-нибудь заморачивался над этим вопросом исполнения кода на более глубоком фундаментальном уровне?

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

или это не имеет смысла вобще по сути?

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

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


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

Я в своих ботах МА и простые индюки сам рассчитываю, если индюк получается сложный, то подключаю через Кастом - но в крайних случаях, в основном для проверки идеи.
ТМА как-то крутил... если вылечить от перерисовки - хрень, а работать с перерисовкой - тоже. Выбросил я его.
Рекурсивный вызов ( сам-себя ) именно для получения сглаженного вида - т.е. пересчитывает по 30 раз...
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
0ll, ну нельзя же так сапогами в душу...
ТМА на форуме чуть ли не в половине ТС есть, твой мод даже у меня на большинстве графиков болтается! :d
Ссылка на сообщение
Поделиться на другие сайты

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

да вопрос-то не в ТМА, а в возможном коварном заговоре разрабов mql4.

вдруг рукописная математическая функция исполняется быстрее чем iMA(...)? :d

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

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

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


вдруг рукописная математическая функция исполняется быстрее чем iMA(...)? :d

конечно быстрее. я вообще в шоке от устройства МТ... если представить, что творится в оперативе - жуть.
на графике висит эксперт, использующий индюки и те-же самые индюки висят на графике для визуализации - получается, что по одному экземпляру индюков висит и исполняется в процессе терминала, а по 2-му экз. в процессе советника со всеми буферами и всем хозяйством ( типа рекурсии ТМА )...
Вопрос: сколько ты анализируешь значений из индикаторного буфера в сове? в большинстве случаев 2-3 бара и всё! ну и нахрен всё это хозяйство в оперативу вешать?
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Вопрос: сколько ты анализируешь значений из индикаторного буфера в сове? в большинстве случаев 2-3 бара и всё! ну и нахрен всё это хозяйство в оперативу вешать?


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

а, не так понял вопрос - мне вобще по барабану что там было на предыдущем баре, я анализирую текущий, нулевой бар. логика идет по поводу отбоя от верха/низа текущего ТФ + закрытие на серединной линии старшего ТФ(+ построение сетки на отбой от верх/ниж линии этого старшего ТФ если предыдущий ордер еще жив) + как фильтр тренда срединная линия еще более старшего ТФ(+построение сетки если предыдущие два ордера от предыдущих младших ТФ до сих пор живы). Изменено пользователем dermitay
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Есть ли такая возможность, у нахожу уровень советником "А" в тестере стратегий, и вручную вписываю его в советник "А" на реальном графике. Но если уровней много? Можно ли как то переносить данные в советник "А", с тестера стратегий в советник "А" на реальном графике.

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

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

Здравствуйте, Сергей!

Планируется ли запустить курс на MQL 5? У языка значительно больше возможностей.

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

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


Есть ли такая возможность, у нахожу уровень советником "А" в тестере стратегий, и вручную вписываю его в советник "А" на реальном графике. Но если уровней много? Можно ли как то переносить данные в советник "А", с тестера стратегий в советник "А" на реальном графике.

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

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

Подскажите пожалуйста как в MQL 4 (Meta Editor Version: 5.00 build 1218 26 Nov 2015) прописать условие, чтобы советник проверял динамику рынка в определенный промежуток времени (например, нахождение точек экстремума только в период с 01:00 до 13:00 каждого дня, а не за весь день)?
Точнее, чтобы можно было найти экстремум за определенное время а открывать ордера в любое (основываясь на полученные данные).
Если можно пропишите кодом.
Заранее спасибо.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
VANEK_V_ логика такая:
- сова торгует круглосуточно по старым уровням, если их нет ( уровень - при наступлении времени анализа сова ищет новый экстремум, если находит - старый перезаписывает

вот код анализатора периода:
Спойлер

//+--------------------------------------------------------------------+
input string SET_Work_Time = "==== value format: hh.mmss ====";
input double dtStart = 7.45; // Старт = 7:45:00
input double dtEnd = 17.2; // Финиш = 17:20:00

bool isWorkTime( datetime check_time )
{
MqlDateTime dt; TimeToStruct ( check_time, dt );
double dtB = dt.hour + dt.min/100 + dt.sec/10000;
if ( dtStart = dtStart && dtB = dtStart || dtB return(true); return(false);
}
//+--------------------------------------------------------------------+



Использовать в коде так:
if ( isWorkTime( TimeCurrent ( ) ) func_Analis();
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
kocunyc не просто подсказать что изменить, если нет кода. сам новичок, в своих индикаторах когда заполняю "буфер стрелочек" отступ регулирую так: в анализируемой свече "i" к High или Low добавляю или отнимаю какое-то количество пунктов( +-100*Point)

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

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



Есть ли такая возможность, у нахожу уровень советником "А" в тестере стратегий, и вручную вписываю его в советник "А" на реальном графике. Но если уровней много? Можно ли как то переносить данные в советник "А", с тестера стратегий в советник "А" на реальном графике.

через файл, но там проблемка будет - тестер в один каталог пишет, а сова с реального графика в другой каталог лезет читать, но это преодолимо.


Спасибо! Я уже разобрался, через цикл for по историй катком прошелся и нашел таки нужные уровни. По моему мнению, в MQL4 можно какую угодно стратегию закодировать, здесь только проблема в фантазий, не что, а как.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Как привести double k int,
int R= ( iHigh(...) - iLow(.....))
много вариантов попробовал, всегда ноль показывает или много много цифр. Привести к пунктам?

если делать так
double R=( iHigh(...) - iLow(.....)) *Point;
то еще более менее, но после запятой много лишнего, нормализация не помогает, 0.0 показывает?

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

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

коллеги, а зачем вам приводить дабл к инту? а что делать с котировками ну например аудиюсд, где цена ниже порогового значения самого инта?
Kozubus, уже обсуждалось.
1. объявляешь глобально переменную.
2. присваиваешь ей значение в ините или онтике/онтаймере(не обнуляя и не переинициализируя)
3. ....
4. Profit!!!111

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

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


коллеги, а зачем вам приводить дабл к инту? а что делать с котировками ну например аудиюсд, где цена ниже порогового значения самого инта?
Kozubus, уже обсуждалось.
1. объявляешь глобально переменную.
2. присваиваешь ей значение в ините или онтике/онтаймере(не обнуляя и не переинициализируя)
3. ....
4. Profit!!!111



Вывод информаций на график о ширине флэтового канала, не надо вручную смотреть,экономия времени!

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

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

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

Напишу чуть подробнее. Переключение ТФ не вызывает перезаписи глобальных переменных, вот пример (сохрани как советник):

double d=0;
void OnTick()
{
if ( _Period == PERIOD_M5 ) d = 44;
Comment("}
void OnDeinit(const int reason){ Comment(""); }

Запусти на М5, а потом переключай ТФ и смотри комментарий.
Если у Вас такие-же глобальные переменные меняются, то значит они пересчитываются...

vitek01 делай так: int R = (int) ( ( High[ 0 ] - Low[ 0 ] ) / _Point ); Изменено пользователем 0ll
  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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