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

Обучение языку MQL5 под MetaTrader 5


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

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

Всем привет, есть здесь темы по интеграции Python в MetaTrader 5 ? 

Есть пару статей только по анализу рынка =( 

НО НИКАКОЙ инфы о том как можно интегрировать торговую стратегию в терминал MetaTrader5 =(

 

Есть идеи ????

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

  • Ответов 296
  • Создано
  • Последний ответ

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

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

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

Здравствуйте, друзья юные программисты! В этой ветке предлагаю обсуждать все возникающие вопросы в процессе освоения тонкостей языка MQL5. В настоящий момент мы записываем цикл уроков по MQL5, пока

Перейти

Уважаемые коллеги, добавлю от себя... По ссылке полный справочник по функциям MQL5, с примерами, который вы можете скачать себе локально. Хорошая штука, рекомендую :) https://yadi.sk/d/BBFYJw_-trnbN

Перейти

Нечеловеческое спасибо за тему >000 ЧИТАЕМ В ПЕРВУЮ ОЧЕРЕДЬ ПОЛНАЯ ДОКУМЕНТАЦИЯ ПО MQL5, ОНЛАЙН, БЕСПЛАТНО И БЕЗ СМС Руководство по интерфейсу // Алгоритимеческий трейдинг на MQL5 // Описание те

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

Всем добрый день. Может кто помочь? Посмотрел обучающий урок "Как написать советник для Metatrader 5" не получается добавить в него что бы он каждый раз при закрытие по SL добавлял определенное количество лотов. И как будет TP возвращался обратно к исходному лоту.

Спойлер

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>

input double   Lot=1;
input int      TakeProfit = 400;
input int      Stoploss   = 600;

int TP;
int SL;

CTrade trader;
bool Invertor;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   TP = TakeProfit;
   SL = Stoploss;

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   double points;

   if(!PositionSelect(_Symbol))
     {
      if(Invertor)
         trader.Buy(Lot);
      else trader.Sell(Lot);
     }
   else
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         points=(SymbolInfoDouble(_Symbol,SYMBOL_BID)-PositionGetDouble(POSITION_PRICE_OPEN))/_Point;
         if(points>=TP)
           {
            trader.PositionClose(_Symbol);
            Invertor=true;
           }

         if(points<=-SL)
           {
            trader.PositionClose(_Symbol);
            Invertor=false;
           }
        }
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         points=(PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_ASK))/_Point;
         if(points>=TP)
           {
            trader.PositionClose(_Symbol);
            Invertor=false;
           }
         if(points<=-SL)
           {
            trader.PositionClose(_Symbol);
            Invertor=true;
           }
        }
     }

 

 

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

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

Чего сложного то? Есть блок закрытия позиций по стопу, так в нем увеличиваете лот. Есть блок закрытия позиций по профиту, в нем ставим лот тот который нам нужен.

  • Добавляем переменную в входных настройках double lo;
	до
int TP;
int SL;
	после
int TP;
int SL;
double lo;
  • В блоке OnInit задаем значение lo
//--- после
   TP = TakeProfit;
   SL = Stoploss;
   lo = Lot;
  • В блоке OnTick меняем Lot на lo
//--- до
   trader.Buy(Lot);
//--- после
   trader.Buy(lo);

с Sell аналогично

  • Добавляем код lo *= 2 и lo = 1 в код
if(points >= TP)
 {
  trader.PositionClose(_Symbol);
  Invertor = true;
  lo *= 2;//увеличиваем лот на сколоко нам нужно
 }

if(points <= -SL)
 {
  trader.PositionClose(_Symbol);
  Invertor = false;
  lo = 1;//востанавливаем лот
 }

для Sell аналогично

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

  • 1 month later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

Здравствуйте! Я взял из Стандартной библиотеки MQL5 шаблон создания "Текстовой метки"(Стандартная библиотека -> 
Панели и диалоги -> CLabel). Подскажите, пожалуйста, как сделать так, чтобы при изменении торгового счета
сделал кое какие расчеты(на основе счета, текущей цены, входных параметров программы) и передал результаты 
в "Текстовую метку"? Такой же вопрос при создании "Кнопки", также, из Стандартной библиотеки, и передачи 
результатов для открытия ордеров при нажатии кнопки. Спасибо!

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

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

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

У меня вопосы по 7 уроку. По функции TradeSignal

Спойлер

void TradeSignal(int Number, string Symbol_, bool Trade, int period,
                 ENUM_APPLIED_PRICE APrice, ENUM_MA_METHOD MaMethod,
                 bool &SignalBuy[], bool &SignalSell[])
{
     if (!Trade)
        return;

     int Size_ = 0;
     int Handle[];
     
     int Recount[], MinBars[];
     double SMA[], dsma1, dsma2;
     
     if (Number+1 > Size_)
     {
         Size_ = Number + 1;
         
         ArrayResize(Handle, Size_);
         ArrayResize(Recount, Size_);
         ArrayResize(MinBars, Size_);
         
         ArrayInitialize(Handle, 0);
         ArrayInitialize(Recount, 0);
         ArrayInitialize(MinBars, 0);
         
         MinBars[Number] = 3*period;
         
         SignalBuy[Number] = false;
         SignalSell[Number] = false;
         
         ArraySetAsSeries(SMA, true);
         
         Handle[Number] = iMA(Symbol_, 0, period, 0, MaMethod, APrice);
         
         if (IsNewBar(Number, Symbol_, 0) || Recount[Number])
         {
             SignalBuy[Number] = false;
             SignalSell[Number] = false;
             
             if (CopyBuffer(Handle[Number], 0, 0, 4, SMA) < 0)
             {
                 Recount[Number] = true;
                 return;
             }
         }
         
         Recount[Number] = false;
         
         dsma1 = NormalizeDouble(SMA[1] - SMA[2], _Digits);
         dsma2 = NormalizeDouble(SMA[2] - SMA[3], _Digits);
         
         if (dsma2 > 0 && dsma1 > 0)
           SignalSell[Number] = true;
           
         if (dsma2 < 0 && dsma1 < 0)
            SignalBuy[Number] = true;
         
     }
}

 


 

Непонятно назначение следующих массивов

 int Recount[], MinBars[];

 

1) Recount[] мы сначала обнуляем при каждом вызове функции, а потом зачем-то идет проверка

if (IsNewBar(Number, Symbol_, 0) || Recount[Number])

Смысл в этом, если Recount[Number] всегда =  0?

 

2)MinBars[] зачем то рассчитывается, а потом никак не используется.

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

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

@Larcher в приведённой Вами функции эти массивы действительно не работают, видимо были взяты из другого кода, где присутствовал цикл - там Recount был-бы уместен.

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

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

Здравствуйте уважаемые программисты MQL5. Задался вопросом о расчете лотности при депо в % риска. Искал информацию на форумах и гуглах. Находил только ответ на MQL4 при помощи функции MarketInfo();  но к сожалению такой функции в MQL5 нет.

Кто сможет поделится опытом и знаниями, как при помочи переменной % риска на депо, и размер стоп лоста рассчитать правильную лотность на форексах. Буду вам очень благодарен.

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

  • 1 month later...
  • 1 month later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

Добрый вечер. Заполнил заявку на получение курса уроков на почту. Прошло уже более 5 часов, ответа нет. Подскажите плиз, каков статус заявки ??? Ящик 121267@mail.ru

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

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

@Logic воспользуйся временной почтой и закажи на нее. Хозяева используют глюковатый сервис justclick.ru. Если курс когда либо заказывал, то повторно заказать его невозможно. Только на на новую почту.

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

  • 1 month later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

Прошу помощи.

Нужен простой скрипт (или советник), который открывает два ордера по разным инструментам одновременно (mql5)

Заранее спасибо!

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

  • 3 weeks later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано
В 09.04.2020 в 19:19, yasd810 сказал:

Прошу помощи.

Нужен простой скрипт (или советник), который открывает два ордера по разным инструментам одновременно (mql5)

Заранее спасибо!

Если сопровождение открытых ордеров не планируется, то проще скрипт

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

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

Приветствую, внимательно изучил урок по созданию информационной панели: http://tlap.com/mql5-infopanel/

Но так и не понял, каким образом в ней обновляется информация, если объекты удаляются только внутри OnDeinit?

 

Как обновляются переменные с данными - понятно. Но каким образом эта информация попадает в свойства объектов? 

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

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

MT5 Expert.zipПриветствую! Недавно смотрел видео на вашем youtube канале https://www.youtube.com/watch?v=fEuwE6WgYTc  как написать советника по мартингейлу на основе МА MQL5

 Пробую написать иду за автором строка в строку, но при компиляции все равно выдает 2 ошибки , указывает на фигурную скобку С  момента  записи видео и по сегодня в метаэдиторе произошли изменения может как то это связано с ошибками Можете посмотреть код? , Заранее благодарен

1.PNG

2.PNG

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

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

@Ramirez1978 @Ramirez1978  Ошибку исправил, но не уверен, что советник будет работать - код плохо структуирован, много вложенных условий. В таком коде легко пропустить логическую ошибку.

Советую хотя-бы открытие ордера вынести в отдельную функцию.

MARTINGAIL MT5.mq5

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

  • 1 month later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано
17 часов назад, Nox сказал:

Что то я так и не дождался на почту ссылок на уроки MQ5.

Напишите на mail@tlap.com 

Ну или просто смотрите по тэгу:

https://tlap.com/tag/mql5/

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

  • 3 months later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано
В 02.08.2016 в 23:59, xbms сказал:

Уважаемые коллеги, добавлю от себя...
По ссылке полный справочник по функциям MQL5, с примерами, который вы можете скачать себе локально.
Хорошая штука, рекомендую :)

https://yadi.sk/d/BBFYJw_-trnbN

Сергей, ссылка уже не рабочая, можно еще раз выложить материал?! 

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

Обучение языку MQL5 под MetaTrader 5 Опубликовано
В 02.10.2020 в 22:24, Capricorn сказал:

Сергей, ссылка уже не рабочая, можно еще раз выложить материал?! 

Добрый день! Плз.обновите ссылку, так как не работает. Заранее благодарен!

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

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

Добрый день! Может у кого есть модуль или кто может написать модуль на mql5 для открытия 2 ордеров одновременно в одном направлении (2 ордера для хеджинга или 1 с частичным закрытием для нетинга) с выставлением стоп лоса по этим двум позициям и перевод в безубыток при срабатывании тейк-профита первого ордера и тралом 2 ордера. Заранее спасибо. 

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

  • 3 months later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

Коллеги, все доброго дня и крепкого здравия!
У меня еще очень мало опыта.
Пока только учусь.
Написал индикатор АТR.
Принцип работы следующий.
1. Измеряем величину движения цены от дневного максимума до дневного минимума за каждый из последних пяти дней.
2. Находим среднее арифметическое.
3. Измеряем в текущем дне движение от максимума до минимума и вычисляем процент от среднего арифметического.

Проблема в том, что при измерении вручную получаю одни величины, а индикатор дает немного другие.
Не могу понять где ошибка.
Прошу помощи у мэтров программирования.
Индикатор и скрин прилагаю.
 

Несоответствие показаний.jpg

ATR Volume.mq5

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

Обучение языку MQL5 под MetaTrader 5 Опубликовано
3 часа назад, apologietest сказал:

Написал индикатор АТR.

глобально в логике нет ошибок.
Я убрал преобразование из double в int на каждом шаге- возможно у Вас там накапливается ошибка расчета...
На рассчитывать среднее значение на каждом тике.. это, мягко говоря, мазохизм...
Добавьте проверку хотя бы на каждой свече.. И то- это будет не оптимально..

Далее... для получения исторических данных в mql5 есть такая штука, как  CopyRates();
Как минимум- это работает быстрее, чем цикл...
А если уже заморачиваться с усреднением, то смотрите в сторону встроенных классов стандартных индикаторов..
Но это совсем на любителя :)

ATR Volume_1.mq5

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

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

Благодарю за подсказку!
Но у меня ничего не получилось. Оставил как есть.
Посмотрел, что один-два %% на погоду не влияют. ))

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

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

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

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

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

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

Войти

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

Войти

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


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

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