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

От pavlus777, 1 августа, 2016 в Уголок Программиста

Страница 10 из 12
#226

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

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

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

 

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

#228
21 час назад, 0ll сказал:

спасибо помогло немного дальше :)

#229

Всем добрый день. Может кто помочь? Посмотрел обучающий урок "Как написать советник для 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;
           }
        }
     }

 

 

Изменено 3 октября, 2019 пользователем 0ll

#230

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

  • Добавляем переменную в входных настройках 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 аналогично

#231

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

#232

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

У меня вопосы по 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[] зачем то рассчитывается, а потом никак не используется.

Изменено 13 ноября, 2019 пользователем 0ll

#233

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

#234

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

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

#235

Вопрос решён

 

Изменено 30 декабря, 2019 пользователем MaeMfe

#236

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

#237

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

#238

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

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

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

#239
В 09.04.2020 в 19:19, yasd810 сказал:

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

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

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

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

#240

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

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

 

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

#241

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

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

1.PNG

2.PNG

Изменено 8 мая, 2020 пользователем Ramirez1978

#242

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

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

MARTINGAIL MT5.mq512 скач.

#243

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

Автор#244
17 часов назад, Nox сказал:

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

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

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

https://tlap.io/tag/mql5/

#245
В 02.08.2016 в 23:59, xbms сказал:

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

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

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

#246
В 02.10.2020 в 22:24, Capricorn сказал:

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

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

#247

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

Изменено 21 октября, 2020 пользователем Alex12345

#248

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

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

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

ATR Volume.mq57 скач.

#249
3 часа назад, apologietest сказал:

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

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

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

ATR Volume_1.mq510 скач.

#250

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

Страница 10 из 12

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

Перейти к списку тем
Форум · 2.0.20260627.0025