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

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


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

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

Второй скрипт понятнее. в первом ну очень сложные вычисления. У Вас в обе стороны сова торгует? тогда Вам надо 2 уровня для бай и селл?

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

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

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

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

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

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

Перейти

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

Перейти

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

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


Rever27 пробуй так: mytime = TimeCurrent() - Seconds();


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

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

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

Спойлер


double avgPrice = 0;
double sumLots = 0;
for (int order=OrdersTotal()-1; order >= 0; order--)
{
if(!OrderSelect(order, SELECT_BY_POS, MODE_TRADES))continue;
if (OrderSymbol()==sym && OrderMagicNumber()==Magic && OrderType() == orderType)
{

avgPrice += OrderOpenPrice()*OrderLots();
sumLots += OrderLots();
}
}

double newTakeProfit=avgPrice/sumLots;
newTakeProfit=NormalizeDouble(newTakeProfit,(int)MarketInfo(sym,MODE_DIGITS));



это код для одной стороны. если тебе надо для двусторонней торговли, то код немногим усложняется, а именно - нужно вычислить куда смотрит вся сеть(например у нас общая лотность на бай больше чем на селл) ордеров, и дальше вычесть из лотности бай лотность селл и играть уже с этой разницей лотности - от этой цифры уже и дальше вычисляй где линии БУ этой ВСЕЙ кучи ордеров.
для линии с учетом спредов и комиссии код намного сложнее, но ты с этим пока разберись, если что, позже объясню как вычислить с учетом всего.

ЗЫ: а ты не вставляй циклы в цикл. вызывай свою рукописную функцию вычисления линии БУ однократно там где тебе надо, ловкость рук и никакого мошенничества >:d Изменено пользователем dermitay
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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

В одно время бот торгует только в одну сторону, так что сильно усложнять не нужно.
Ок, спасибо, буду пробовать, смогу ли хоть что-то упрощенное ставить сам :)

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

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

Изучаю урок - советник на мартингейле. Уже 10 раз все перепроверила, все как на видео, но компилятор ругается. Выручайте! Во вложении полный код. А это функция в которую все уперлось.

Ошибка в строке с последней закрывающейся скобкой - '}' - not all control paths return a value

int FindLastOrderType()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() &&
OrderMagicNumber() == Magic)
return (OrderType());
}
return(-1);
}
}

Martin4.mq4

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

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


Спойлер

Изучаю урок - советник на мартингейле. Уже 10 раз все перепроверила, все как на видео, но компилятор ругается. Выручайте! Во вложении полный код. А это функция в которую все уперлось.

Ошибка в строке с последней закрывающейся скобкой - '}' - not all control paths return a value

int FindLastOrderType()
{
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() &&
OrderMagicNumber() == Magic)
return (OrderType());
}
return(-1);
}
}




Переместите return(-1); через одну скобку вниз.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке? Или новую тему создать?

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

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

Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.

Test4.Martin_EMA.mq4

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

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


Парни! Есть такой же скрипт, который считает цену маржинкола или стопаута, применительно к сетке?

Да поищи у Павла в сборниках. Там был по-моему индюк, который показывал цену БУ и стоп-аута.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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


Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт Изменено пользователем voffka85
Ссылка на сообщение
Поделиться на другие сайты

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

Подскажите, как на истории отфильтровать убыточные ордера от вывода средств? Т.е., советник ведет контроль/подсчет убытка за день и если убыток превышает заданное значение за торговый день - торговля останавливается. Вывод средств у меня попадает сейчас как убыток. Вопрос: как его, вывод, отделить от ордеров?

И еще вопрос: есть параметр для типа ордеров - "6" //OrderType() == 6//. Документация молчит о нем, кто знает, растолкуйте как с ним работать. Где-то читал, что его параметры у каждого брокера свои, как их определять?

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

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



Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт

Да нет,в уроке проверка по iMA.(11-я минута видео)
Ссылка на сообщение
Поделиться на другие сайты

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

Здравствуйте. Возможно ли средствами MQL преобразовать число с плавающей точкой из Unicode в ANSI? Если нет, подскажите, в каком направлении копать.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
mobidik считать просадку надо не по депозиту, а путём пересчёта ордеров с фильтром типа:
if ( OrderOpenTime ( ) > Segodna ) sumPL += OrderProfit()+OrderCommission()+OrderSwap();

Тип ордера 6 и выше это не для МТ4 (имхо)
Ссылка на сообщение
Поделиться на другие сайты

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

Вы имеете в виду преобразование числа в строку? Сейчас всё в Unicode для ANSII смотри функцию StringToCharArray

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

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

Нашел на просторах интернета рабочую софтину, которая делает вполне корректную разметку по Elliott Wave. Проблема в том, что индикатор (код открытый) который выводит разметку на график при компиляции выдает ошибку.

Ребята, посмотрите кто дружит с кодом, может получиться подправить.
Инструкция и индикаторы в архиве.


ScanWave_v.0.2.zip
sw1.png
sw5.png
ScanWave_v.0.2.png

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

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

0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.

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

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


0ll, извиняюсь, наверное надо было поподробнее расписать. Имелось ввиду преобразование числа с плавающей точкой в Unicode в число с плавающей точкой в ANSI.

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

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

Пишу советник, использующий в своей работе нейронную сеть. Советник реализуется с использованием MQL4, нейронка с использованием Fann 2.2 и Fann2MQL - её оболочки для MQL4. При обучении и тестах нейросеть отрабатывала отлично, а вот при её использовании в советнике на выходе она выдавала всякую ересь. Запускал нейронку через FannTool и давал ей на вход абсолютно те же самые данные - она отрабатывала их так, как должна. При обучении нейросети обучающую выборку ей пришлось давать в txt-файле в ANSI кодировке, так как при подаче файла в Unicode программа просто висла и отказывалась работать. Поэтому и подумал, что дело может быть в этом.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
NickWelder, StringToCharArray, как было сказано выше. Либо же переписать библиотеку под уникод, что не всегда бывает возможно.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Исправил , компилируются..

Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004

Дальше не разбирался

ScanWave_Indicator_v.0.2_fix.mq4
ScanWave_Indicator_v.0.2.1_fix.mq4
ScanWave_Indicator_v.0.2.2_fix.mq4

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

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


Исправил , компилируются..

Но при работе требует какой-то файл
2016.03.11 12:55:56.399 ScanWave Indicator v.0.2 USDCHF,H1: файл ResultAnalysisUSDCHF60.csv не обнаружен ошибка 5004

Дальше не разбирался



Спасибо! Отчет который создала программа называется ResultAnalysisEURUSD, его нужно переименовать руками ResultAnalysisEURUSD60. При условии, что вы открыли H1 на паре EURUSD.

Вечером буду разбираться, так-то вроде разметка появилась. :)

update

Все корректно работает, нужно только правильно экспортировать котировки из терминала.

2016-03-11.png

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

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



Здравствуйте! xbms, огромное спасибо за обновлённые видеоуроки!Я полнейший чайник.100 лет назад с бэйсиком знакомился чуть. Смотрю уроки,вникаю,как могу.Пишу следом за Сергеем,коменты в коде подписываю,потом осмысливаю.Извините за профанский вопрос.По уроку про советник по Мартину:всё написал в коде,скомпилировал.Ошибок,предупреждений нет.Начинаю в тестере запускать.Делаю всё как Сергей.Открывает один-два ордера и дальше пишет :" Ошибка модификации ордеров!" и ниже: "OrderModify error 1"Котировки перезагрузил.Проверил на двух терминалах-везде так.Подскажите причину,плз.


Исходя из урока проверка открытия ордера идет по iRSI в коде идет проверка iMA, сейчас для интереса поставил на демо счет пока открыл один ордер, ждем что будет далее )) После того как цена прошла против направления открытия ордера советник отрыл 50+ ордеров того же направления с шагом 1 старый пункт

выкладываю детализацию с демосчета в итоге слился, погубило то что не открывал ордера на продажу, почти за сутки заработал 25 000 тысяч с депозита 10 000

DetailedStatement.zip

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

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

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

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

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

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

Войти

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

Войти

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


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

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