Обсуждение статьи "Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы" - страница 2

 
tol64:
Нет. Если делать так, как Вы советуете, то последний символ не будет проверен, поэтому нужно оставить так, как есть. 
Я удалил свой предыдущий пост, т.к. потом обнаружил что было правильное сравнение < а не <=.
 
"Функции для инициализации массивов расположим в подключаемом файле InitArrays.mqh." По моему здесь ошибка и файл называется "InitializeArrays.mqh".
 
Почему данный эксперт не работает на Альпари? Не открывается сделки. Где может быть проблема?
 
Так же на Алпари не работает эксперт TestIndicatorConditions.
 
Нашел ответ, должен быть добавлен: symb.execution_mode==SYMBOL_TRADE_EXECUTION_EXCHANGE
 
//+------------------------------------------------------------------+
//| Рассчитывает уровень Trailing Stop                               |
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Переменные для расчетов
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Значение Low для Buy
   double    sell_point  =high[symbol_number].value[1]; // Значение High для Sell

Не будет корректно так делать. Если позиция и цена барa открывается с гепом, то StopLoss будет не правильно выставляться.

 

Подскажите а в каком месте здесь происходит переворот позиции, как описывает автор? Вот его код с описанием 

//--- Если позиция есть
   else
     {
      //--- Получим тип позиции
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Если позиция противоположна сигналу и включен переворот позиции
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Получим объем позиции
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Скорректируем объем
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Перевернем позицию
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

смотрим функцию  OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);

//+------------------------------------------------------------------+
//| Открывает позицию                                                |
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Установим номер мэджика в торговую структуру
   trade.SetExpertMagicNumber(MagicNumber);
//--- Установим размер проскальзывания в пунктах
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Режим Instant Execution и Market Execution
//    *** Начиная с 803 билда, уровни Stop Loss и Take Profit ***
//    *** можно устанавливать при открытии позиции в режиме SYMBOL_TRADE_EXECUTION_MARKET ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Если позиция не открылась, вывести сообщение об этом
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Ошибка при открытии позиции: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
Здесь ведь просто локк! Нет никакого разворота.. тоже самое с наращиванием лота! Можете обьяснить, может я не прав?
 
Tango_X:

Подскажите а в каком месте здесь происходит переворот позиции, как описывает автор? Вот его код с описанием 

смотрим функцию  OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);

Здесь ведь просто локк! Нет никакого разворота.. тоже самое с наращиванием лота! Можете обьяснить, может я не прав

Есть два типа торговых счетов: неттинг и хэдж. 

 БылоДействие Стало на НеттингеСтало на Хедж
 Buy 1.0 Sell 2.0 Sell 1.0 Buy 1.0 и Sell 2.0
 
Vladimir Karputov:

Есть два типа торговых счетов: неттинг и хэдж. 

 БылоДействие Стало на НеттингеСтало на Хедж
 Buy 1.0 Sell 2.0 Sell 1.0 Buy 1.0 и Sell 2.0

Понял! Спасибо!