Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1249

 

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

Возникла необходимость адаптировать один  из стандартных индикаторов, которые висят в терминале. Не смог найти как получить доступ к их коду и где они вообще лежат?

 
Sergey:

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

Возникла необходимость адаптировать один  из стандартных индикаторов, которые висят в терминале. Не смог найти как получить доступ к их коду и где они вообще лежат?

К коду стандартных индикаторов вы доступ не получите. Но есть примеры:

\MQL5\Indicators\Examples\

 
Artyom Trishkin:

К коду стандартных индикаторов вы доступ не получите. Но есть примеры:

\MQL5\Indicators\Examples\

Спасибо за подсказку.

 
Всем привет. Можно ли выбрать в mql5  конкретный период для изучения статистики? Или она ведется исключительно за весь период жизни счета?
 

Подскажите, при установке alert 

Как можно задать, чтобы сигнал по-умолчанию был не alert, а другой, к примеру alert2  ?

В каком файле нужно сделать правку?


 
Vitaly Muzichenko:

Подскажите, при установке alert 

Как можно задать, чтобы сигнал по-умолчанию был не alert, а другой, к примеру alert2  ?

В каком файле нужно сделать правку?


Судя по всему в папке Sounds. Нашел ее, где терминал установлен. НЕ в папке C:\Users\yastremskiiva\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E

И судя по алфавитному порядку переименовать alert2 что бы по алфавиту был более первым чем alert

 
Valeriy Yastremskiy:

Судя по всему в папке Sounds. Нашел ее, где терминал установлен. НЕ в папке C:\Users\yastremskiiva\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E

И судя по алфавитному порядку переименовать alert2 что бы по алфавиту был более первым чем alert

Да, как вариант, но немного не то, что хотелось-бы.

Спасибо!

 

Нужно найти профит последнего закрытого ордера. Написал функцию:

double LastProfitOrder()
{
   int      i;
   int      total  = HistoryDealsTotal();
   ulong    ticket;
   datetime time; 
   long     type;
   string   symbol; 
   ulong    magic; 
   double   profit;
   double   profits = 0;
   datetime times   = 0;
   
   HistorySelect(0, TimeCurrent());
   
   for(i = total - 1; i >= 0; i--)
   {
      ticket = HistoryDealGetTicket(i);
      time   = (datetime)HistoryDealGetInteger(ticket, DEAL_TIME); 
      type   = HistoryDealGetInteger(ticket, DEAL_TYPE);
      symbol = HistoryDealGetString(ticket, DEAL_SYMBOL); 
      magic  = HistoryDealGetInteger(ticket, DEAL_MAGIC); 
      profit = HistoryDealGetDouble(ticket, DEAL_PROFIT); 
         
      if(symbol == Symbol() && magic == Magic)
      {
         if(type == DEAL_TYPE_BUY || type == DEAL_TYPE_SELL)
         {
            if(time > times)
            {
               profits = profit;
               times   = time;
            }
         }
      }
   }
   return(profits);
}

Пока ордера открывались через "портянку" в OnTick() (MqlTick  latestPrice;   MqlTradeRequest request; ... и т.д.), функция работала. Как только ордера начал открывать с помощью #include <Trade\Trade.mqh>, выписав отдельную функцию:

void OpenOrderBuy()
{
   double open = NormalizeDouble(iHigh(NULL, 0,1) + (VO+sp)*_Point, _Digits);
   double sl   = NormalizeDouble(open - SL*_Point, _Digits);
   double tp   = NormalizeDouble(open + TP*_Point, _Digits);
   
   if(!m_trade.BuyStop(GetLots(), open, _Symbol, sl, tp, ORDER_TIME_SPECIFIED, DateExp()))
   {
      Print("Метод BuyStop() потерпел поражение. Код возврата = ", m_trade.ResultRetcode(),
            ". Описание кода: ", m_trade.ResultRetcodeDescription());
   }
   else
   {
      Print("Метод BuyStop() исполнен успешно. Код возврата = ", m_trade.ResultRetcode(),
            " (", m_trade.ResultRetcodeDescription(),")");
   }
}

функция нахождения профита перестала работать (хотя ордера открываются исправно). Возвратил "портянку" - опять заработала. Почему такая ***? В чем разница? В include не нашел ни чего, что выдает профит закрытого ордера. Например в #include <Trade\HistoryOrderInfo.mqh> есть все, но профита ордера не нашел.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...
 
Youri Lazurenko:

Пока ордера открывались через "портянку" в OnTick() (MqlTick  latestPrice;   MqlTradeRequest request; ... и т.д.), функция работала. Как только ордера начал открывать с помощью #include <Trade\Trade.mqh>, выписав отдельную функцию:

Не забывайте устанавливать идентификатор эксперта

   m_trade.SetExpertMagicNumber(InpMagic);
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetExpertMagicNumber
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetExpertMagicNumber
  • www.mql5.com
SetExpertMagicNumber(ulong) - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Спасибо. В mql5 таких лабиринтов на сооружали. Вместо того,чтобы прямо прийти к цели, нужно идти какими-то обходными путями, через кучу ответвлений, тупиков и препятствий.  Язык ради языка.