Что случилось с Trade.mqh ? - страница 2

 
Vladimir Karputov:

А не ВЫ любите линковать папки? Если так - вероятно Вы повредили библиотеку.


А magic присвоенный не узнать никак - потому что раньше никто даже о таком и не спрашивал.

Не повредил.

  1. У меня была копия. Я её восстановил.
  2. У меня есть терминал обособленный. Он последнего билда. Всё так же. Магик не устанавливается.

 

А вот простая проверка проходит на ура...

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

#include <Trade\Trade.mqh>                            // подключаем библиотеку для совершения торговых операций
CTrade                     my_Trade;                  // структура для выполнения торговых операций
#include <Trade\PositionInfo.mqh>                     // подключаем библиотеку для получения информации о позициях
CPositionInfo              my_Position;               // структура для получения информации о позициях

long  magik_num = 123456;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//---
   my_Trade.SetExpertMagicNumber(magik_num);
//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//---
   if(my_Trade.Buy(0.1,Symbol(),NULL,NULL,NULL) &&
      my_Trade.ResultRetcode() == TRADE_RETCODE_DONE)
   {
      Print("Открыт BUY");
      Sleep(10000);
      long ticket = (long)my_Trade.ResultOrder();
      
      if(my_Position.SelectByMagic(Symbol(),magik_num))
      {
         Print("Выбор позиции по магику.");
         if(my_Position.SelectByTicket(ticket))
         {
            Print("Выбор позиции по тикету.");
            if(my_Trade.PositionClose(ticket) && my_Trade.ResultRetcode() == TRADE_RETCODE_DONE) Print("Позиция закрыта.");
            else Print("Ошибка закрытия позиции по тикету.");
         }
         else Print("Ошибка выбора позиции по тикету.");
      }
      else Print("Ошибка выбора позиции по магику.");
   }
   
   ExpertRemove();
}
//+------------------------------------------------------------------+
 
Сергей Таболин:

Не повредил.

  1. У меня была копия. Я её восстановил.
  2. У меня есть терминал обособленный. Он последнего билда. Всё так же. Магик не устанавливается.

Что в Вашем понимании "не устанавливается"? Вы точно разобрались, что у Вас НЕСКОКОЛЬКО объектов CTrade?

Вы точно понимаете, что Вы пытаетесь получить magic ПОСЛЕДНЕГО ТОРГОВОГО ЗАПРОСА, которого при старте в принципе нет?


А проверяется просто: в классе CTrade прописываете лишнюю строчку и видите - всё присваивается и проблема на Вашей стороне. В Вашем коде и возможно поломанной библиотеке благодаря линковке папок.


Ищите в своём коде неисправность - стандартная библиотека работает. Или докажите, что 

   void              SetExpertMagicNumber(const ulong magic)     { m_magic=magic;                       }

не срабатывает.

 
Vladimir Karputov:
Добавлено: сколько объектов класса CTrade Вы используете в своём коде? И что потом сравниваете: данные глобального объекта с объектами из включаемых файлов?

Намёк понял. Сча попробую поправить. Спасибо.

 
Сергей Таболин:

Намёк понял. Сча попробую поправить. Спасибо.

Хорошо, а то я уже выше понатыкивал предложений ...

 
Vladimir Karputov:

Огромное спасибо!

Теперь всё работает )))

Буду дальше "ковырять" свои классы. Нужно кое-что сделать защищённым )))

Причина обращения: