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

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


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

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

Имеется виду что другому пользователю не нужно скидать базу и обьяснять куда ее нужно поместить.

Например, отправить на форум ех4, в котором уже есть csv данные 

Смотреть в сторону ресурсов.

https://www.mql5.com/ru/docs/runtime/resources

 

https://www.mql5.com/ru/forum/334151

 

 

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

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

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

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

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

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

Перейти

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

Перейти

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

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 15.02.2022 в 06:39, elavr сказал:

Смотреть в сторону ресурсов.

https://www.mql5.com/ru/docs/runtime/resources

 

https://www.mql5.com/ru/forum/334151

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

Нужно попытаться сжать файл или же попробовать переписать в .mqh и присоединить.
 

Может был похожий опыт?

Есть вариант автоматически переписать в .mqh?

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

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

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

Нужно попытаться сжать файл или же попробовать переписать в .mqh и присоединить.
 

Может был похожий опыт?

Есть вариант автоматически переписать в .mqh?

Ну, вроде, никто же не отменял текстовых редакторов....

Если там не строки, а числа - то все это добро складывается в массив.

Если смешанная структура - можно завести под нее структуру и отдавать.

Проблема только со строками - но и она решается в экселе/google sheets за пять минут, мне кажется?

 

Я, конечно, умозрительно рассуждаю.... вы приведите пример таблицы, заголовок и одну строку

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

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

Есть вариант автоматически переписать в .mqh?

Коллега, если бы внимательно ознакомились с моими ссылками, то узнали бы, что метаквотосы уже давно позаботились о вас:

Спойлер

image.png.4008ef37d1f09183235f9d96abfdfb56.png

 

но как правильно заметил коллега  @Rigalподобные задачи очень легко решаются с помошью эксел/гугл таблиц и прочего подобного.

3 часа назад, ademen сказал:

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

Нужно попытаться сжать файл или же попробовать переписать в .mqh и присоединить

Да, нужно загонять в архив. Как работать с архивом, можно подсмотреть у коллеги @fxsaber  - https://www.mql5.com/ru/code/20225

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 15.02.2022 в 10:53, ademen сказал:

Имеется виду что другому пользователю не нужно скидать базу и обьяснять куда ее нужно поместить.

Например, отправить на форум ех4, в котором уже есть csv данные 

Почему бы не размещать файл на сервере,а потом с помощью webrequrest не закачивать в бота?

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

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

 

Я, конечно, умозрительно рассуждаю.... вы приведите пример таблицы, заголовок и одну строку

forex_history_open_positions.rar

3 часа назад, elavr сказал:

Почему бы не размещать файл на сервере,а потом с помощью webrequrest не закачивать в бота?

Это вариант, но если есть альтернативы, можно сьекономить на аренде сервера.

 

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

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

Почему бы не размещать файл на сервере,а потом с помощью webrequrest не закачивать в бота?

Ну тут дополнительная точка сбоя. Хотя идея очень элегантная.

1 час назад, ademen сказал:

Это вариант, но если есть альтернативы, можно сьекономить на аренде сервера.

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

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

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

forex_history_open_positions.rar 14 \u041c\u0411 · 1 загрузка

А, сентимент...

Ну тут даже строчки уже в кавычках - прекрасная подсказка от @elavr, вставка из csv (не знал, хозяйке на заметку)

Но идея с файлом с сервера позволит его обновлять независимо

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

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

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

Честно говоря с сервером с мт еще не работал, может исходя из большого опыта есть напримере статья на счет этого? 

2 часа назад, Rigal сказал:

А, сентимент...

Ну тут даже строчки уже в кавычках - прекрасная подсказка от @elavr, вставка из csv (не знал, хозяйке на заметку)

Но идея с файлом с сервера позволит его обновлять независимо

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

 

Я пытался попробовать  вставка из csv но mql4 ложится.

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

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

Честно говоря с сервером с мт еще не работал, может исходя из большого опыта есть напримере статья на счет этого? 

В генерике мое последнее сообщение содержит архив, в котором, в частности, вложена библиотека WebUtils, заворачивающая обращение к ресурсам по http и https, с возможностью переключения между dll и WebRequest. Возвращает строку.

Не знаю, влезет ли ваш файл в строку.

8 часов назад, ademen сказал:

Я пытался попробовать  вставка из csv но mql4 ложится.

Как я упоминал выше, в вашем случае проблему можно решить простым копи-пастом.

Например, вот так:

string csv[][6] = {
         {"id","broker","symbol","buy","sell","time"},
         {"1","Instaforex","EURUSD","51.12","48.88","2021-04-28 09:15:40"},
         {"2","Instaforex","GBPUSD","50.47","49.53","2021-04-28 09:15:40"},
         {"3","Instaforex","AUDUSD","62.89","37.11","2021-04-28 09:15:40"},
         {"4","Instaforex","NZDUSD","58.31","41.69","2021-04-28 09:15:40"},
         {"5","Instaforex","USDCHF","71.22","28.78","2021-04-28 09:15:40"},
         {"6","Instaforex","USDJPY","60.45","39.55","2021-04-28 09:15:40"},
         {"7","Instaforex","USDCAD","66.66","33.34","2021-04-28 09:15:40"},
         {"8","Instaforex","XAUUSD","54.55","45.45","2021-04-28 09:15:40"},
         {"9","Instaforex","AUDCAD","63.8","36.2","2021-04-28 09:15:40"},
      };

Привести ваш файл в такое состояние можно примерно за минуту при помощи нормального текстового редактора, (SublimeText, Notepad++ в помощь, Alt+Shift для выделения колонками и вставки первой скобки, замена символа переноса строки на закрывающую скобку, запятую и символ переноса строки)

После этого в советнике делаем вот так:

   for(int i = 1; i < ArrayRange(csv, 0); i++){
      string id      = csv[i][0];
      string broker  = csv[i][1];
      string symbol  = csv[i][2];
      string buy     = csv[i][3];
      string sell    = csv[i][4];
      string time    = csv[i][5];
      Print("id=", id, ", ",
            "broker=", broker, ", "
            "symbol=", symbol, ", "
            "buy=", buy, ", "
            "sell=", sell, ", "
            "time=", time);
   }

И получаем вот такой результат:

Спойлер

image.png.4dd7b19e3b35c01664fcd19dad73e8be.png

Ну и дальше еще более тривиально

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Только что, Rigal сказал:

Не знаю, влезет ли ваш файл в строку.

В крайнем случае, можно поделить на 10 файлов и забирать по одному ;)

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 14.02.2022 в 06:50, usver73 сказал:

Вы очень странно добивались умного ответа задавая супер лаконичные вопросы. На которые, кстати, были попытки дать ответ, но кроме "хмм.." никакой реакции..
Что касается Вашей функции автолота, то при выполнении условия:

лотность очередного и всех последующих ордеров сбросится к минимальному значению LOTS (или к минимальному расчетному через риск), что не логично в сетках. Как правило, если стоит задача ограничить рост лотности, то открывают с определенного колена ордера с Максимальным заданным значение лота (MaxLot)

bool BullishEngulfingExists()
  {
   if(Open[1] <= Close[2] && Close[1] >= Open[2] && Open[2] -  Close[1] >= 10*Point+Digits && Close[1] - Open[1] >= 10*Point+Digits)
      return (true);
   return (false);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool BullishHaramiExists()
  {
   if(Close[2] < Open[2] && Open[1] < Close[1] && Open[2] - Close[2] > iATR(NULL, 0, 14, 2) && Open[2] - Close[2] > 4*(Close[1] - Open[1]))
      return (true);
   return (false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool DojiAtBottomExists()
  {
   if(Open[3] - Close[3] >= 8*Point && MathAbs(Close[2] - Open[2]) <= 1*Point && Close[1] - Open[1] >= 8*Point)
      return (true);
   return (false);
  }

Почти весь код примерно такой, и множитель при правильной настройке подходит. Открытыми ордерами терминал не нагружает

image.thumb.png.68dbc473240449e35c7c3a8354d2ad6e.png

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

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

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

Понимаю, что может не тут надо писать о данной проблеме, но все же.

На индикатор A/D накладываю конверт (скрин реал тайм) - отображается корректно. Сохраняю шаблон как тестер и включаю тестер и A/D с наложенным конвертом (скрин тестер)  отображаются некорректно. В чем дело???

Спасибо за ответы!

тестер.JPG

реал тайм.JPG

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

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

Доброго времени суток! Недавно начал изучать MQL4, пробую написать советника по данным индикатора renko bricks v2. Проблема в том что советник с простыми, казалось бы, вычислениями очень медленно прогоняется в тестере. Он работает, но очень медлленно прогоняется. Я подозреваю, что по неопытности мог написать чипухи, поэтому очень прошу помощи у старших товарищей.) 

 

Суть кратко. Советник скальпер, торгует на м1, ждет смены цвета кирпича и открывает сделку в сторону нового движения. Прилагаю ниже исходники самого советника, и индюка. Заранее благодарю!

RenkoBricks v2.mq4 RenkoSerf.mq4

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

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

Доброе время суток!!!!

Помогите изменить функцию которая калькулирует только убыток от убыточных ордеров в сетке ордеров 

//+----------------------------------------------------------------------------+
//| Калькуляция убыточных ордеров                                              |
//+----------------------------------------------------------------------------+
double Loss()
  {
   double oLoss = 0;
   for(int i = OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderProfit()<0)
                 {
                  oLoss += OrderProfit();
                 }
              }
           }
        }
     }
   return(oLoss);
  }

Изменить нужно в функции - чтобы калькулировалась только минимальной части лота от каждого ордера сетки ордеров. Min Lot=0.01

Спасибо!!!!

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
23 часа назад, Евгений72 сказал:

чтобы калькулировалась только минимальной части лота от каждого ордера сетки ордеров. Min Lot=0.01

как-то витиевато условие сформулировали...
Если нужно учитывать ордера в просадке и лотностью 0,01 лота, то добавите условие, типа:
 

if(OrderProfit()<0 && OrderLots()>=0.01 && OrderLots()<0.02) //  а лучше найти функцию сравнения double- значений. Где-то в ветке пролетала

 

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

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

как-то витиевато условие сформулировали...
Если нужно учитывать ордера в просадке и лотностью 0,01 лота, то добавите условие, типа:
 

if(OrderProfit()<0 && OrderLots()>=0.01 && OrderLots()<0.02) //  а лучше найти функцию сравнения double- значений. Где-то в ветке пролетала

 

Спасибо но выбрать нужно не все лоты чей размер = 0.01 а от каждого лота только 0.01

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
2 часа назад, Евгений72 сказал:

от каждого лота только 0.01

Может, от каждого ОРДЕРА 0.01?

Тогда 

OrderProfit()/ (OrderLits()/0.01)

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

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

Добрый день, учусь языку mql по урокам и попробовал написать простенький советник на трех индюках но что-то пошло не так, компилируется советник без ошибок но не хочет открывать ордера хотя вроде все правильно. Может кто ткнет меня мордой в ошибку? sova 3.0.mq4

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

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

А вот изначальный шаблон для советника и инструкция как им пользоваться

shablon 3.0.ex4 shablon 3.0.mq4 Свой Советник Инструкция.pdf

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 02.04.2022 в 09:09, masalex61 сказал:

Добрый день, учусь языку mql по урокам и попробовал написать простенький советник на трех индюках но что-то пошло не так, компилируется советник без ошибок но не хочет открывать ордера хотя вроде все правильно. Может кто ткнет меня мордой в ошибку? sova 3.0.mq4

"Не хочет открывать ордера" - очень размытое определение проблемы.

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

Вариантов масса: ноль, EMPTY_VALUE и так далее.

 

"Попробовал написать простенький советник" - не надо лукавить, в советнике реализована попытка защиты по номеру счета, ключу и ограничению даты использования. Логика достаточно развесистая для того, чтобы ожидать от автора способности отладиться: накидать такой код до компилируемого состояния и не понимать, почему оно не открывает - невозможно.

Я бы рекомендовал обратиться к тому, кто его исходно писал, это очевидно не вы.

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

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

может ли кто подсказать правильное использование команды OrderClose для MT4, нужно для работы с бинарными опционами для досрочного закрытия, прибыль в этом случае небольшая, но лучше чем ничего,
скрипт для форекса не работает.
сейчас досрочно закрываю кнопочкой рядом с ордером. брокер Grand Capital.
может есть готовый скрипт закрытия MT4 для опционов?

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

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

Премного извиняюсь, может это уже мелькало тут(ветка огромная для прочтения) - подскажите кусочек кода на запрет торговли в пятницу с 22:00 по понедельник 06:00 например 

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
39 минут назад, tim.bort сказал:

Премного извиняюсь, может это уже мелькало тут(ветка огромная для прочтения) - подскажите кусочек кода на запрет торговли в пятницу с 22:00 по понедельник 06:00 например 

 

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

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

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

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

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

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

Войти

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

Войти

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


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

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